summaryrefslogtreecommitdiff
path: root/packages/frontend/src/scripts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-01-22 04:24:38 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-01-22 04:24:38 +0900
commitead931211c6783975d01928fa4636e42208689a1 (patch)
treedd0567c8afe0a93998f04e8e5d64fdbc57c21470 /packages/frontend/src/scripts
parentupdate deps (diff)
downloadsharkey-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.ts14
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);
}
};