✨ update
This commit is contained in:
@@ -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}" />`;
|
||||||
});
|
});
|
||||||
|
@@ -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">
|
||||||
|
@@ -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">
|
||||||
|
@@ -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 {
|
||||||
|
@@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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,
|
||||||
|
@@ -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);
|
||||||
|
@@ -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;
|
||||||
|
@@ -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'));
|
||||||
|
@@ -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);
|
||||||
|
@@ -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", // 指定输出路径
|
||||||
|
Reference in New Issue
Block a user