diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-22 04:28:55 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-22 04:28:55 +0900 |
| commit | 31dcf713ccefd858ecafc7982893bffb869b63de (patch) | |
| tree | 627b16ec4463c9a518da7ee92223cdf3dfb25cfe /packages/frontend/src/scripts | |
| parent | Merge branch 'develop' (diff) | |
| parent | 13.1.1 (diff) | |
| download | misskey-31dcf713ccefd858ecafc7982893bffb869b63de.tar.gz misskey-31dcf713ccefd858ecafc7982893bffb869b63de.tar.bz2 misskey-31dcf713ccefd858ecafc7982893bffb869b63de.zip | |
Merge branch 'develop'
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); } }; |