From 3c85dead6e5cd08029ea1955d69b1b4f340083d8 Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 28 Jul 2022 14:17:14 +0200 Subject: [PATCH] refactor: user preferences --- .../[project]/users/user/[user]/index.svelte | 152 +++++++----------- 1 file changed, 62 insertions(+), 90 deletions(-) diff --git a/src/routes/console/[project]/users/user/[user]/index.svelte b/src/routes/console/[project]/users/user/[user]/index.svelte index 40c79db66..bd4aba885 100644 --- a/src/routes/console/[project]/users/user/[user]/index.svelte +++ b/src/routes/console/[project]/users/user/[user]/index.svelte @@ -18,11 +18,13 @@ import { user } from './store'; import { onMount } from 'svelte'; - $: if (newKey && newValue) { - arePrefsDisabled = false; - } else if (prefs) { + $: if (prefs) { if (JSON.stringify(prefs) !== JSON.stringify(Object.entries($user.prefs))) { - arePrefsDisabled = false; + if (prefs[prefs.length - 1][0] && prefs[prefs.length - 1][1]) { + arePrefsDisabled = false; + } + } else { + arePrefsDisabled = true; } } let showDelete = false; @@ -32,17 +34,17 @@ let userName: string = null, userEmail: string = null, userPhone: string = null, - newPassword: string = null, - newPref = false, - newKey: string = null, - newValue: string = null; - let showVerifcationDropdown = false; + newPassword: string = null; let prefs: [string, unknown][] = null; let arePrefsDisabled = true; + let showVerifcationDropdown = false; onMount(async () => { await user.load($page.params.user); prefs = Object.entries($user.prefs); + if (!prefs?.length) { + prefs.push(['', '']); + } userName ??= $user.name; userEmail ??= $user.email; userPhone ??= $user.phone; @@ -161,13 +163,7 @@ async function updatePrefs() { try { let updatedPrefs = Object.fromEntries(prefs); - if (newKey && newValue) { - updatedPrefs[newKey] = newValue; - prefs = Object.entries(updatedPrefs); - newKey = null; - newValue = null; - } - newPref = null; + await sdkForProject.users.updatePrefs($user.$id, updatedPrefs); $user.prefs = updatedPrefs; arePrefsDisabled = true; @@ -183,30 +179,6 @@ }); } } - - async function deletePref(selectedKey: string) { - try { - let updatedPrefs = Object.fromEntries(prefs); - updatedPrefs = Object.keys(updatedPrefs).reduce((acc, key) => { - if (key !== selectedKey) { - acc[key] = updatedPrefs[key]; - } - return acc; - }, {}); - await sdkForProject.users.updatePrefs($user.$id, updatedPrefs); - prefs = Object.entries(updatedPrefs); - $user.prefs = updatedPrefs; - addNotification({ - message: 'Preferences have been updated', - type: 'success' - }); - } catch (error) { - addNotification({ - message: error.message, - type: 'error' - }); - } - } {#if $user} @@ -217,17 +189,34 @@
{$user.name}
{#if !$user.status} blocked + {:else if $user.email && $user.phone} + + {$user.emailVerification && $user.phoneVerification + ? 'verified' + : $user.emailVerification + ? 'verified email' + : $user.phoneVerification + ? 'verified phone' + : 'unverified'} + {:else} - {$user.emailVerification || $user.phoneVerification - ? 'verified' + {$user.emailVerification + ? 'verified ' + : $user.phoneVerification + ? 'verified ' : 'unverified'} {/if}
- {$user.email} + {#if $user.email} +

{$user.email}

+ {/if} + {#if $user.phone} +

{$user.phone}

+ {/if}

Joined: {toLocaleDateTime($user.registration)}

@@ -237,7 +226,7 @@ text={$user.status} secondary={!$user.status} on:click={() => updateStatus()} - >{$user.status ? 'Block Account' : 'Unblock Accout'} + >{$user.status ? 'Block account' : 'Unblock account'} {#if $user.status} {#if $user.phone && $user.email} (showVerifcationDropdown = !showVerifcationDropdown)}> - {$user.emailVerification ? 'Unverify' : 'Verify'} Account + {$user.emailVerification ? 'Unverify' : 'Verify'} account updateVerificationEmail()} @@ -263,11 +252,11 @@ {:else if !$user.phone} {:else if !$user.email} {/if} {/if} @@ -387,76 +376,59 @@
- + Add Preference