Explorar o código

Fix bug where users were seeing updates to custom domain url before they were deployed (#3213)

Feroze Mohideen %!s(int64=2) %!d(string=hai) anos
pai
achega
eba9b55baf

+ 14 - 5
dashboard/src/main/home/app-dashboard/new-app-flow/WebTabs.tsx

@@ -16,7 +16,7 @@ interface Props {
 const RESOURCE_HEIGHT_WITHOUT_AUTOSCALING = 373;
 const RESOURCE_HEIGHT_WITH_AUTOSCALING = 713;
 const NETWORKING_HEIGHT_WITHOUT_INGRESS = 204;
-const NETWORKING_HEIGHT_WITH_INGRESS = 353;
+const NETWORKING_HEIGHT_WITH_INGRESS = 333;
 const ADVANCED_BASE_HEIGHT = 215;
 const PROBE_INPUTS_HEIGHT = 230;
 
@@ -114,15 +114,15 @@ const WebTabs: React.FC<Props> = ({
               </>
             }
             placeholder="ex: my-app.my-domain.com"
-            value={service.ingress.hosts.value}
-            disabled={service.ingress.hosts.readOnly}
+            value={service.ingress.customDomain.value}
+            disabled={service.ingress.customDomain.readOnly}
             width="300px"
             setValue={(e) => {
               editService({
                 ...service,
                 ingress: {
                   ...service.ingress,
-                  hosts: { readOnly: false, value: e },
+                  customDomain: { readOnly: false, value: e },
                 },
               });
             }}
@@ -696,10 +696,19 @@ const WebTabs: React.FC<Props> = ({
           </a>
         </Text>
       )
+    } else if (service.ingress.customDomain.value !== "") {
+      return (
+        <Text color="helper">Application URL: Your application will be available at{" "}
+          <a href={Service.prefixSubdomain(service.ingress.customDomain.value)} target="_blank">
+            {service.ingress.customDomain.value}
+          </a>
+          {" "}on next deploy.
+        </Text>
+      )
     } else {
       return (
         <Text color="helper">
-          Application URL: Not generated yet. If no custom domain is provided, Porter will generate a URL for you on next deploy.
+          Application URL: Not generated yet. Porter will generate a URL for you on next deploy.
         </Text>
       )
     }

+ 5 - 2
dashboard/src/main/home/app-dashboard/new-app-flow/serviceTypes.ts

@@ -16,6 +16,7 @@ type ServiceBoolean = {
 }
 type Ingress = {
     enabled: ServiceBoolean;
+    customDomain: ServiceString;
     hosts: ServiceString;
     porterHosts: ServiceString;
 }
@@ -161,6 +162,7 @@ const WebService = {
         },
         ingress: {
             enabled: ServiceField.boolean(true, porterJson?.apps?.[name]?.config?.ingress?.enabled),
+            customDomain: ServiceField.string('', porterJson?.apps?.[name]?.config?.ingress?.hosts?.length ? porterJson?.apps?.[name]?.config?.ingress?.hosts[0] : undefined),
             hosts: ServiceField.string('', porterJson?.apps?.[name]?.config?.ingress?.hosts?.length ? porterJson?.apps?.[name]?.config?.ingress?.hosts[0] : undefined),
             porterHosts: ServiceField.string('', porterJson?.apps?.[name]?.config?.ingress?.porter_hosts?.length ? porterJson?.apps?.[name]?.config?.ingress?.porter_hosts[0] : undefined),
         },
@@ -212,8 +214,8 @@ const WebService = {
             },
             ingress: {
                 enabled: service.ingress.enabled.value,
-                hosts: service.ingress.hosts.value ? [service.ingress.hosts.value] : [],
-                custom_domain: service.ingress.hosts.value ? true : false,
+                custom_domain: service.ingress.customDomain.value ? true : false,
+                hosts: service.ingress.customDomain.value ? [service.ingress.customDomain.value] : [],
                 porter_hosts: service.ingress.porterHosts.value ? [service.ingress.porterHosts.value] : [],
             },
             health: {
@@ -255,6 +257,7 @@ const WebService = {
             },
             ingress: {
                 enabled: ServiceField.boolean(values.ingress?.enabled ?? false, porterJson?.apps?.[name]?.config?.ingress?.enabled),
+                customDomain: ServiceField.string(values.ingress?.hosts?.length ? values.ingress.hosts[0] : '', porterJson?.apps?.[name]?.config?.ingress?.hosts?.length ? porterJson?.apps?.[name]?.config?.ingress?.hosts[0] : undefined),
                 hosts: ServiceField.string(values.ingress?.hosts?.length ? values.ingress.hosts[0] : '', porterJson?.apps?.[name]?.config?.ingress?.hosts?.length ? porterJson?.apps?.[name]?.config?.ingress?.hosts[0] : undefined),
                 porterHosts: ServiceField.string(values.ingress?.porter_hosts?.length ? values.ingress.porter_hosts[0] : '', porterJson?.apps?.[name]?.config?.ingress?.porter_hosts?.length ? porterJson?.apps?.[name]?.config?.ingress?.porter_hosts[0] : undefined),
             },