persist oauth session status to stored account

This commit is contained in:
Hailey
2025-07-18 21:04:43 -07:00
parent a3fc2d4930
commit de4fe0c63c
4 changed files with 10 additions and 2 deletions
+1
View File
@@ -29,6 +29,7 @@ const accountSchema = z.object({
status: z.string().optional(),
pdsUrl: z.string().optional(),
isSelfHosted: z.boolean().optional(),
isOauthSession: z.boolean().optional(),
})
export type PersistedAccount = z.infer<typeof accountSchema>
+1
View File
@@ -287,6 +287,7 @@ class BskyAppAgent extends BskyAgent {
// Now the agent is ready.
const account = agentToSessionAccountOrThrow(this)
account.isOauthSession = false
let lastSession = this.sessionManager.session
this.persistSessionHandler = event => {
if (this.sessionManager.session) {
+7 -2
View File
@@ -190,7 +190,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
account: SessionAccount
}
if (shouldUseOauth) {
if (storedAccount.isOauthSession || shouldUseOauth) {
agentAccount = await oauthResumeSession(storedAccount)
} else {
agentAccount = await createAgentAndResume(
@@ -259,7 +259,12 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
a => a.did === synced.currentAccount?.did,
)
// TODO: this should be checking if it is an oauth session
if (syncedAccount && (shouldUseOauth || syncedAccount?.refreshJwt)) {
if (
syncedAccount &&
(syncedAccount.isOauthSession ||
shouldUseOauth ||
syncedAccount?.refreshJwt)
) {
if (syncedAccount.did !== state.currentAgentState.did) {
resumeSession(syncedAccount)
} else {
+1
View File
@@ -79,6 +79,7 @@ export class OauthBskyAppAgent extends Agent {
this,
this.#oauthSession,
)
account.isOauthSession = true
this.#account = account
this.session = sessionAccountToSession(account)