diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-22 04:24:38 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-22 04:24:38 +0900 |
| commit | ead931211c6783975d01928fa4636e42208689a1 (patch) | |
| tree | dd0567c8afe0a93998f04e8e5d64fdbc57c21470 /packages/frontend/src/scripts | |
| parent | update deps (diff) | |
| download | sharkey-ead931211c6783975d01928fa4636e42208689a1.tar.gz sharkey-ead931211c6783975d01928fa4636e42208689a1.tar.bz2 sharkey-ead931211c6783975d01928fa4636e42208689a1.zip | |
fix(client): 実績解除リクエストの間隔をあけるように
Fix #9674
Diffstat (limited to 'packages/frontend/src/scripts')
| -rw-r--r-- | packages/frontend/src/scripts/achievements.ts | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/packages/frontend/src/scripts/achievements.ts b/packages/frontend/src/scripts/achievements.ts index 8f484f8925..c97358e880 100644 --- a/packages/frontend/src/scripts/achievements.ts +++ b/packages/frontend/src/scripts/achievements.ts @@ -433,16 +433,22 @@ export const ACHIEVEMENT_BADGES = { export const claimedAchievements = ($i && $i.achievements) ? $i.achievements.map(x => x.name) : []; -export function claimAchievement(type: typeof ACHIEVEMENT_TYPES[number]) { +const claimingQueue = new Set<string>(); + +export async function claimAchievement(type: typeof ACHIEVEMENT_TYPES[number]) { if (claimedAchievements.includes(type)) return; - os.api('i/claim-achievement', { name: type }); + claimingQueue.add(type); claimedAchievements.push(type); + await new Promise(resolve => setTimeout(resolve, (claimingQueue.size - 1) * 500)); + window.setTimeout(() => { + claimingQueue.delete(type); + }, 500); + os.api('i/claim-achievement', { name: type }); } if (_DEV_) { - (window as any).unlockAllAchievements = async () => { + (window as any).unlockAllAchievements = () => { for (const t of ACHIEVEMENT_TYPES) { - await new Promise(resolve => setTimeout(resolve, 100)); claimAchievement(t); } }; |