persist oauth session status to stored account
This commit is contained in:
@@ -29,6 +29,7 @@ const accountSchema = z.object({
|
|||||||
status: z.string().optional(),
|
status: z.string().optional(),
|
||||||
pdsUrl: z.string().optional(),
|
pdsUrl: z.string().optional(),
|
||||||
isSelfHosted: z.boolean().optional(),
|
isSelfHosted: z.boolean().optional(),
|
||||||
|
isOauthSession: z.boolean().optional(),
|
||||||
})
|
})
|
||||||
export type PersistedAccount = z.infer<typeof accountSchema>
|
export type PersistedAccount = z.infer<typeof accountSchema>
|
||||||
|
|
||||||
|
|||||||
@@ -287,6 +287,7 @@ class BskyAppAgent extends BskyAgent {
|
|||||||
|
|
||||||
// Now the agent is ready.
|
// Now the agent is ready.
|
||||||
const account = agentToSessionAccountOrThrow(this)
|
const account = agentToSessionAccountOrThrow(this)
|
||||||
|
account.isOauthSession = false
|
||||||
let lastSession = this.sessionManager.session
|
let lastSession = this.sessionManager.session
|
||||||
this.persistSessionHandler = event => {
|
this.persistSessionHandler = event => {
|
||||||
if (this.sessionManager.session) {
|
if (this.sessionManager.session) {
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
|
|||||||
account: SessionAccount
|
account: SessionAccount
|
||||||
}
|
}
|
||||||
|
|
||||||
if (shouldUseOauth) {
|
if (storedAccount.isOauthSession || shouldUseOauth) {
|
||||||
agentAccount = await oauthResumeSession(storedAccount)
|
agentAccount = await oauthResumeSession(storedAccount)
|
||||||
} else {
|
} else {
|
||||||
agentAccount = await createAgentAndResume(
|
agentAccount = await createAgentAndResume(
|
||||||
@@ -259,7 +259,12 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
|
|||||||
a => a.did === synced.currentAccount?.did,
|
a => a.did === synced.currentAccount?.did,
|
||||||
)
|
)
|
||||||
// TODO: this should be checking if it is an oauth session
|
// 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) {
|
if (syncedAccount.did !== state.currentAgentState.did) {
|
||||||
resumeSession(syncedAccount)
|
resumeSession(syncedAccount)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ export class OauthBskyAppAgent extends Agent {
|
|||||||
this,
|
this,
|
||||||
this.#oauthSession,
|
this.#oauthSession,
|
||||||
)
|
)
|
||||||
|
account.isOauthSession = true
|
||||||
this.#account = account
|
this.#account = account
|
||||||
this.session = sessionAccountToSession(account)
|
this.session = sessionAccountToSession(account)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user