feat: add snapshot to /edit/profile and /edit/member/:id
This commit is contained in:
parent
3442f7a518
commit
c866cbb939
2 changed files with 105 additions and 2 deletions
|
@ -36,7 +36,7 @@
|
||||||
import EditableName from "../../EditableName.svelte";
|
import EditableName from "../../EditableName.svelte";
|
||||||
import EditablePronouns from "../../EditablePronouns.svelte";
|
import EditablePronouns from "../../EditablePronouns.svelte";
|
||||||
import ErrorAlert from "$lib/components/ErrorAlert.svelte";
|
import ErrorAlert from "$lib/components/ErrorAlert.svelte";
|
||||||
import type { PageData } from "./$types";
|
import type { PageData, Snapshot } from "./$types";
|
||||||
import { addToast, delToast } from "$lib/toast";
|
import { addToast, delToast } from "$lib/toast";
|
||||||
import { memberNameRegex } from "$lib/api/regex";
|
import { memberNameRegex } from "$lib/api/regex";
|
||||||
import { charCount, renderMarkdown } from "$lib/utils";
|
import { charCount, renderMarkdown } from "$lib/utils";
|
||||||
|
@ -372,6 +372,56 @@
|
||||||
const toggleDeleteOpen = () => (deleteOpen = !deleteOpen);
|
const toggleDeleteOpen = () => (deleteOpen = !deleteOpen);
|
||||||
let deleteName = "";
|
let deleteName = "";
|
||||||
let deleteError: APIError | null = null;
|
let deleteError: APIError | null = null;
|
||||||
|
|
||||||
|
interface SnapshotData {
|
||||||
|
bio: string;
|
||||||
|
name: string;
|
||||||
|
display_name: string;
|
||||||
|
links: string[];
|
||||||
|
names: FieldEntry[];
|
||||||
|
pronouns: Pronoun[];
|
||||||
|
fields: Field[];
|
||||||
|
flags: PrideFlag[];
|
||||||
|
unlisted: boolean;
|
||||||
|
|
||||||
|
avatar: string | null;
|
||||||
|
newName: string;
|
||||||
|
newPronouns: string;
|
||||||
|
newLink: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const snapshot: Snapshot<SnapshotData> = {
|
||||||
|
capture: () => ({
|
||||||
|
bio,
|
||||||
|
name,
|
||||||
|
display_name,
|
||||||
|
links,
|
||||||
|
names,
|
||||||
|
pronouns,
|
||||||
|
fields,
|
||||||
|
flags,
|
||||||
|
unlisted,
|
||||||
|
avatar,
|
||||||
|
newName,
|
||||||
|
newPronouns,
|
||||||
|
newLink,
|
||||||
|
}),
|
||||||
|
restore: (value) => {
|
||||||
|
bio = value.bio
|
||||||
|
name = value.name
|
||||||
|
display_name = value.display_name
|
||||||
|
links = value.links
|
||||||
|
names = value.names
|
||||||
|
pronouns = value.pronouns
|
||||||
|
fields = value.fields
|
||||||
|
flags = value.flags
|
||||||
|
unlisted = value.unlisted
|
||||||
|
avatar = value.avatar
|
||||||
|
newName = value.newName
|
||||||
|
newPronouns = value.newPronouns
|
||||||
|
newLink = value.newLink
|
||||||
|
},
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<svelte:head>
|
<svelte:head>
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
import EditablePronouns from "../EditablePronouns.svelte";
|
import EditablePronouns from "../EditablePronouns.svelte";
|
||||||
import ErrorAlert from "$lib/components/ErrorAlert.svelte";
|
import ErrorAlert from "$lib/components/ErrorAlert.svelte";
|
||||||
import { addToast, delToast } from "$lib/toast";
|
import { addToast, delToast } from "$lib/toast";
|
||||||
import type { PageData } from "./$types";
|
import type { PageData, Snapshot } from "./$types";
|
||||||
import { charCount, renderMarkdown } from "$lib/utils";
|
import { charCount, renderMarkdown } from "$lib/utils";
|
||||||
import MarkdownHelp from "../MarkdownHelp.svelte";
|
import MarkdownHelp from "../MarkdownHelp.svelte";
|
||||||
import prettyBytes from "pretty-bytes";
|
import prettyBytes from "pretty-bytes";
|
||||||
|
@ -378,6 +378,59 @@
|
||||||
delToast(toastId);
|
delToast(toastId);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
interface SnapshotData {
|
||||||
|
bio: string;
|
||||||
|
display_name: string;
|
||||||
|
member_title: string;
|
||||||
|
links: string[];
|
||||||
|
names: FieldEntry[];
|
||||||
|
pronouns: Pronoun[];
|
||||||
|
fields: Field[];
|
||||||
|
flags: PrideFlag[];
|
||||||
|
list_private: boolean;
|
||||||
|
custom_preferences: CustomPreferences;
|
||||||
|
|
||||||
|
avatar: string | null;
|
||||||
|
newName: string;
|
||||||
|
newPronouns: string;
|
||||||
|
newLink: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const snapshot: Snapshot<SnapshotData> = {
|
||||||
|
capture: () => ({
|
||||||
|
bio,
|
||||||
|
display_name,
|
||||||
|
member_title,
|
||||||
|
links,
|
||||||
|
names,
|
||||||
|
pronouns,
|
||||||
|
fields,
|
||||||
|
flags,
|
||||||
|
list_private,
|
||||||
|
custom_preferences,
|
||||||
|
avatar,
|
||||||
|
newName,
|
||||||
|
newPronouns,
|
||||||
|
newLink,
|
||||||
|
}),
|
||||||
|
restore: (value) => {
|
||||||
|
bio = value.bio;
|
||||||
|
display_name = value.display_name;
|
||||||
|
member_title = value.member_title;
|
||||||
|
links = value.links;
|
||||||
|
names = value.names;
|
||||||
|
pronouns = value.pronouns;
|
||||||
|
fields = value.fields;
|
||||||
|
flags = value.flags;
|
||||||
|
list_private = value.list_private;
|
||||||
|
custom_preferences = value.custom_preferences;
|
||||||
|
avatar = value.avatar;
|
||||||
|
newName = value.newName;
|
||||||
|
newPronouns = value.newPronouns;
|
||||||
|
newLink = value.newLink;
|
||||||
|
},
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<svelte:head>
|
<svelte:head>
|
||||||
|
|
Loading…
Reference in a new issue