109 lines
2.6 KiB
TypeScript
109 lines
2.6 KiB
TypeScript
import {makeAutoObservable} from 'mobx'
|
|
import {isObj, hasProp} from '../lib/type-guards'
|
|
// import {UserConfig} from '../../api'
|
|
// import * as auth from '../lib/auth'
|
|
|
|
export class SessionModel {
|
|
isAuthed = false
|
|
|
|
constructor() {
|
|
makeAutoObservable(this, {
|
|
serialize: false,
|
|
hydrate: false,
|
|
})
|
|
}
|
|
|
|
serialize(): unknown {
|
|
return {
|
|
isAuthed: this.isAuthed,
|
|
}
|
|
}
|
|
|
|
hydrate(v: unknown) {
|
|
if (isObj(v)) {
|
|
if (hasProp(v, 'isAuthed') && typeof v.isAuthed === 'boolean') {
|
|
this.isAuthed = v.isAuthed
|
|
}
|
|
}
|
|
}
|
|
|
|
setAuthed(v: boolean) {
|
|
this.isAuthed = v
|
|
}
|
|
}
|
|
|
|
// TODO
|
|
/*login: flow(function* () {
|
|
/*self.uiIsProcessing = true
|
|
self.uiError = undefined
|
|
try {
|
|
if (!self.env.authStore) {
|
|
throw new Error('Auth store not initialized')
|
|
}
|
|
const res = yield auth.requestAppUcan(self.env.authStore)
|
|
self.isAuthed = res
|
|
self.uiIsProcessing = false
|
|
return res
|
|
} catch (e: any) {
|
|
console.error('Failed to request app ucan', e)
|
|
self.uiError = e.toString()
|
|
self.uiIsProcessing = false
|
|
return false
|
|
}
|
|
}),
|
|
logout: flow(function* () {
|
|
self.uiIsProcessing = true
|
|
self.uiError = undefined
|
|
try {
|
|
if (!self.env.authStore) {
|
|
throw new Error('Auth store not initialized')
|
|
}
|
|
const res = yield auth.logout(self.env.authStore)
|
|
self.isAuthed = false
|
|
self.uiIsProcessing = false
|
|
return res
|
|
} catch (e: any) {
|
|
console.error('Failed to log out', e)
|
|
self.uiError = e.toString()
|
|
self.uiIsProcessing = false
|
|
return false
|
|
}
|
|
}),
|
|
loadAccount: flow(function* () {
|
|
self.uiIsProcessing = true
|
|
self.uiError = undefined
|
|
try {
|
|
// const cfg = yield UserConfig.hydrate({
|
|
// serverUrl: self.serverUrl,
|
|
// secretKeyStr: self.secretKeyStr,
|
|
// rootAuthToken: self.rootAuthToken,
|
|
// })
|
|
// self.env.api.setUserCfg(cfg)
|
|
self.isAuthed = true
|
|
self.uiIsProcessing = false
|
|
return true
|
|
} catch (e: any) {
|
|
console.error('Failed to create test account', e)
|
|
self.uiError = e.toString()
|
|
self.uiIsProcessing = false
|
|
return false
|
|
}
|
|
}),
|
|
createTestAccount: flow(function* (_serverUrl: string) {
|
|
self.uiIsProcessing = true
|
|
self.uiError = undefined
|
|
try {
|
|
// const cfg = yield UserConfig.createTest(serverUrl)
|
|
// const state = yield cfg.serialize()
|
|
// self.serverUrl = state.serverUrl
|
|
// self.secretKeyStr = state.secretKeyStr
|
|
// self.rootAuthToken = state.rootAuthToken
|
|
self.isAuthed = true
|
|
// self.env.api.setUserCfg(cfg)
|
|
} catch (e: any) {
|
|
console.error('Failed to create test account', e)
|
|
self.uiError = e.toString()
|
|
}
|
|
self.uiIsProcessing = false
|
|
}),
|
|
}))*/
|