feat: 添加剪贴板功能,更新用户信息展示,优化用户设置界面
This commit is contained in:
16
src/composables/useColipboard.ts
Normal file
16
src/composables/useColipboard.ts
Normal 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,
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user