mirror of
https://github.com/ZeppelinBot/Zeppelin.git
synced 2025-05-11 04:45:02 +00:00
Tweaks to !server numbers. Try to prevent unnecessary API calls.
!server can now also use numbers from the invite of servers with a vanity URL. API calls for the invite and the REST guild endpoint are now memoized. Since Guild.fetchAllMembers() now returns a promise, tweaked refreshMembersIfNeeded() to not make unnecessary API calls if called multiple times in rapid succession.
This commit is contained in:
parent
ba647c69ce
commit
6a5e71d7c1
2 changed files with 61 additions and 9 deletions
|
@ -1049,3 +1049,30 @@ const formatter = new Intl.NumberFormat("en-US");
|
|||
export function formatNumber(numberToFormat: number): string {
|
||||
return formatter.format(numberToFormat);
|
||||
}
|
||||
|
||||
interface IMemoizedItem {
|
||||
createdAt: number;
|
||||
value: any;
|
||||
}
|
||||
|
||||
const memoizeCache: Map<any, IMemoizedItem> = new Map();
|
||||
export function memoize<T>(fn: (...args: any[]) => T, key?, time?): T {
|
||||
const realKey = key ?? fn;
|
||||
|
||||
if (memoizeCache.has(realKey)) {
|
||||
const memoizedItem = memoizeCache.get(realKey);
|
||||
if (!time || memoizedItem.createdAt > Date.now() - time) {
|
||||
return memoizedItem.value;
|
||||
}
|
||||
|
||||
memoizeCache.delete(realKey);
|
||||
}
|
||||
|
||||
const value = fn();
|
||||
memoizeCache.set(realKey, {
|
||||
createdAt: Date.now(),
|
||||
value,
|
||||
});
|
||||
|
||||
return value;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue