feat: 添加 vue-sonner,优化反馈

This commit is contained in:
2026-05-23 14:37:53 +08:00
parent 7d68db723b
commit e317e117d9
9 changed files with 141 additions and 12 deletions
+11
View File
@@ -1,5 +1,6 @@
// app/stores/auth.ts - 用户登录状态管理
import { defineStore } from "pinia";
import { toast } from "vue-sonner";
import { authClient } from "@/utils/auth";
@@ -79,6 +80,7 @@ export const useAuthStore = defineStore("auth", () => {
const result = await authClient.signIn.email({ email, password });
if (result.error) {
error.value = "邮箱或密码错误";
toast.error(error.value);
return false;
}
// 直接使用登录响应中的用户数据,无需重复请求 get-session
@@ -87,9 +89,11 @@ export const useAuthStore = defineStore("auth", () => {
result.data.user as Parameters<typeof _setUserFromResult>[0]
);
}
toast.success("登录成功");
return true;
} catch {
error.value = "登录失败,请重试";
toast.error(error.value);
return false;
} finally {
loading.value = false;
@@ -104,6 +108,7 @@ export const useAuthStore = defineStore("auth", () => {
const result = await authClient.signUp.email({ name, email, password });
if (result.error) {
error.value = "注册失败,邮箱可能已被使用";
toast.error(error.value);
return false;
}
if (result.data?.user) {
@@ -111,9 +116,11 @@ export const useAuthStore = defineStore("auth", () => {
result.data.user as Parameters<typeof _setUserFromResult>[0]
);
}
toast.success("注册成功");
return true;
} catch {
error.value = "注册失败,请重试";
toast.error(error.value);
return false;
} finally {
loading.value = false;
@@ -125,6 +132,7 @@ export const useAuthStore = defineStore("auth", () => {
await authClient.signOut();
user.value = null;
initialized.value = false;
toast.success("已退出登录");
};
/** 刷新当前用户的 apiToken;成功后同步更新 store */
@@ -139,12 +147,15 @@ export const useAuthStore = defineStore("auth", () => {
}>("/api/user/refresh-token", { method: "POST" });
if (res.code === 0 && res.data?.apiToken && user.value) {
user.value = { ...user.value, apiToken: res.data.apiToken };
toast.success("Token 已刷新");
return true;
}
error.value = res.msg || "刷新失败";
toast.error(error.value);
return false;
} catch {
error.value = "刷新失败,请重试";
toast.error(error.value);
return false;
} finally {
loading.value = false;