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">
<AFlex :vertical="false">
<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 :vertical="true" class="comment-content">
<ATextarea :rows="4" class="comment-text" @focus="onFocusHandler"
@@ -198,7 +198,7 @@ async function commentSubmit(point: any) {
const contentWithEmoji = content.replace(regex, (_match, 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) => {
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="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 :vertical="true" class="reply-input-content-text">

View File

@@ -13,7 +13,7 @@
<!-- 回复头像-->
<AFlex :vertical="false" class="reply-input-content-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 :vertical="true" class="reply-input-content-text-child">

View File

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

View File

@@ -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';
}
}
}

View File

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

View File

@@ -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);

View File

@@ -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;

View File

@@ -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'));

View File

@@ -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);

View File

@@ -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", // 指定输出路径