feat: 添加剪贴板功能,更新用户信息展示,优化用户设置界面

This commit is contained in:
2025-12-21 05:00:00 +07:00
parent 7dfc125f66
commit c76933a62a
8 changed files with 60 additions and 15 deletions

View File

@@ -0,0 +1,16 @@
import { Clipboard } from "@capacitor/clipboard";
export function useClipboard() {
function writeText(text: string): Promise<void> {
return Clipboard.write({ string: text });
}
function readText() {
return Clipboard.read().then(result => result);
}
return {
writeText,
readText,
};
}

View File

@@ -1,6 +1,5 @@
import type { UserData, UserProfileData } from "@/api/types";
import { client, safeClient } from "@/api";
import { authClient } from "@/auth";
interface State {
user: UserData | null;

View File

@@ -17,6 +17,7 @@ async function handleSignInEmail(value: EmailVerifyClient) {
});
if (data?.token) {
userStore.setToken(data.token);
userStore.updateProfile();
useNavigateToRedirect(route.query.redirect as string);
}
}
@@ -29,6 +30,7 @@ async function handleSignInPhoneNumber(value: PhoneNumberVerifyClient) {
});
if (data?.token) {
userStore.setToken(data.token);
userStore.updateProfile();
useNavigateToRedirect(route.query.redirect as string);
}
}

View File

@@ -1,5 +1,5 @@
<script lang='ts' setup>
import { alertController } from "@ionic/vue";
import { alertController, toastController } from "@ionic/vue";
import { arrowBackOutline } from "ionicons/icons";
import TdesignCopy from "~icons/tdesign/copy";
import { authClient } from "@/auth";
@@ -31,6 +31,21 @@ async function handleSignOut() {
await alert.present();
}
const { writeText } = useClipboard();
function handleCopyUid() {
if (userProfile.value?.uid) {
writeText(userProfile.value.uid);
toastController
.create({
message: "UID copied to clipboard",
duration: 2000,
position: "bottom",
})
.then(toast => toast.present());
}
}
</script>
<template>
@@ -62,8 +77,8 @@ async function handleSignOut() {
UID
</div>
</div>
<div class="end">
<div>54213213</div>
<div class="end" @click="handleCopyUid">
<div>{{ userProfile?.uid }}</div>
<TdesignCopy />
</div>
</div>

View File

@@ -2,7 +2,7 @@
import { chevronForwardOutline, copyOutline, qrCodeOutline } from "ionicons/icons";
const userStore = useUserStore();
const { user } = storeToRefs(userStore);
const { user, userProfile } = storeToRefs(userStore);
</script>
<template>
@@ -14,7 +14,7 @@ const { user } = storeToRefs(userStore);
{{ user?.email }}
</div>
<div class="user-uid mt-1 text-xs text-text-100">
UID: 95223143
UID: {{ userProfile?.uid }}
</div>
</div>
</div>