From ea04354e3c08a899c80164998d54067619aa7108 Mon Sep 17 00:00:00 2001 From: Wim Brand Date: Tue, 19 Oct 2021 15:59:22 +0200 Subject: [PATCH] Add user delete button --- svelte/src/user_home/AccountSettings.svelte | 38 +++++++++++++++++++++ svelte/src/util/Form.svelte | 8 ++--- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/svelte/src/user_home/AccountSettings.svelte b/svelte/src/user_home/AccountSettings.svelte index 1231073..3af5bcc 100644 --- a/svelte/src/user_home/AccountSettings.svelte +++ b/svelte/src/user_home/AccountSettings.svelte @@ -102,6 +102,39 @@ let name_change = { return {success: true, message: "Success! You are now known as "+fields.new_username} }, } + + +let delete_account = { + name: "delete_account", + fields: [ + { + name: "description", + label: "Description", + type: "description", + description: `When you delete your pixeldrain account you will be + logged out on all of your devices. Your account will be + scheduled for deletion in seven days. If you log back in to your + account during those seven days the deletion will be canceled. +

+ If you have an active Pro subscription you need to end that + separately through your Patreon account. Deleting your + pixeldrain account will not cancel the subscription.`, + }, + ], + submit_red: true, + submit_label: `delete Delete`, + on_submit: async fields => { + const resp = await fetch( + window.api_endpoint+"/user", + { method: "DELETE" } + ); + if(resp.status >= 400) { + return {error_json: await resp.json()} + } + setTimeout(() => { window.location = "/" }, 6000) + return {success: true, message: "Success! Your account has been scheduled for deletion in 7 days"} + }, +}
@@ -120,6 +153,11 @@ let name_change = {
+ +

Delete account

+
+
+
diff --git a/svelte/src/util/Form.svelte b/svelte/src/util/Form.svelte index 173020c..fb23c86 100644 --- a/svelte/src/util/Form.svelte +++ b/svelte/src/util/Form.svelte @@ -47,6 +47,8 @@ let submit = async (event) => { } else { field_values[field.name] = field.binding } + } else if (field.type === "description") { + field_values[field.name] = "" } else { field_values[field.name] = field.binding.value } @@ -143,7 +145,7 @@ let handle_errors = (response) => { style="width: 100%; height: 10em; resize: vertical;" >{field.default_value} - {:else} + {:else if field.type !== "description"} {field.label} {#if field.type === "text"} @@ -205,8 +207,6 @@ let handle_errors = (response) => { checked={val === field.default_value}/>
{/each} - {:else if field.type === "description"} - {field.default_value} {/if} {/if} @@ -214,7 +214,7 @@ let handle_errors = (response) => { {#if field.description} - {field.description} + {@html field.description} {/if}