From e053528abf0430f65c6ad99896c600d19c46e6cb Mon Sep 17 00:00:00 2001 From: MaysWind Date: Tue, 21 Jan 2025 23:38:06 +0800 Subject: [PATCH] migrate session list page /user security page to composition API and typescript --- src/models/token.ts | 2 +- src/stores/index.ts | 13 +- .../settings/tabs/UserBasicSettingTab.vue | 4 +- .../settings/tabs/UserSecuritySettingTab.vue | 435 +++++++++--------- src/views/mobile/users/SessionListPage.vue | 311 +++++++------ src/views/mobile/users/UserProfilePage.vue | 5 +- 6 files changed, 397 insertions(+), 373 deletions(-) diff --git a/src/models/token.ts b/src/models/token.ts index c3875a9f..c716cabd 100644 --- a/src/models/token.ts +++ b/src/models/token.ts @@ -25,7 +25,7 @@ export class SessionInfo { public readonly createdByCli: boolean; public readonly lastSeen: number; - private constructor(tokenId: string, isCurrent: boolean, deviceType: string, deviceInfo: string, createdByCli: boolean, lastSeen: number) { + protected constructor(tokenId: string, isCurrent: boolean, deviceType: string, deviceInfo: string, createdByCli: boolean, lastSeen: number) { this.tokenId = tokenId; this.isCurrent = isCurrent; this.deviceType = deviceType; diff --git a/src/stores/index.ts b/src/stores/index.ts index cf9e7fdb..95ad80f1 100644 --- a/src/stores/index.ts +++ b/src/stores/index.ts @@ -16,7 +16,14 @@ import { useStatisticsStore } from './statistics.js'; import { useExchangeRatesStore } from './exchangeRates.ts'; import type { AuthResponse, RegisterResponse } from '@/models/auth_response.ts'; -import type { User, UserLoginRequest, UserResendVerifyEmailRequest, UserVerifyEmailResponse, UserProfileUpdateResponse } from '@/models/user.ts'; +import type { + User, + UserLoginRequest, + UserResendVerifyEmailRequest, + UserVerifyEmailResponse, + UserProfileUpdateRequest, + UserProfileUpdateResponse +} from '@/models/user.ts'; import type { LocalizedPresetCategory } from '@/core/category.ts'; import type { ForgetPasswordRequest } from '@/models/forget_password.ts'; @@ -370,9 +377,9 @@ export const useRootStore = defineStore('root', () => { }); } - function updateUserProfile({ profile, currentPassword }: { profile: User, currentPassword?: string }): Promise { + function updateUserProfile(req: UserProfileUpdateRequest): Promise { return new Promise((resolve, reject) => { - services.updateProfile(profile.toProfileUpdateRequest(currentPassword)).then(response => { + services.updateProfile(req).then(response => { const data = response.data; if (!data || !data.success || !data.result) { diff --git a/src/views/desktop/user/settings/tabs/UserBasicSettingTab.vue b/src/views/desktop/user/settings/tabs/UserBasicSettingTab.vue index bd4a3529..f5983663 100644 --- a/src/views/desktop/user/settings/tabs/UserBasicSettingTab.vue +++ b/src/views/desktop/user/settings/tabs/UserBasicSettingTab.vue @@ -451,9 +451,7 @@ function save(): void { saving.value = true; - rootStore.updateUserProfile({ - profile: newProfile.value - }).then(response => { + rootStore.updateUserProfile(newProfile.value.toProfileUpdateRequest()).then(response => { saving.value = false; doAfterProfileUpdate(response.user); diff --git a/src/views/desktop/user/settings/tabs/UserSecuritySettingTab.vue b/src/views/desktop/user/settings/tabs/UserSecuritySettingTab.vue index 12e53ab9..715ae301 100644 --- a/src/views/desktop/user/settings/tabs/UserSecuritySettingTab.vue +++ b/src/views/desktop/user/settings/tabs/UserSecuritySettingTab.vue @@ -1,10 +1,10 @@ - diff --git a/src/views/mobile/users/SessionListPage.vue b/src/views/mobile/users/SessionListPage.vue index 38e9fda4..87ba9565 100644 --- a/src/views/mobile/users/SessionListPage.vue +++ b/src/views/mobile/users/SessionListPage.vue @@ -1,10 +1,10 @@ - + - diff --git a/src/views/mobile/users/UserProfilePage.vue b/src/views/mobile/users/UserProfilePage.vue index 79c0dc2e..0fe6e6fd 100644 --- a/src/views/mobile/users/UserProfilePage.vue +++ b/src/views/mobile/users/UserProfilePage.vue @@ -456,10 +456,7 @@ function save(): void { saving.value = true; showLoading(() => saving.value); - rootStore.updateUserProfile({ - profile: newProfile.value, - currentPassword: currentPassword.value - }).then(response => { + rootStore.updateUserProfile(newProfile.value.toProfileUpdateRequest(currentPassword.value)).then(response => { saving.value = false; hideLoading(); currentPassword.value = '';