diff --git a/AquaNet/src/libs/generalTypes.ts b/AquaNet/src/libs/generalTypes.ts index 60b90026..5c6535d4 100644 --- a/AquaNet/src/libs/generalTypes.ts +++ b/AquaNet/src/libs/generalTypes.ts @@ -99,6 +99,7 @@ export interface GenericGameSummary { lastVersion: string ratingComposition: { [key: string]: any } recent: GenericGamePlaylog[] + rival?: boolean } export interface MusicMeta { diff --git a/AquaNet/src/libs/i18n/en_ref.ts b/AquaNet/src/libs/i18n/en_ref.ts index c34fbda8..aab83acc 100644 --- a/AquaNet/src/libs/i18n/en_ref.ts +++ b/AquaNet/src/libs/i18n/en_ref.ts @@ -24,6 +24,8 @@ export const EN_REF_USER = { 'UserHome.RankDetail.Title': 'Achievement Details', 'UserHome.RankDetail.Level': 'Level', 'UserHome.B50': 'B50', + 'UserHome.AddRival': "Add to Rival", + 'UserHome.RemoveRival': "Remove from Rival", } export const EN_REF_Welcome = { diff --git a/AquaNet/src/libs/i18n/zh.ts b/AquaNet/src/libs/i18n/zh.ts index a33ef8fd..1085c142 100644 --- a/AquaNet/src/libs/i18n/zh.ts +++ b/AquaNet/src/libs/i18n/zh.ts @@ -33,6 +33,8 @@ const zhUser: typeof EN_REF_USER = { 'UserHome.RankDetail.Title': '评分详细', 'UserHome.RankDetail.Level': "等级", 'UserHome.B50': "B50", + 'UserHome.AddRival': "添加劲敌", + 'UserHome.RemoveRival': "移除劲敌", } const zhWelcome: typeof EN_REF_Welcome = { diff --git a/AquaNet/src/libs/sdk.ts b/AquaNet/src/libs/sdk.ts index 8c11293b..4b08c481 100644 --- a/AquaNet/src/libs/sdk.ts +++ b/AquaNet/src/libs/sdk.ts @@ -305,6 +305,8 @@ export const GAME = { post(`/api/v2/game/${game}/export`), import: (game: GameName, data: any): Promise> => post(`/api/v2/game/${game}/import`, {}, { body: JSON.stringify(data) }), + setRival: (game: GameName, rivalUserName: string, isAdd: boolean) => + post(`/api/v2/game/${game}/set-rival`, { rivalUserName, isAdd }), } export const DATA = { diff --git a/AquaNet/src/pages/UserHome.svelte b/AquaNet/src/pages/UserHome.svelte index 6bc62509..d32aed43 100644 --- a/AquaNet/src/pages/UserHome.svelte +++ b/AquaNet/src/pages/UserHome.svelte @@ -47,6 +47,7 @@ let allMusics: AllMusic let showDetailRank = false + let isLoading = false USER.isLoggedIn() && USER.me().then(u => me = u) @@ -90,6 +91,13 @@ }) }).catch((e) => error = e.message); }).catch((e) => { error = e.message; console.error(e) } ); + + const setRival = (isAdd: boolean) => { + isLoading = true + GAME.setRival(game, username, isAdd).then(() => { + d!.user.rival = isAdd + }).catch(e => error = e.message).finally(() => isLoading = false) + }
@@ -98,6 +106,11 @@

{d.user.name}

+ {#if typeof d.user.rival === 'boolean' && game === 'mai2'} + setRival(!d.user.rival)}> + {d.user.rival ? t("UserHome.RemoveRival") : t("UserHome.AddRival")} + + {/if} {#if me && me.username === username} @@ -267,7 +280,7 @@
{/if} - +