func registerDomain()

in tui/post_processors.go [170:244]


func registerDomain(consent string, q *Queue) tea.Cmd {
	return func() tea.Msg {
		userMsg := "There was a problem registering the domain."
		c := strings.ToLower(consent)
		if c != "y" && c != "yes" {
			q.stack.DeleteSetting("domain_consent")
			return errMsg{
				usermsg: userMsg,
				err:     fmt.Errorf("did not consent to being charged"),
				target:  "quit",
			}
		}

		d := gcloud.ContactData{}

		contact := q.Get("contact")

		if contact != nil {
			tmp := contact.(gcloud.ContactData)
			if tmp.AllContacts.Email != "" {
				d = tmp
			}
		}
		if d.AllContacts.Email == "" {
			d = gcloud.ContactData{
				AllContacts: gcloud.DomainRegistrarContact{
					Email: q.stack.GetSetting("domain_email"),
					Phone: q.stack.GetSetting("domain_phone"),
					PostalAddress: gcloud.PostalAddress{
						RegionCode: q.stack.GetSetting(
							"domain_country",
						),
						PostalCode: q.stack.GetSetting(
							"domain_postalcode",
						),
						AdministrativeArea: q.stack.GetSetting("domain_state"),
						Locality:           q.stack.GetSetting("domain_city"),
						AddressLines: []string{
							q.stack.GetSetting("domain_address"),
						},
						Recipients: []string{
							q.stack.GetSetting("domain_name"),
						},
					},
				},
			}
		}

		q.Save("contact", d)

		raw := q.Get("domainInfo")
		domainInfo := raw.(*domainspb.RegisterParameters)

		projectID := q.Get("currentProject").(string)

		err := q.client.DomainRegister(projectID, domainInfo, d)
		if err != nil {
			q.stack.AddSetting("domain_consent", "")
			return errMsg{
				usermsg: userMsg,
				err:     fmt.Errorf("registerDomain: error registering domain: %w", err),
				target:  "domain",
			}
		}

		domainSettings := q.stack.Settings.Search("domain_")

		for _, v := range domainSettings {
			q.stack.DeleteSetting(v.Name)

		}

		return successMsg{}
	}
}