fix: 首页和我的应用排序按 seq 排列
This commit is contained in:
@@ -28,6 +28,26 @@ import {
|
||||
} from './../config/cache';
|
||||
import Routine from '@/libs/routine';
|
||||
|
||||
/**
|
||||
* 不依赖 atob 的 base64 解码(小程序环境不提供 atob)
|
||||
*/
|
||||
function base64Decode(str) {
|
||||
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
||||
var output = '';
|
||||
var i = 0;
|
||||
str = String(str).replace(/[^A-Za-z0-9+/=]/g, '');
|
||||
while (i < str.length) {
|
||||
var b1 = chars.indexOf(str.charAt(i++));
|
||||
var b2 = chars.indexOf(str.charAt(i++));
|
||||
var b3 = chars.indexOf(str.charAt(i++));
|
||||
var b4 = chars.indexOf(str.charAt(i++));
|
||||
output += String.fromCharCode((b1 << 2) | (b2 >> 4));
|
||||
if (b3 !== 64) output += String.fromCharCode(((b2 & 15) << 4) | (b3 >> 2));
|
||||
if (b4 !== 64) output += String.fromCharCode(((b3 & 3) << 6) | b4);
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
function prePage() {
|
||||
let pages = getCurrentPages();
|
||||
let prePage = pages[pages.length - 1];
|
||||
@@ -42,7 +62,6 @@ function prePage() {
|
||||
|
||||
|
||||
|
||||
|
||||
export const toLogin = Debounce(_toLogin, 800)
|
||||
|
||||
function _toLogin(push, pathLogin) {
|
||||
@@ -80,16 +99,6 @@ function _toLogin(push, pathLogin) {
|
||||
uni.navigateTo({
|
||||
url
|
||||
})
|
||||
// Routine.getCode()
|
||||
// .then(code => {
|
||||
// console.log(code)
|
||||
// Routine.silenceAuth(code).then(res => {
|
||||
// console.log(res)
|
||||
// })
|
||||
// })
|
||||
// .catch(err => {
|
||||
// uni.hideLoading();
|
||||
// });
|
||||
// #endif
|
||||
|
||||
// #ifdef APP-PLUS
|
||||
@@ -114,11 +123,46 @@ export function checkLogin() {
|
||||
return false;
|
||||
} else {
|
||||
store.commit('UPDATE_LOGIN', token);
|
||||
// 从 JWT payload 中恢复 uid / unionid
|
||||
try {
|
||||
let parts = token.split('.');
|
||||
if (parts.length === 3) {
|
||||
let payload = parts[1]
|
||||
.replace(/-/g, '+')
|
||||
.replace(/_/g, '/');
|
||||
while (payload.length % 4 !== 0) payload += '=';
|
||||
let data = JSON.parse(base64Decode(payload));
|
||||
if (data.uid) store.commit('SETUID', data.uid);
|
||||
if (data.unionid) {
|
||||
store.commit('SET_UNIONID', data.unionid);
|
||||
Cache.set('UNIONID', data.unionid);
|
||||
console.log('[checkLogin] unionid 已从 JWT 恢复:', data.unionid);
|
||||
}
|
||||
}
|
||||
} catch (e) {}
|
||||
// 恢复缓存的 openid
|
||||
const cachedOpenid = Cache.get('OPENID');
|
||||
if (cachedOpenid) {
|
||||
store.commit('SET_OPENID', cachedOpenid);
|
||||
console.log('[checkLogin] openid 已从缓存恢复:', cachedOpenid);
|
||||
}
|
||||
// 恢复缓存的 unionid
|
||||
const cachedUnionid = Cache.get('UNIONID');
|
||||
if (cachedUnionid) {
|
||||
store.commit('SET_UNIONID', cachedUnionid);
|
||||
console.log('[checkLogin] unionid 已从缓存恢复:', cachedUnionid);
|
||||
} else {
|
||||
console.log('[checkLogin] unionid 缓存为空');
|
||||
}
|
||||
// 从 userInfo 缓存恢复
|
||||
let userInfo = Cache.get(USER_INFO, true);
|
||||
if (userInfo) {
|
||||
store.commit('UPDATE_USERINFO', userInfo);
|
||||
if (!cachedUnionid && userInfo.unionid) {
|
||||
console.log('[checkLogin] unionid 已从 userInfo 恢复:', userInfo.unionid);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user