diff --git a/apps/ui/src/routes/databases/[id]/_Databases/_Databases.svelte b/apps/ui/src/routes/databases/[id]/_Databases/_Databases.svelte index b3601a9e9..02c98e150 100644 --- a/apps/ui/src/routes/databases/[id]/_Databases/_Databases.svelte +++ b/apps/ui/src/routes/databases/[id]/_Databases/_Databases.svelte @@ -21,9 +21,11 @@ const { id } = $page.params; - let loading = false; - let publicLoading = false; - + let loading = { + main: false, + public: false + }; + let publicUrl = ''; let appendOnly = database.settings.appendOnly; let databaseDefault: any; @@ -47,23 +49,46 @@ databaseDbUser = ''; } } - function generateUrl(): string { - return `${database.type}://${ - databaseDbUser ? databaseDbUser + ':' : '' - }${databaseDbUserPassword}@${ - $status.database.isPublic - ? database.destinationDocker.remoteEngine - ? database.destinationDocker.remoteIpAddress - : $appSession.ipv4 - : database.id - }:${$status.database.isPublic ? database.publicPort : privatePort}/${databaseDefault}`; + function generateUrl() { + const ipAddress = () => { + if ($status.database.isPublic) { + if (database.destinationDocker.remoteEngine) { + return database.destinationDocker.remoteIpAddress; + } + if ($appSession.ipv6) { + return $appSession.ipv6; + } + if ($appSession.ipv4) { + return $appSession.ipv4; + } + return ''; + } else { + return database.id; + } + }; + const user = () => { + if (databaseDbUser) { + return databaseDbUser + ':'; + } + return ''; + }; + const port = () => { + if ($status.database.isPublic) { + return database.publicPort; + } else { + return privatePort; + } + }; + publicUrl = `${ + database.type + }://${user()}${databaseDbUserPassword}@${ipAddress()}:${port()}/${databaseDefault}`; } async function changeSettings(name: any) { if (name !== 'appendOnly') { - if (publicLoading || !$status.database.isRunning) return; + if (loading.public || !$status.database.isRunning) return; } - publicLoading = true; + loading.public = true; let data = { isPublic: $status.database.isPublic, appendOnly @@ -87,12 +112,12 @@ } catch (error) { return errorNotification(error); } finally { - publicLoading = false; + loading.public = false; } } async function handleSubmit() { try { - loading = true; + loading.main = true; await post(`/databases/${id}`, { ...database, isRunning: $status.database.isRunning }); generateDbDetails(); addToast({ @@ -102,7 +127,7 @@ } catch (error) { return errorNotification(error); } finally { - loading = false; + loading.main = false; } } @@ -115,9 +140,9 @@ {$t('forms.save')} {/if} @@ -175,7 +200,7 @@ readonly disabled name="publicPort" - value={publicLoading + value={loading.public ? 'Loading...' : $status.database.isPublic ? database.publicPort @@ -198,8 +223,8 @@ {/if}
-
-
- + {#if publicUrl} + + {/if}
@@ -228,7 +256,7 @@
changeSettings('isPublic')} title={$t('database.set_public')} @@ -238,7 +266,7 @@ {#if database.type === 'redis'} changeSettings('appendOnly')} title={$t('database.change_append_only_mode')}