diff options
Diffstat (limited to 'src/state/models')
-rw-r--r-- | src/state/models/navigation.ts | 18 | ||||
-rw-r--r-- | src/state/models/session.ts | 15 | ||||
-rw-r--r-- | src/state/models/shell-ui.ts | 29 |
3 files changed, 32 insertions, 30 deletions
diff --git a/src/state/models/navigation.ts b/src/state/models/navigation.ts index 758ae37d8..1e639b0f3 100644 --- a/src/state/models/navigation.ts +++ b/src/state/models/navigation.ts @@ -222,6 +222,24 @@ export class NavigationModel { this.tabs.find(t => t.id === ptr[0])?.setTitle(ptr[1], title) } + handleLink(url: string) { + let path + if (url.startsWith('/')) { + path = url + } else if (url.startsWith('http')) { + try { + path = new URL(url).pathname + } catch (e) { + console.error('Invalid url', url, e) + return + } + } else { + console.error('Invalid url', url) + return + } + this.navigate(path) + } + // tab management // = diff --git a/src/state/models/session.ts b/src/state/models/session.ts index e10a08e86..0f1faeaba 100644 --- a/src/state/models/session.ts +++ b/src/state/models/session.ts @@ -1,6 +1,9 @@ import {makeAutoObservable} from 'mobx' import {sessionClient as AtpApi} from '../../third-party/api/index' -import type {SessionServiceClient} from '../../third-party/api/src/index' +import type { + SessionServiceClient, + Session, +} from '../../third-party/api/src/index' import type * as GetAccountsConfig from '../../third-party/api/src/client/types/com/atproto/server/getAccountsConfig' import {isObj, hasProp} from '../lib/type-guards' import {RootStoreModel} from './root-store' @@ -88,6 +91,16 @@ export class SessionModel { this.data = data } + updateAuthTokens(session: Session) { + if (this.data) { + this.setState({ + ...this.data, + accessJwt: session.accessJwt, + refreshJwt: session.refreshJwt, + }) + } + } + private configureApi(): boolean { if (!this.data) { return false diff --git a/src/state/models/shell-ui.ts b/src/state/models/shell-ui.ts index 73b1bd56e..13d720730 100644 --- a/src/state/models/shell-ui.ts +++ b/src/state/models/shell-ui.ts @@ -2,23 +2,6 @@ import {makeAutoObservable} from 'mobx' import {ProfileViewModel} from './profile-view' import * as Post from '../../third-party/api/src/client/types/app/bsky/feed/post' -export interface LinkActionsModelOpts { - newTab?: boolean -} -export class LinkActionsModel { - name = 'link-actions' - newTab: boolean - - constructor( - public href: string, - public title: string, - opts?: LinkActionsModelOpts, - ) { - makeAutoObservable(this) - this.newTab = typeof opts?.newTab === 'boolean' ? opts.newTab : true - } -} - export class ConfirmModel { name = 'confirm' @@ -31,14 +14,6 @@ export class ConfirmModel { } } -export class SharePostModel { - name = 'share-post' - - constructor(public href: string) { - makeAutoObservable(this) - } -} - export class EditProfileModel { name = 'edit-profile' @@ -85,9 +60,7 @@ export interface ComposerOpts { export class ShellUiModel { isModalActive = false activeModal: - | LinkActionsModel | ConfirmModel - | SharePostModel | EditProfileModel | CreateSceneModel | ServerInputModel @@ -101,9 +74,7 @@ export class ShellUiModel { openModal( modal: - | LinkActionsModel | ConfirmModel - | SharePostModel | EditProfileModel | CreateSceneModel | ServerInputModel, |