diff options
author | dan <dan.abramov@gmail.com> | 2024-04-30 17:38:05 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-30 17:38:05 +0100 |
commit | 2b7d796ca96cb098d3875826f20f293a3e956a47 (patch) | |
tree | 625372b6b4de574afda7c635d60415b913bccd82 /src/state/persisted/schema.ts | |
parent | 4de78fb69e095779e652c20c60b6f84a92881161 (diff) | |
download | voidsky-2b7d796ca96cb098d3875826f20f293a3e956a47.tar.zst |
Session fixes, pt. 1 (#3762)
* Update persisted schema for new source of truth, implement in existing session (cherry picked from commit b1e5f12baee932721d66c60dd51c981b46b0c274) * Improve toasts, log caught error, during switch account (cherry picked from commit fe0d1507063d2e532b7b1a447670b689292d1dc3) * Handle thrown errors from initSession during login (cherry picked from commit 2c85c045917e923901284b9ba310a82e28f37b5c) --------- Co-authored-by: Eric Bailey <git@esb.lol>
Diffstat (limited to 'src/state/persisted/schema.ts')
-rw-r--r-- | src/state/persisted/schema.ts | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/state/persisted/schema.ts b/src/state/persisted/schema.ts index f090365a3..43f08e12e 100644 --- a/src/state/persisted/schema.ts +++ b/src/state/persisted/schema.ts @@ -4,7 +4,10 @@ import {deviceLocales, prefersReducedMotion} from '#/platform/detection' const externalEmbedOptions = ['show', 'hide'] as const -// only data needed for rendering account page +/** + * A account persisted to storage. Stored in the `accounts[]` array. Contains + * base account info and access tokens. + */ const accountSchema = z.object({ service: z.string(), did: z.string(), @@ -19,12 +22,26 @@ const accountSchema = z.object({ }) export type PersistedAccount = z.infer<typeof accountSchema> +/** + * The current account. Stored in the `currentAccount` field. + * + * In previous versions, this included tokens and other info. Now, it's used + * only to reference the `did` field, and all other fields are marked as + * optional. They should be considered deprecated and not used, but are kept + * here for backwards compat. + */ +const currentAccountSchema = accountSchema.extend({ + service: z.string().optional(), + handle: z.string().optional(), +}) +export type PersistedCurrentAccount = z.infer<typeof currentAccountSchema> + export const schema = z.object({ colorMode: z.enum(['system', 'light', 'dark']), darkTheme: z.enum(['dim', 'dark']).optional(), session: z.object({ accounts: z.array(accountSchema), - currentAccount: accountSchema.optional(), + currentAccount: currentAccountSchema.optional(), }), reminders: z.object({ lastEmailConfirm: z.string().optional(), |