diff options
author | Paul Frazee <pfrazee@gmail.com> | 2023-03-31 13:17:26 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-31 13:17:26 -0500 |
commit | a3334a01a221877d3e06e02f960fda441f3460bd (patch) | |
tree | 64cdbb1232d1a3c00750c346b6e3ae529b51d1b0 /src/state/models/root-store.ts | |
parent | 19f3a2fa92a61ddb785fc4e42d73792c1d0e772c (diff) | |
download | voidsky-a3334a01a221877d3e06e02f960fda441f3460bd.tar.zst |
Lex refactor (#362)
* Remove the hackcheck for upgrades * Rename the PostEmbeds folder to match the codebase style * Updates to latest lex refactor * Update to use new bsky agent * Update to use api package's richtext library * Switch to upsertProfile * Add TextEncoder/TextDecoder polyfill * Add Intl.Segmenter polyfill * Update composer to calculate lengths by grapheme * Fix detox * Fix login in e2e * Create account e2e passing * Implement an e2e mocking framework * Don't use private methods on mobx models as mobx can't track them * Add tooling for e2e-specific builds and add e2e media-picker mock * Add some tests and fix some bugs around profile editing * Add shell tests * Add home screen tests * Add thread screen tests * Add tests for other user profile screens * Add search screen tests * Implement profile imagery change tools and tests * Update to new embed behaviors * Add post tests * Fix to profile-screen test * Fix session resumption * Update web composer to new api * 1.11.0 * Fix pagination cursor parameters * Add quote posts to notifications * Fix embed layouts * Remove youtube inline player and improve tap handling on link cards * Reset minimal shell mode on all screen loads and feed swipes (close #299) * Update podfile.lock * Improve post notfound UI (close #366) * Bump atproto packages
Diffstat (limited to 'src/state/models/root-store.ts')
-rw-r--r-- | src/state/models/root-store.ts | 41 |
1 files changed, 8 insertions, 33 deletions
diff --git a/src/state/models/root-store.ts b/src/state/models/root-store.ts index d8336d005..0c2a31d28 100644 --- a/src/state/models/root-store.ts +++ b/src/state/models/root-store.ts @@ -2,8 +2,8 @@ * The root store is the base of all modeled state. */ -import {makeAutoObservable, runInAction} from 'mobx' -import {AtpAgent} from '@atproto/api' +import {makeAutoObservable} from 'mobx' +import {BskyAgent} from '@atproto/api' import {createContext, useContext} from 'react' import {DeviceEventEmitter, EmitterSubscription} from 'react-native' import * as BgScheduler from 'lib/bg-scheduler' @@ -29,7 +29,7 @@ export const appInfo = z.object({ export type AppInfo = z.infer<typeof appInfo> export class RootStoreModel { - agent: AtpAgent + agent: BskyAgent appInfo?: AppInfo log = new LogModel() session = new SessionModel(this) @@ -40,41 +40,16 @@ export class RootStoreModel { linkMetas = new LinkMetasCache(this) imageSizes = new ImageSizesCache() - // HACK - // this flag is to track the lexicon breaking refactor - // it should be removed once we get that done - // -prf - hackUpgradeNeeded = false - async hackCheckIfUpgradeNeeded() { - try { - this.log.debug('hackCheckIfUpgradeNeeded()') - const res = await fetch('https://bsky.social/xrpc/app.bsky.feed.getLikes') - await res.text() - runInAction(() => { - this.hackUpgradeNeeded = res.status !== 501 - this.log.debug( - `hackCheckIfUpgradeNeeded() said ${this.hackUpgradeNeeded}`, - ) - }) - } catch (e) { - this.log.error('Failed to hackCheckIfUpgradeNeeded', {e}) - } - } - - constructor(agent: AtpAgent) { + constructor(agent: BskyAgent) { this.agent = agent makeAutoObservable(this, { - api: false, + agent: false, serialize: false, hydrate: false, }) this.initBgFetch() } - get api() { - return this.agent.api - } - setAppInfo(info: AppInfo) { this.appInfo = info } @@ -131,7 +106,7 @@ export class RootStoreModel { /** * Called by the session model. Refreshes session-oriented state. */ - async handleSessionChange(agent: AtpAgent) { + async handleSessionChange(agent: BskyAgent) { this.log.debug('RootStoreModel:handleSessionChange') this.agent = agent this.me.clear() @@ -259,7 +234,7 @@ export class RootStoreModel { async onBgFetch(taskId: string) { this.log.debug(`Background fetch fired for task ${taskId}`) if (this.session.hasSession) { - const res = await this.api.app.bsky.notification.getCount() + const res = await this.agent.countUnreadNotifications() const hasNewNotifs = this.me.notifications.unreadCount !== res.data.count this.emitUnreadNotifications(res.data.count) this.log.debug( @@ -286,7 +261,7 @@ export class RootStoreModel { } const throwawayInst = new RootStoreModel( - new AtpAgent({service: 'http://localhost'}), + new BskyAgent({service: 'http://localhost'}), ) // this will be replaced by the loader, we just need to supply a value at init const RootStoreContext = createContext<RootStoreModel>(throwawayInst) export const RootStoreProvider = RootStoreContext.Provider |