🐛 Fix refresh tk issue
This commit is contained in:
parent
96526da432
commit
cd815f3682
@ -1,17 +1,23 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-dialog v-model="editor.show.comment" class="max-w-[540px]" eager>
|
<v-bottom-sheet v-model="editor.show.comment" eager>
|
||||||
<comment-editor />
|
<div class="h-[720px]">
|
||||||
</v-dialog>
|
<comment-editor />
|
||||||
<v-dialog v-model="editor.show.moment" class="max-w-[540px]" eager>
|
</div>
|
||||||
<moment-editor />
|
</v-bottom-sheet>
|
||||||
</v-dialog>
|
<v-bottom-sheet v-model="editor.show.moment" eager>
|
||||||
<v-dialog v-model="editor.show.article" transition="dialog-bottom-transition" fullscreen eager>
|
<div class="h-[720px]">
|
||||||
<article-editor />
|
<moment-editor />
|
||||||
</v-dialog>
|
</div>
|
||||||
|
</v-bottom-sheet>
|
||||||
|
<v-bottom-sheet v-model="editor.show.article" eager>
|
||||||
|
<div class="h-[720px]">
|
||||||
|
<article-editor />
|
||||||
|
</div>
|
||||||
|
</v-bottom-sheet>
|
||||||
|
|
||||||
<v-dialog v-model="editor.show.delete" class="max-w-[540px]" eager>
|
<v-bottom-sheet v-model="editor.show.delete" eager>
|
||||||
<post-deletion />
|
<post-deletion />
|
||||||
</v-dialog>
|
</v-bottom-sheet>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
@ -1,11 +1,46 @@
|
|||||||
|
import { getAtk, getRtk } from "@/stores/userinfo"
|
||||||
|
import { Preferences } from "@capacitor/preferences"
|
||||||
|
|
||||||
const serviceMap: { [id: string]: string } = {
|
const serviceMap: { [id: string]: string } = {
|
||||||
interactive: "https://co.solsynth.dev",
|
interactive: "https://co.solsynth.dev",
|
||||||
identity: "https://id.solsynth.dev"
|
identity: "https://id.solsynth.dev"
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function request(service: string, input: string, init?: RequestInit) {
|
export async function request(service: string, input: string, init?: RequestInit, noRetry?: boolean) {
|
||||||
const url = buildRequestUrl(service, input)
|
const url = buildRequestUrl(service, input)
|
||||||
return await fetch(url, init)
|
const res = await fetch(url, init)
|
||||||
|
|
||||||
|
if (res.status === 401 && !noRetry) {
|
||||||
|
const res = await request("identity", "/api/auth/token", {
|
||||||
|
method: "POST",
|
||||||
|
headers: { "Content-Type": "application/json" },
|
||||||
|
body: JSON.stringify({
|
||||||
|
refresh_token: await getRtk(),
|
||||||
|
grant_type: "refresh_token"
|
||||||
|
})
|
||||||
|
}, true)
|
||||||
|
if (res.status !== 200) {
|
||||||
|
const err = await res.text()
|
||||||
|
throw new Error(err)
|
||||||
|
} else {
|
||||||
|
const data = await res.json()
|
||||||
|
await Preferences.set({
|
||||||
|
key: "identity.access_token",
|
||||||
|
value: data["access_token"]
|
||||||
|
})
|
||||||
|
await Preferences.set({
|
||||||
|
key: "identity.refresh_token",
|
||||||
|
value: data["refresh_token"]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
console.info("[REQUEST] Auth context has been refreshed.")
|
||||||
|
return await request(service, input, Object.assign(init as any, {
|
||||||
|
headers: { Authorization: `Bearer ${await getAtk()}` }
|
||||||
|
}), true)
|
||||||
|
}
|
||||||
|
|
||||||
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
export function buildRequestUrl(service: string, input: string) {
|
export function buildRequestUrl(service: string, input: string) {
|
||||||
|
@ -21,7 +21,11 @@ export async function getAtk() {
|
|||||||
return (await Preferences.get({ key: "identity.access_token" })).value
|
return (await Preferences.get({ key: "identity.access_token" })).value
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function checkLoggedIn(): boolean {
|
export async function getRtk() {
|
||||||
|
return (await Preferences.get({ key: "identity.refresh_token" })).value
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function checkLoggedIn(): Promise<boolean> {
|
||||||
return (await Preferences.get({ key: "identity.access_token" })).value != null
|
return (await Preferences.get({ key: "identity.access_token" })).value != null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user