Bladeren bron

Add loading to provider selector

jnfrati 3 jaren geleden
bovenliggende
commit
eb54a153e9
1 gewijzigde bestanden met toevoegingen van 44 en 30 verwijderingen
  1. 44 30
      dashboard/src/components/repo-selector/RepoList.tsx

+ 44 - 30
dashboard/src/components/repo-selector/RepoList.tsx

@@ -314,37 +314,51 @@ const ProviderSelector = (props: {
   useOutsideAlerter(wrapperRef, () => {
     setIsOpen(false);
   });
+
+  if (!currentValue) {
+    return (
+      <ProviderSelectorStyles.Wrapper>
+        <Loading />
+      </ProviderSelectorStyles.Wrapper>
+    );
+  }
+
   return (
-    <ProviderSelectorStyles.Wrapper ref={wrapperRef} isOpen={isOpen}>
-      <ProviderSelectorStyles.Icon className={icon} />
-      <ProviderSelectorStyles.Button onClick={() => setIsOpen((prev) => !prev)}>
-        {currentValue?.name || currentValue?.instance_url}
-      </ProviderSelectorStyles.Button>
-      <i className="material-icons">arrow_drop_down</i>
-      {isOpen ? (
-        <>
-          <ProviderSelectorStyles.OptionWrapper>
-            {values.map((provider) => {
-              return (
-                <ProviderSelectorStyles.Option
-                  onClick={() => {
-                    setIsOpen(false);
-                    onChange(provider);
-                  }}
-                >
-                  <ProviderSelectorStyles.Icon
-                    className={`devicon-${provider?.provider}-plain colored`}
-                  />
-                  <ProviderSelectorStyles.Text>
-                    {provider?.name || provider?.instance_url}
-                  </ProviderSelectorStyles.Text>
-                </ProviderSelectorStyles.Option>
-              );
-            })}
-          </ProviderSelectorStyles.OptionWrapper>
-        </>
-      ) : null}
-    </ProviderSelectorStyles.Wrapper>
+    <>
+      <ProviderSelectorStyles.Wrapper ref={wrapperRef} isOpen={isOpen}>
+        <ProviderSelectorStyles.Icon className={icon} />
+
+        <ProviderSelectorStyles.Button
+          onClick={() => setIsOpen((prev) => !prev)}
+        >
+          {currentValue?.name || currentValue?.instance_url}
+        </ProviderSelectorStyles.Button>
+        <i className="material-icons">arrow_drop_down</i>
+        {isOpen ? (
+          <>
+            <ProviderSelectorStyles.OptionWrapper>
+              {values.map((provider) => {
+                return (
+                  <ProviderSelectorStyles.Option
+                    onClick={() => {
+                      setIsOpen(false);
+                      onChange(provider);
+                    }}
+                  >
+                    <ProviderSelectorStyles.Icon
+                      className={`devicon-${provider?.provider}-plain colored`}
+                    />
+                    <ProviderSelectorStyles.Text>
+                      {provider?.name || provider?.instance_url}
+                    </ProviderSelectorStyles.Text>
+                  </ProviderSelectorStyles.Option>
+                );
+              })}
+            </ProviderSelectorStyles.OptionWrapper>
+          </>
+        ) : null}
+      </ProviderSelectorStyles.Wrapper>
+    </>
   );
 };