{userState.user?.username}

{#snippet trigger(props)} {/snippet} {#snippet title()} Generate API Key {/snippet} {#snippet content()} {#if key == ''}
{ e.preventDefault(); const form = e.target as HTMLFormElement; const formData = new FormData(form); try { const response = await UserClient.getAPIKey({ password: formData.get('password')?.toString(), confirmPassword: formData.get('confirm-password')?.toString() }); if (response.key) { key = response.key; form.reset(); } } catch (err) { const error = ConnectError.from(err); toast.error(error.rawMessage); } }} >
{:else}
{key}
{/if} {/snippet}
{#snippet trigger(props)} {/snippet} {#snippet title()} Change Profile Picture {/snippet} {#snippet content()}
{ e.preventDefault(); const form = e.target as HTMLFormElement; let fileInput = document.getElementById('file') as HTMLInputElement; let file = fileInput.files?.[0]; if (!file) { toast.error('No file selected'); return; } const data = await file.bytes(); try { const response = await UserClient.updateProfilePicture({ fileName: file.name, data: data }); if (response.user) { toast.success('Profile picture updated'); form.reset(); openChangeProfilePicture = false; userState.user = response.user; } } catch (err) { const error = ConnectError.from(err); toast.error(error.rawMessage); } }} >
{/snippet}
{ e.preventDefault(); const form = e.target as HTMLFormElement; const formData = new FormData(form); try { await UserClient.updatePassword({ oldPassword: formData.get('old-password')?.toString(), newPassword: formData.get('new-password')?.toString(), confirmPassword: formData.get('confirm-password')?.toString() }); toast.success('password updated successfully'); form.reset(); } catch (err) { const error = ConnectError.from(err); toast.error(error.rawMessage); } }} class="bg-mantle border-surface-0 rounded border p-4 drop-shadow-md" >