diff options
Diffstat (limited to 'src/state/models/ui')
-rw-r--r-- | src/state/models/ui/create-account.ts | 1 | ||||
-rw-r--r-- | src/state/models/ui/preferences.ts | 15 | ||||
-rw-r--r-- | src/state/models/ui/shell.ts | 5 |
3 files changed, 21 insertions, 0 deletions
diff --git a/src/state/models/ui/create-account.ts b/src/state/models/ui/create-account.ts index c5d9f6d9b..d595b200b 100644 --- a/src/state/models/ui/create-account.ts +++ b/src/state/models/ui/create-account.ts @@ -118,6 +118,7 @@ export class CreateAccountModel { password: this.password, inviteCode: this.inviteCode, }) + /* dont await */ this.rootStore.preferences.setBirthDate(this.birthDate) track('Create Account') } catch (e: any) { this.rootStore.onboarding.skip() // undo starting the onboard diff --git a/src/state/models/ui/preferences.ts b/src/state/models/ui/preferences.ts index 3b03cdca1..64ab4ecba 100644 --- a/src/state/models/ui/preferences.ts +++ b/src/state/models/ui/preferences.ts @@ -7,6 +7,7 @@ import {RootStoreModel} from '../root-store' import {ModerationOpts} from '@atproto/api' import {DEFAULT_FEEDS} from 'lib/constants' import {deviceLocales} from 'platform/detection' +import {getAge} from 'lib/strings/time' import {LANGUAGES} from '../../../locale/languages' // TEMP we need to permanently convert 'show' to 'ignore', for now we manually convert -prf @@ -47,6 +48,7 @@ export class PreferencesModel { contentLabels = new LabelPreferencesModel() savedFeeds: string[] = [] pinnedFeeds: string[] = [] + birthDate: Date | undefined = undefined homeFeedRepliesEnabled: boolean = true homeFeedRepliesThreshold: number = 2 homeFeedRepostsEnabled: boolean = true @@ -60,6 +62,13 @@ export class PreferencesModel { makeAutoObservable(this, {lock: false}, {autoBind: true}) } + get userAge(): number | undefined { + if (!this.birthDate) { + return undefined + } + return getAge(this.birthDate) + } + serialize() { return { contentLanguages: this.contentLanguages, @@ -199,6 +208,7 @@ export class PreferencesModel { ) { this.pinnedFeeds = prefs.feeds.pinned } + this.birthDate = prefs.birthDate }) // set defaults on missing items @@ -430,6 +440,11 @@ export class PreferencesModel { ) } + async setBirthDate(birthDate: Date) { + this.birthDate = birthDate + await this.rootStore.agent.setPersonalDetails({birthDate}) + } + toggleHomeFeedRepliesEnabled() { this.homeFeedRepliesEnabled = !this.homeFeedRepliesEnabled } diff --git a/src/state/models/ui/shell.ts b/src/state/models/ui/shell.ts index 33fdd5710..647513563 100644 --- a/src/state/models/ui/shell.ts +++ b/src/state/models/ui/shell.ts @@ -136,6 +136,10 @@ export interface PostLanguagesSettingsModal { name: 'post-languages-settings' } +export interface BirthDateSettingsModal { + name: 'birth-date-settings' +} + export type Modal = // Account | AddAppPasswordModal @@ -143,6 +147,7 @@ export type Modal = | DeleteAccountModal | EditProfileModal | ProfilePreviewModal + | BirthDateSettingsModal // Curation | ContentFilteringSettingsModal |