Files
bsky-social-app/src/storage/schema.ts
T

95 lines
2.6 KiB
TypeScript

import {type ID as PolicyUpdate202508} from '#/components/PolicyUpdateOverlay/updates/202508/config'
import {type Gif} from '#/features/gifPicker/types'
import {type InviteThemeKey} from '#/features/inviteFriends/themes'
import {type Geolocation} from '#/geolocation/types'
/**
* Data that's specific to the device and does not vary based account
*/
export type Device = {
/**
* Formerly managed by StatSig, this is the migrated stable ID for the
* device, used with our logging and metrics tracking.
*/
deviceId?: string
/**
* Session ID storage for _native only_. On web, use we `sessionStorage`
*/
nativeSessionId?: string
nativeSessionIdLastEventAt?: number
fontScale: '-2' | '-1' | '0' | '1' | '2'
fontFamily: 'system' | 'theme'
lastNuxDialog: string | undefined
/**
* Geolocation config, fetched from the IP service. This previously did
* double duty as the "status" for geolocation state, but that has since
* moved here to the client.
*
* @deprecated use `mergedGeolocation` instead
*/
geolocation?: {
countryCode: string | undefined
regionCode: string | undefined
ageRestrictedGeos: {
countryCode: string
regionCode: string | undefined
}[]
ageBlockedGeos: {
countryCode: string
regionCode: string | undefined
}[]
}
/**
* The raw response from the geolocation service, if available. We
* cache this here and update it lazily on session start.
*/
geolocationServiceResponse?: Geolocation
/**
* The GPS-based geolocation, if the user has granted permission.
*/
deviceGeolocation?: Geolocation
/**
* The merged geolocation, combining `geolocationServiceResponse` and
* `deviceGeolocation`, with preference to `deviceGeolocation`.
*/
mergedGeolocation?: Geolocation
trendingBetaEnabled: boolean
devMode: boolean
demoMode: boolean
activitySubscriptionsNudged?: boolean
threadgateNudged?: boolean
inviteFriendsFollowersPromoDismissed?: boolean
/**
* Selected color theme for the Invite Friends QR card.
*/
inviteFriendsThemeKey?: InviteThemeKey
/**
* Policy update overlays. New IDs are required for each new announcement.
*/
policyUpdateDebugOverride?: boolean
[PolicyUpdate202508]?: boolean
}
export type Account = {
searchTermHistory?: string[]
searchAccountHistory?: string[]
/**
* The ISO date string of when this account's birthdate was last updated on
* this device.
*/
birthdateLastUpdatedAt?: string
lastSelectedHomeFeed?: string
/**
* Recently selected GIFs in the GIF picker. Most recent first, capped at 20.
*/
recentGifs?: Gif[]
}