fix: do not show nope as ip address for dbs

This commit is contained in:
Andras Bacsai 2022-10-10 15:28:02 +02:00
parent d46ee049f4
commit f07868d24e

View File

@ -21,9 +21,11 @@
const { id } = $page.params; const { id } = $page.params;
let loading = false; let loading = {
let publicLoading = false; main: false,
public: false
};
let publicUrl = '';
let appendOnly = database.settings.appendOnly; let appendOnly = database.settings.appendOnly;
let databaseDefault: any; let databaseDefault: any;
@ -47,23 +49,46 @@
databaseDbUser = ''; databaseDbUser = '';
} }
} }
function generateUrl(): string { function generateUrl() {
return `${database.type}://${ const ipAddress = () => {
databaseDbUser ? databaseDbUser + ':' : '' if ($status.database.isPublic) {
}${databaseDbUserPassword}@${ if (database.destinationDocker.remoteEngine) {
$status.database.isPublic return database.destinationDocker.remoteIpAddress;
? database.destinationDocker.remoteEngine }
? database.destinationDocker.remoteIpAddress if ($appSession.ipv6) {
: $appSession.ipv4 return $appSession.ipv6;
: database.id }
}:${$status.database.isPublic ? database.publicPort : privatePort}/${databaseDefault}`; if ($appSession.ipv4) {
return $appSession.ipv4;
}
return '<Cannot determine public IP address>';
} 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) { async function changeSettings(name: any) {
if (name !== 'appendOnly') { if (name !== 'appendOnly') {
if (publicLoading || !$status.database.isRunning) return; if (loading.public || !$status.database.isRunning) return;
} }
publicLoading = true; loading.public = true;
let data = { let data = {
isPublic: $status.database.isPublic, isPublic: $status.database.isPublic,
appendOnly appendOnly
@ -87,12 +112,12 @@
} catch (error) { } catch (error) {
return errorNotification(error); return errorNotification(error);
} finally { } finally {
publicLoading = false; loading.public = false;
} }
} }
async function handleSubmit() { async function handleSubmit() {
try { try {
loading = true; loading.main = true;
await post(`/databases/${id}`, { ...database, isRunning: $status.database.isRunning }); await post(`/databases/${id}`, { ...database, isRunning: $status.database.isRunning });
generateDbDetails(); generateDbDetails();
addToast({ addToast({
@ -102,7 +127,7 @@
} catch (error) { } catch (error) {
return errorNotification(error); return errorNotification(error);
} finally { } finally {
loading = false; loading.main = false;
} }
} }
</script> </script>
@ -115,9 +140,9 @@
<button <button
type="submit" type="submit"
class="btn btn-sm" class="btn btn-sm"
class:loading class:loading={loading.main}
class:bg-databases={!loading} class:bg-databases={!loading.main}
disabled={loading}>{$t('forms.save')}</button disabled={loading.main}>{$t('forms.save')}</button
> >
{/if} {/if}
</div> </div>
@ -175,7 +200,7 @@
readonly readonly
disabled disabled
name="publicPort" name="publicPort"
value={publicLoading value={loading.public
? 'Loading...' ? 'Loading...'
: $status.database.isPublic : $status.database.isPublic
? database.publicPort ? database.publicPort
@ -198,8 +223,8 @@
<EdgeDB {database} /> <EdgeDB {database} />
{/if} {/if}
<div class="flex flex-col space-y-2 mt-5"> <div class="flex flex-col space-y-2 mt-5">
<div> <div class="grid gap-2 grid-cols-2 auto-rows-max lg:px-10 px-2">
<label class="px-2" for="url" <label for="url"
>{$t('database.connection_string')} >{$t('database.connection_string')}
{#if !$status.database.isPublic && database.destinationDocker.remoteEngine} {#if !$status.database.isPublic && database.destinationDocker.remoteEngine}
<Explainer <Explainer
@ -207,18 +232,21 @@
/> />
{/if}</label {/if}</label
> >
<button class="btn btn-sm" on:click|preventDefault={generateUrl}
>Show Connection String</button
>
</div> </div>
<div class="lg:px-10 px-2"> <div class="lg:px-10 px-2">
<CopyPasswordField {#if publicUrl}
textarea={true} <CopyPasswordField
placeholder={$t('forms.generated_automatically_after_start')} placeholder="Click on the button to generate URL"
isPasswordField={false} id="url"
id="url" name="url"
name="url" readonly
readonly disabled
disabled value={loading.public ? 'Loading...' : publicUrl}
value={publicLoading || loading ? 'Loading...' : generateUrl()} />
/> {/if}
</div> </div>
</div> </div>
</form> </form>
@ -228,7 +256,7 @@
<div class="grid gap-2 grid-cols-2 auto-rows-max lg:px-10 px-2"> <div class="grid gap-2 grid-cols-2 auto-rows-max lg:px-10 px-2">
<Setting <Setting
id="isPublic" id="isPublic"
loading={publicLoading} loading={loading.public}
bind:setting={$status.database.isPublic} bind:setting={$status.database.isPublic}
on:click={() => changeSettings('isPublic')} on:click={() => changeSettings('isPublic')}
title={$t('database.set_public')} title={$t('database.set_public')}
@ -238,7 +266,7 @@
{#if database.type === 'redis'} {#if database.type === 'redis'}
<Setting <Setting
id="appendOnly" id="appendOnly"
loading={publicLoading} loading={loading.public}
bind:setting={appendOnly} bind:setting={appendOnly}
on:click={() => changeSettings('appendOnly')} on:click={() => changeSettings('appendOnly')}
title={$t('database.change_append_only_mode')} title={$t('database.change_append_only_mode')}