diff options
author | Paul Frazee <pfrazee@gmail.com> | 2023-09-11 18:04:09 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-11 18:04:09 -0700 |
commit | 9e8b14f71008e11889bf0107938850433bcd2cd2 (patch) | |
tree | bdd9a7af0223f240e3a65c7984bdbe029001fe14 /src/state/models/ui/preferences.ts | |
parent | 0090371011e2b5f2c93bf8196ec461c34bf1c999 (diff) | |
download | voidsky-9e8b14f71008e11889bf0107938850433bcd2cd2.tar.zst |
Add birth date gating to moderation settings (#1435)
* Add birth date preference, modal to set, link in settings, and age gate in moderation * Styling fixes for android * Fix types
Diffstat (limited to 'src/state/models/ui/preferences.ts')
-rw-r--r-- | src/state/models/ui/preferences.ts | 15 |
1 files changed, 15 insertions, 0 deletions
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 } |