diff --git a/AquaNet/src/components/GameSettingFields.svelte b/AquaNet/src/components/GameSettingFields.svelte index 895c1d81..84ed5f21 100644 --- a/AquaNet/src/components/GameSettingFields.svelte +++ b/AquaNet/src/components/GameSettingFields.svelte @@ -21,26 +21,24 @@ } -
-
- {#each gameFields as field} -
- {#if field.type === "Boolean"} -
- submitGameOption(field.key, field.value)}/> - -
- {/if} -
- {/each} -
+
+ {#each gameFields as field} +
+ {#if field.type === "Boolean"} +
+ submitGameOption(field.key, field.value)}/> + +
+ {/if} +
+ {/each} +
- -
+ diff --git a/AquaNet/src/components/WaccaSettings.svelte b/AquaNet/src/components/WaccaSettings.svelte index a1cfe083..1cd62380 100644 --- a/AquaNet/src/components/WaccaSettings.svelte +++ b/AquaNet/src/components/WaccaSettings.svelte @@ -4,8 +4,6 @@ import GameSettingFields from "./GameSettingFields.svelte"; -
-
- -
-
+
+ +
diff --git a/AquaNet/src/libs/i18n/en_ref.ts b/AquaNet/src/libs/i18n/en_ref.ts index 2d7a5bb3..957425d7 100644 --- a/AquaNet/src/libs/i18n/en_ref.ts +++ b/AquaNet/src/libs/i18n/en_ref.ts @@ -141,6 +141,7 @@ export const EN_REF_SETTINGS = { 'settings.profile.bio': 'Bio', 'settings.profile.unset': 'Unset', 'settings.profile.unchanged': 'Unchanged', + 'settings.export': 'Export Player Data', } export const EN_REF_USERBOX = { diff --git a/AquaNet/src/libs/i18n/zh.ts b/AquaNet/src/libs/i18n/zh.ts index 873aa8ce..ea0dccd0 100644 --- a/AquaNet/src/libs/i18n/zh.ts +++ b/AquaNet/src/libs/i18n/zh.ts @@ -150,6 +150,7 @@ const zhSettings: typeof EN_REF_SETTINGS = { 'settings.profile.bio': '简介', 'settings.profile.unset': '未设置', 'settings.profile.unchanged': '未更改', + 'settings.export': '导出玩家数据', } export const ZH = { ...zhUser, ...zhWelcome, ...zhGeneral, diff --git a/AquaNet/src/libs/sdk.ts b/AquaNet/src/libs/sdk.ts index 3a456206..041e7ed0 100644 --- a/AquaNet/src/libs/sdk.ts +++ b/AquaNet/src/libs/sdk.ts @@ -46,7 +46,7 @@ export function fetchWithParams(input: URL | RequestInfo, init?: RequestInitWith const cache: { [index: string]: any } = {} -export async function post(endpoint: string, params: any, init?: RequestInitWithParams): Promise { +export async function post(endpoint: string, params: Record = {}, init?: RequestInitWithParams): Promise { // Add token if exists const token = localStorage.getItem('token') if (token && !('token' in params)) params = { ...(params ?? {}), token } @@ -301,6 +301,8 @@ export const GAME = { post(`/api/v2/game/${game}/ranking`, { }), changeName: (game: GameName, newName: string): Promise<{ newName: string }> => post(`/api/v2/game/${game}/change-name`, { newName }), + export: (game: GameName): Promise> => + post(`/api/v2/game/${game}/export`), } export const DATA = { diff --git a/src/main/java/icu/samnyan/aqua/net/games/ImportController.kt b/src/main/java/icu/samnyan/aqua/net/games/ImportController.kt index f44ff0d9..1156eaeb 100644 --- a/src/main/java/icu/samnyan/aqua/net/games/ImportController.kt +++ b/src/main/java/icu/samnyan/aqua/net/games/ImportController.kt @@ -108,11 +108,11 @@ abstract class ImportController, UserModel: // Check existing data userDataRepo.findByCard(u.ghostCard)?.also { gu -> // Store a backup of the old data - val fl = "mai2-backup-${u.auId}-${LocalDateTime.now().urlSafeStr()}.json" + val fl = "${game}-backup-${u.auId}-${LocalDateTime.now().urlSafeStr()}.json" (Path(netProps.importBackupPath) / fl).writeText(export(u).toJson()) // Delete the old data (After migration v1000.7, all user-linked entities have ON DELETE CASCADE) - log.info("Mai2 Import: Deleting old data for user ${u.auId}") + log.info("$game Import: Deleting old data for user ${u.auId}") userDataRepo.delete(gu) userDataRepo.flush() }