update

This commit is contained in:
landaiqing
2024-10-03 02:08:19 +08:00
parent af1f57018b
commit c5b1207f89
11 changed files with 40 additions and 19 deletions

View File

@@ -2,7 +2,7 @@
<div class="comment"> <div class="comment">
<AFlex :vertical="false"> <AFlex :vertical="false">
<AFlex :vertical="true"> <AFlex :vertical="true">
<AAvatar :size="50" class="comment-avatar" shape="circle" src="https://api.multiavatar.com/Starcrasher.svg"/> <AAvatar :size="50" class="comment-avatar" shape="circle" :src="user.user.userInfo.avatar"/>
</AFlex> </AFlex>
<AFlex :vertical="true" class="comment-content"> <AFlex :vertical="true" class="comment-content">
<ATextarea :rows="4" class="comment-text" @focus="onFocusHandler" <ATextarea :rows="4" class="comment-text" @focus="onFocusHandler"
@@ -198,7 +198,7 @@ async function commentSubmit(point: any) {
const contentWithEmoji = content.replace(regex, (_match, p1) => { const contentWithEmoji = content.replace(regex, (_match, p1) => {
return `<img style="width: 30px; height: 30px;" loading="lazy" src="/emoji/qq/gif/${p1}" alt="emoji ${p1}" />`; return `<img style="width: 30px; height: 30px;" loading="lazy" src="/emoji/qq/gif/${p1}" alt="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) => { const contentWithLottieEmoji = contentWithEmoji.replace(regexWithLottieEmoji, (_match, p1) => {
return `<img style="width: 80px; height: 80px;" loading="lazy" src="/emoji/qq/lottie/${p1}" alt="emoji ${p1}" />`; return `<img style="width: 80px; height: 80px;" loading="lazy" src="/emoji/qq/lottie/${p1}" alt="emoji ${p1}" />`;
}); });

View File

@@ -11,7 +11,7 @@
<!-- 回复头像--> <!-- 回复头像-->
<AFlex :vertical="false" class="reply-input-content"> <AFlex :vertical="false" class="reply-input-content">
<AFlex :vertical="true" class="reply-input-avatar"> <AFlex :vertical="true" class="reply-input-avatar">
<AAvatar :size="40" shape="circle" src="https://api.multiavatar.com/landaiqing.svg"/> <AAvatar :size="40" shape="circle" :src="user.user.userInfo.avatar"/>
</AFlex> </AFlex>
<!-- 评论输入框 --> <!-- 评论输入框 -->
<AFlex :vertical="true" class="reply-input-content-text"> <AFlex :vertical="true" class="reply-input-content-text">

View File

@@ -13,7 +13,7 @@
<!-- 回复头像--> <!-- 回复头像-->
<AFlex :vertical="false" class="reply-input-content-child"> <AFlex :vertical="false" class="reply-input-content-child">
<AFlex :vertical="true" class="reply-input-avatar-child"> <AFlex :vertical="true" class="reply-input-avatar-child">
<AAvatar :size="40" shape="circle" src="https://api.multiavatar.com/landaiqing.svg"/> <AAvatar :size="40" shape="circle" :src="user.user.userInfo.avatar"/>
</AFlex> </AFlex>
<!-- 评论输入框 --> <!-- 评论输入框 -->
<AFlex :vertical="true" class="reply-input-content-text-child"> <AFlex :vertical="true" class="reply-input-content-text-child">

View File

@@ -10,6 +10,16 @@ export const useAuthStore = defineStore(
uid: '', uid: '',
refreshToken: '', refreshToken: '',
expiresAt: 0, expiresAt: 0,
userInfo: {
username: '',
nickname: '',
email: '',
phone: '',
avatar: '',
gender: '',
status: '',
created_at: '',
},
}); });
return { return {

View File

@@ -35,9 +35,7 @@ const {onAuthRequired, onResponseRefreshToken} = createServerTokenAuthentication
} else { } else {
message.error(i18n.global.t('error.loginExpired')); message.error(i18n.global.t('error.loginExpired'));
localStorage.removeItem('user'); localStorage.removeItem('user');
setTimeout(() => { window.location.href = '/login';
window.location.href = '/login';
}, 2000);
} }
} }
} }

View File

@@ -9,7 +9,10 @@ let isInit: boolean = false;
const initNSFWJs = async (): Promise<NSFWJS> => { const initNSFWJs = async (): Promise<NSFWJS> => {
tf.enableProdMode(); tf.enableProdMode();
if (!isInit) { 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"); await initialLoad.model.save("indexeddb://nsfwjs-model");
isInit = true; isInit = true;
} }
@@ -22,7 +25,6 @@ const initNSFWJs = async (): Promise<NSFWJS> => {
*/ */
const predictNSFW = async (model: NSFWJS, image: tf.Tensor3D | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement): Promise<boolean> => { const predictNSFW = async (model: NSFWJS, image: tf.Tensor3D | ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement): Promise<boolean> => {
const predictions = await model.classify(image, 5); const predictions = await model.classify(image, 5);
console.log(predictions);
// 定义阈值与对应的类别 // 定义阈值与对应的类别
const thresholds = { const thresholds = {
'Porn': 0.5, 'Porn': 0.5,

View File

@@ -114,11 +114,12 @@ function openGithubUrl() {
const data: any = JSON.parse(e.data); const data: any = JSON.parse(e.data);
if (data.code === 200 && data.data) { if (data.code === 200 && data.data) {
const user = useStore().user; 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.accessToken = access_token;
user.user.refreshToken = refresh_token; user.user.refreshToken = refresh_token;
user.user.uid = uid; user.user.uid = uid;
user.user.expiresAt = expires_at; user.user.expiresAt = expires_at;
user.user.userInfo = user_info;
await getUserDevice(uid); await getUserDevice(uid);
message.success(t('login.loginSuccess')); message.success(t('login.loginSuccess'));
window.removeEventListener("message", messageHandler); window.removeEventListener("message", messageHandler);
@@ -157,11 +158,12 @@ function openGiteeUrl() {
const data: any = JSON.parse(e.data); const data: any = JSON.parse(e.data);
if (data.code === 200 && data.data) { if (data.code === 200 && data.data) {
const user = useStore().user; 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.accessToken = access_token;
user.user.refreshToken = refresh_token; user.user.refreshToken = refresh_token;
user.user.uid = uid; user.user.uid = uid;
user.user.expiresAt = expires_at; user.user.expiresAt = expires_at;
user.user.userInfo = user_info;
await getUserDevice(uid); await getUserDevice(uid);
message.success(t('login.loginSuccess')); message.success(t('login.loginSuccess'));
window.removeEventListener("message", messageHandler); window.removeEventListener("message", messageHandler);
@@ -198,11 +200,12 @@ function openQQUrl() {
const data: any = JSON.parse(e.data); const data: any = JSON.parse(e.data);
if (data.code === 200 && data.data) { if (data.code === 200 && data.data) {
const user = useStore().user; 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.accessToken = access_token;
user.user.refreshToken = refresh_token; user.user.refreshToken = refresh_token;
user.user.uid = uid; user.user.uid = uid;
user.user.expiresAt = expires_at; user.user.expiresAt = expires_at;
user.user.userInfo = user_info;
await getUserDevice(uid); await getUserDevice(uid);
message.success(t('login.loginSuccess')); message.success(t('login.loginSuccess'));
window.removeEventListener("message", messageHandler); window.removeEventListener("message", messageHandler);

View File

@@ -377,13 +377,15 @@ async function phoneLoginSubmit() {
.validate() .validate()
.then(async () => { .then(async () => {
const res: any = await phoneLoginApi(phoneLoginForm); const res: any = await phoneLoginApi(phoneLoginForm);
console.log(res);
if (res.code === 200 && res.success) { if (res.code === 200 && res.success) {
const userStore = useStore().user; 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.uid = uid;
userStore.user.accessToken = access_token; userStore.user.accessToken = access_token;
userStore.user.refreshToken = refresh_token; userStore.user.refreshToken = refresh_token;
userStore.user.expiresAt = expires_at; userStore.user.expiresAt = expires_at;
userStore.user.userInfo = user_info;
message.success(t('login.loginSuccess')); message.success(t('login.loginSuccess'));
loginLoading.value = false; loginLoading.value = false;
setTimeout(() => { setTimeout(() => {
@@ -461,11 +463,12 @@ async function checkAccountLoginCaptcha(angle: number) {
const res: any = await accountLoginApi(params); const res: any = await accountLoginApi(params);
if (res.code === 200 && res.success) { if (res.code === 200 && res.success) {
const userStore = useStore().user; 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.uid = uid;
userStore.user.accessToken = access_token; userStore.user.accessToken = access_token;
userStore.user.refreshToken = refresh_token; userStore.user.refreshToken = refresh_token;
userStore.user.expiresAt = expires_at; userStore.user.expiresAt = expires_at;
userStore.user.userInfo = user_info;
message.success(t('login.loginSuccess')); message.success(t('login.loginSuccess'));
loginLoading.value = false; loginLoading.value = false;
showAccountRotateCaptcha.value = false; showAccountRotateCaptcha.value = false;

View File

@@ -131,11 +131,12 @@ async function handleListenMessage() {
websocket.on('message', async (data: any) => { websocket.on('message', async (data: any) => {
if (data.code === 200 && data.data) { if (data.code === 200 && data.data) {
const user = useStore().user; 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.accessToken = access_token;
user.user.refreshToken = refresh_token; user.user.refreshToken = refresh_token;
user.user.uid = uid; user.user.uid = uid;
user.user.expiresAt = expires_at; user.user.expiresAt = expires_at;
user.user.userInfo = user_info;
status.value = 'scanned'; status.value = 'scanned';
await getUserDevice(uid); await getUserDevice(uid);
message.success(t('login.loginSuccess')); message.success(t('login.loginSuccess'));

View File

@@ -115,11 +115,12 @@ function openGithubUrl() {
const data: any = JSON.parse(e.data); const data: any = JSON.parse(e.data);
if (data.code === 200 && data.data) { if (data.code === 200 && data.data) {
const user = useStore().user; 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.accessToken = access_token;
user.user.refreshToken = refresh_token; user.user.refreshToken = refresh_token;
user.user.uid = uid; user.user.uid = uid;
user.user.expiresAt = expires_at; user.user.expiresAt = expires_at;
user.user.userInfo = user_info;
await getUserDevice(uid); await getUserDevice(uid);
message.success(t('login.loginSuccess')); message.success(t('login.loginSuccess'));
window.removeEventListener("message", messageHandler); window.removeEventListener("message", messageHandler);
@@ -157,11 +158,12 @@ function openGiteeUrl() {
const data: any = JSON.parse(e.data); const data: any = JSON.parse(e.data);
if (data.code === 200 && data.data) { if (data.code === 200 && data.data) {
const user = useStore().user; 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.accessToken = access_token;
user.user.refreshToken = refresh_token; user.user.refreshToken = refresh_token;
user.user.uid = uid; user.user.uid = uid;
user.user.expiresAt = expires_at; user.user.expiresAt = expires_at;
user.user.userInfo = user_info;
await getUserDevice(uid); await getUserDevice(uid);
message.success(t('login.loginSuccess')); message.success(t('login.loginSuccess'));
window.removeEventListener("message", messageHandler); window.removeEventListener("message", messageHandler);
@@ -198,11 +200,12 @@ function openQQUrl() {
const data: any = JSON.parse(e.data); const data: any = JSON.parse(e.data);
if (data.code === 200 && data.data) { if (data.code === 200 && data.data) {
const user = useStore().user; 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.accessToken = access_token;
user.user.refreshToken = refresh_token; user.user.refreshToken = refresh_token;
user.user.uid = uid; user.user.uid = uid;
user.user.expiresAt = expires_at; user.user.expiresAt = expires_at;
user.user.userInfo = user_info;
await getUserDevice(uid); await getUserDevice(uid);
message.success(t('login.loginSuccess')); message.success(t('login.loginSuccess'));
window.removeEventListener("message", messageHandler); window.removeEventListener("message", messageHandler);

View File

@@ -45,6 +45,7 @@ export default defineConfig(({mode}: { mode: string }): object => {
}), }),
nodePolyfills(), nodePolyfills(),
viteCompression({ viteCompression({
filter: /\.(js|mjs|css|html)$/i, // 压缩的文件类型
verbose: true, // 是否在控制台中输出压缩结果 verbose: true, // 是否在控制台中输出压缩结果
disable: false, disable: false,
threshold: 10240, // 如果体积大于阈值将被压缩单位为b体积过小时请不要压缩以免适得其反 threshold: 10240, // 如果体积大于阈值将被压缩单位为b体积过小时请不要压缩以免适得其反
@@ -93,7 +94,7 @@ export default defineConfig(({mode}: { mode: string }): object => {
}, },
esbuild: { esbuild: {
// drop: ["console", "debugger"], drop: env.VITE_NODE_ENV === 'production' ? ['console', 'debugger'] : [],
}, },
build: { build: {
outDir: "dist", // 指定输出路径 outDir: "dist", // 指定输出路径