diff --git a/src/components/CommentReply/src/CommentInput/CommentInput.vue b/src/components/CommentReply/src/CommentInput/CommentInput.vue index 67a4fd5..0dee144 100644 --- a/src/components/CommentReply/src/CommentInput/CommentInput.vue +++ b/src/components/CommentReply/src/CommentInput/CommentInput.vue @@ -2,7 +2,7 @@
- + { return `emoji ${p1}`; }); - const regexWithLottieEmoji = /:((1[0-0-8]|[1-9]?[0-9])\.gif):/g; // 匹配 :1.gif: 的字符串 + const regexWithLottieEmoji = /\:((1[0-0-8]|[1-9]?[0-9])\.gif)\:/g; // 匹配 :1.gif: 的字符串 const contentWithLottieEmoji = contentWithEmoji.replace(regexWithLottieEmoji, (_match, p1) => { return `emoji ${p1}`; }); diff --git a/src/components/CommentReply/src/ReplyInput/ReplyInput.vue b/src/components/CommentReply/src/ReplyInput/ReplyInput.vue index 15dc0ca..1eee379 100644 --- a/src/components/CommentReply/src/ReplyInput/ReplyInput.vue +++ b/src/components/CommentReply/src/ReplyInput/ReplyInput.vue @@ -11,7 +11,7 @@ - + diff --git a/src/components/CommentReply/src/ReplyReplyInput/ReplyReply.vue b/src/components/CommentReply/src/ReplyReplyInput/ReplyReply.vue index f94e640..b127369 100644 --- a/src/components/CommentReply/src/ReplyReplyInput/ReplyReply.vue +++ b/src/components/CommentReply/src/ReplyReplyInput/ReplyReply.vue @@ -13,7 +13,7 @@ - + diff --git a/src/store/modules/userStore.ts b/src/store/modules/userStore.ts index 7ea0121..5cba0cb 100644 --- a/src/store/modules/userStore.ts +++ b/src/store/modules/userStore.ts @@ -10,6 +10,16 @@ export const useAuthStore = defineStore( uid: '', refreshToken: '', expiresAt: 0, + userInfo: { + username: '', + nickname: '', + email: '', + phone: '', + avatar: '', + gender: '', + status: '', + created_at: '', + }, }); return { diff --git a/src/utils/alova/service.ts b/src/utils/alova/service.ts index 7ac2cb4..9571028 100644 --- a/src/utils/alova/service.ts +++ b/src/utils/alova/service.ts @@ -35,9 +35,7 @@ const {onAuthRequired, onResponseRefreshToken} = createServerTokenAuthentication } else { message.error(i18n.global.t('error.loginExpired')); localStorage.removeItem('user'); - setTimeout(() => { - window.location.href = '/login'; - }, 2000); + window.location.href = '/login'; } } } diff --git a/src/utils/nsfw/nsfw.ts b/src/utils/nsfw/nsfw.ts index 36549a6..974fc26 100644 --- a/src/utils/nsfw/nsfw.ts +++ b/src/utils/nsfw/nsfw.ts @@ -9,7 +9,10 @@ let isInit: boolean = false; const initNSFWJs = async (): Promise => { tf.enableProdMode(); if (!isInit) { - const initialLoad = await nsfwjs.load("/nsfw/model/mobilenet_v2_mid/model.json", {size: 224, type: "graph"}); + const initialLoad: nsfwjs.NSFWJS = await nsfwjs.load("/nsfw/model/mobilenet_v2_mid/", { + size: 224, + type: "graph" + }); await initialLoad.model.save("indexeddb://nsfwjs-model"); isInit = true; } @@ -22,7 +25,6 @@ const initNSFWJs = async (): Promise => { */ const predictNSFW = async (model: NSFWJS, image: tf.Tensor3D | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement): Promise => { const predictions = await model.classify(image, 5); - console.log(predictions); // 定义阈值与对应的类别 const thresholds = { 'Porn': 0.5, diff --git a/src/views/Login/LoginFooter.vue b/src/views/Login/LoginFooter.vue index 2901509..f896f57 100644 --- a/src/views/Login/LoginFooter.vue +++ b/src/views/Login/LoginFooter.vue @@ -114,11 +114,12 @@ function openGithubUrl() { const data: any = JSON.parse(e.data); if (data.code === 200 && data.data) { const user = useStore().user; - const {access_token, refresh_token, uid, expires_at} = data.data; + const {access_token, refresh_token, uid, expires_at, user_info} = data.data; user.user.accessToken = access_token; user.user.refreshToken = refresh_token; user.user.uid = uid; user.user.expiresAt = expires_at; + user.user.userInfo = user_info; await getUserDevice(uid); message.success(t('login.loginSuccess')); window.removeEventListener("message", messageHandler); @@ -157,11 +158,12 @@ function openGiteeUrl() { const data: any = JSON.parse(e.data); if (data.code === 200 && data.data) { const user = useStore().user; - const {access_token, refresh_token, uid, expires_at} = data.data; + const {access_token, refresh_token, uid, expires_at, user_info} = data.data; user.user.accessToken = access_token; user.user.refreshToken = refresh_token; user.user.uid = uid; user.user.expiresAt = expires_at; + user.user.userInfo = user_info; await getUserDevice(uid); message.success(t('login.loginSuccess')); window.removeEventListener("message", messageHandler); @@ -198,11 +200,12 @@ function openQQUrl() { const data: any = JSON.parse(e.data); if (data.code === 200 && data.data) { const user = useStore().user; - const {access_token, refresh_token, uid, expires_at} = data.data; + const {access_token, refresh_token, uid, expires_at, user_info} = data.data; user.user.accessToken = access_token; user.user.refreshToken = refresh_token; user.user.uid = uid; user.user.expiresAt = expires_at; + user.user.userInfo = user_info; await getUserDevice(uid); message.success(t('login.loginSuccess')); window.removeEventListener("message", messageHandler); diff --git a/src/views/Login/LoginPage.vue b/src/views/Login/LoginPage.vue index be3dda2..5ce8944 100644 --- a/src/views/Login/LoginPage.vue +++ b/src/views/Login/LoginPage.vue @@ -377,13 +377,15 @@ async function phoneLoginSubmit() { .validate() .then(async () => { const res: any = await phoneLoginApi(phoneLoginForm); + console.log(res); if (res.code === 200 && res.success) { const userStore = useStore().user; - const {uid, access_token, refresh_token, expires_at} = res.data; + const {uid, access_token, refresh_token, expires_at, user_info} = res.data; userStore.user.uid = uid; userStore.user.accessToken = access_token; userStore.user.refreshToken = refresh_token; userStore.user.expiresAt = expires_at; + userStore.user.userInfo = user_info; message.success(t('login.loginSuccess')); loginLoading.value = false; setTimeout(() => { @@ -461,11 +463,12 @@ async function checkAccountLoginCaptcha(angle: number) { const res: any = await accountLoginApi(params); if (res.code === 200 && res.success) { const userStore = useStore().user; - const {uid, access_token, refresh_token, expires_at} = res.data; + const {uid, access_token, refresh_token, expires_at, user_info} = res.data; userStore.user.uid = uid; userStore.user.accessToken = access_token; userStore.user.refreshToken = refresh_token; userStore.user.expiresAt = expires_at; + userStore.user.userInfo = user_info; message.success(t('login.loginSuccess')); loginLoading.value = false; showAccountRotateCaptcha.value = false; diff --git a/src/views/QRLogin/QRLogin.vue b/src/views/QRLogin/QRLogin.vue index b7cdbb7..1bda27d 100644 --- a/src/views/QRLogin/QRLogin.vue +++ b/src/views/QRLogin/QRLogin.vue @@ -131,11 +131,12 @@ async function handleListenMessage() { websocket.on('message', async (data: any) => { if (data.code === 200 && data.data) { const user = useStore().user; - const {access_token, refresh_token, uid, expires_at} = data.data; + const {access_token, refresh_token, uid, expires_at, user_info} = data.data; user.user.accessToken = access_token; user.user.refreshToken = refresh_token; user.user.uid = uid; user.user.expiresAt = expires_at; + user.user.userInfo = user_info; status.value = 'scanned'; await getUserDevice(uid); message.success(t('login.loginSuccess')); diff --git a/src/views/QRLogin/QRLoginFooter.vue b/src/views/QRLogin/QRLoginFooter.vue index 2643567..e3832d0 100644 --- a/src/views/QRLogin/QRLoginFooter.vue +++ b/src/views/QRLogin/QRLoginFooter.vue @@ -115,11 +115,12 @@ function openGithubUrl() { const data: any = JSON.parse(e.data); if (data.code === 200 && data.data) { const user = useStore().user; - const {access_token, refresh_token, uid, expires_at} = data.data; + const {access_token, refresh_token, uid, expires_at, user_info} = data.data; user.user.accessToken = access_token; user.user.refreshToken = refresh_token; user.user.uid = uid; user.user.expiresAt = expires_at; + user.user.userInfo = user_info; await getUserDevice(uid); message.success(t('login.loginSuccess')); window.removeEventListener("message", messageHandler); @@ -157,11 +158,12 @@ function openGiteeUrl() { const data: any = JSON.parse(e.data); if (data.code === 200 && data.data) { const user = useStore().user; - const {access_token, refresh_token, uid, expires_at} = data.data; + const {access_token, refresh_token, uid, expires_at, user_info} = data.data; user.user.accessToken = access_token; user.user.refreshToken = refresh_token; user.user.uid = uid; user.user.expiresAt = expires_at; + user.user.userInfo = user_info; await getUserDevice(uid); message.success(t('login.loginSuccess')); window.removeEventListener("message", messageHandler); @@ -198,11 +200,12 @@ function openQQUrl() { const data: any = JSON.parse(e.data); if (data.code === 200 && data.data) { const user = useStore().user; - const {access_token, refresh_token, uid, expires_at} = data.data; + const {access_token, refresh_token, uid, expires_at, user_info} = data.data; user.user.accessToken = access_token; user.user.refreshToken = refresh_token; user.user.uid = uid; user.user.expiresAt = expires_at; + user.user.userInfo = user_info; await getUserDevice(uid); message.success(t('login.loginSuccess')); window.removeEventListener("message", messageHandler); diff --git a/vite.config.ts b/vite.config.ts index 1468c9f..419df86 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -45,6 +45,7 @@ export default defineConfig(({mode}: { mode: string }): object => { }), nodePolyfills(), viteCompression({ + filter: /\.(js|mjs|css|html)$/i, // 压缩的文件类型 verbose: true, // 是否在控制台中输出压缩结果 disable: false, threshold: 10240, // 如果体积大于阈值,将被压缩,单位为b,体积过小时请不要压缩,以免适得其反 @@ -93,7 +94,7 @@ export default defineConfig(({mode}: { mode: string }): object => { }, esbuild: { - // drop: ["console", "debugger"], + drop: env.VITE_NODE_ENV === 'production' ? ['console', 'debugger'] : [], }, build: { outDir: "dist", // 指定输出路径