完成consumer端同步

This commit is contained in:
2026-05-14 15:28:09 +08:00
parent 612fb3d360
commit 0ffbc53902
197 changed files with 92657 additions and 7564 deletions

View File

@@ -792,7 +792,12 @@ export class AkSupa {
async hydrateSessionFromStorage() : Promise<boolean> {
try {
const token = AkReq.getToken();
if (token == null || token == '') return false;
if (token == null || token == '') {
console.log('[HydrateSession] no persisted token found');
return false;
}
const tokenPreview = token.length > 12 ? (token.substring(0, 6) + '...' + token.substring(token.length - 6)) : token;
console.log('[HydrateSession] found persisted token:', tokenPreview);
const res = await AkReq.request({
url: this.baseUrl + '/auth/v1/user',
method: 'GET',
@@ -804,6 +809,7 @@ export class AkSupa {
}, false);
const status = res.status ?? 0;
if (!(status >= 200 && status < 400)) {
console.warn('[HydrateSession] /auth/v1/user failed with status:', status);
return false;
}
let user: UTSJSONObject | null = null;
@@ -812,7 +818,10 @@ export class AkSupa {
} catch (e) {
user = null;
}
if (user == null) return false;
if (user == null) {
console.warn('[HydrateSession] /auth/v1/user returned empty user payload');
return false;
}
this.user = user;
// 仅补齐最小 session 结构,供 getSession / UI 判断登录态使用
if (this.session == null) {
@@ -826,8 +835,10 @@ export class AkSupa {
raw: user
} as AkSupaSignInResult;
}
console.log('[HydrateSession] restored session for user:', user.getString('id') ?? 'unknown');
return true;
} catch (e) {
console.error('[HydrateSession] unexpected error:', e);
return false;
}
}
@@ -850,6 +861,9 @@ export class AkSupa {
async signOut() {
this.session = null
this.user = null
try {
AkReq.clearToken()
} catch (e) {}
}
async signIn(email : string, password : string) : Promise<AkSupaSignInResult> {
// 提前检查 apikey 配置是否为占位符,避免发送无效请求导致 401
@@ -902,6 +916,13 @@ export class AkSupa {
const expires_at = data.getNumber('expires_at') ?? 0;
const user = data.getJSON('user');
AkReq.setToken(access_token, refresh_token, expires_at);
const storedAccessToken = AkReq.getToken() ?? '';
const storedRefreshToken = AkReq.getRefreshToken() ?? '';
const accessPreview = storedAccessToken.length > 12 ? (storedAccessToken.substring(0, 6) + '...' + storedAccessToken.substring(storedAccessToken.length - 6)) : storedAccessToken;
const refreshPreview = storedRefreshToken.length > 12 ? (storedRefreshToken.substring(0, 6) + '...' + storedRefreshToken.substring(storedRefreshToken.length - 6)) : storedRefreshToken;
console.log('[SignInPersist] access token stored:', accessPreview != '' ? accessPreview : '(empty)');
console.log('[SignInPersist] refresh token stored:', refreshPreview != '' ? refreshPreview : '(empty)');
console.log('[SignInPersist] expires_at stored:', AkReq.getExpiresAt() ?? 0);
const session : AkSupaSignInResult = {
access_token: access_token,
refresh_token: refresh_token,