adding debounce

This commit is contained in:
Aster Fialla
2026-02-23 08:47:27 -05:00
parent 264c3e19fd
commit 1d27db960c
6 changed files with 17 additions and 11 deletions

View File

@@ -70,9 +70,10 @@ function printGuilds() {
} }
const debouncePrintGuilds = utils.debounce(printGuilds, 2000); const debouncePrintGuilds = utils.debounce(printGuilds, 2000);
const debounceLogin = utils.debounce(client.login, 60000);
try { try {
await client.login(token); await debounceLogin(token);
// await db.check_connection(); // await db.check_connection();
} catch (err) { } catch (err) {
console.error('Login failed:', err); console.error('Login failed:', err);

View File

@@ -54,7 +54,7 @@ cmds.set('import', {
if ((message.content.includes('--help') || (args[0] === '' && args.length === 1)) && !attachmentUrl ) { if ((message.content.includes('--help') || (args[0] === '' && args.length === 1)) && !attachmentUrl ) {
return await message.reply(enums.help.IMPORT); return await message.reply(enums.help.IMPORT);
} }
return await importHelper.pluralKitImport(message.author.id, attachmentUrl).then(async (successfullyAdded) => { return await importHelper.debounceImport(message.author.id, attachmentUrl).then(async (successfullyAdded) => {
await message.reply(successfullyAdded); await message.reply(successfullyAdded);
}).catch(async (error) => { }).catch(async (error) => {
if (error instanceof AggregateError) { if (error instanceof AggregateError) {

View File

@@ -1,5 +1,6 @@
import {enums} from "../enums.js"; import {enums} from "../enums.js";
import {memberHelper} from "./memberHelper.js"; import {memberHelper} from "./memberHelper.js";
import {utils} from "./utils.js";
const ih = {}; const ih = {};
@@ -40,4 +41,6 @@ ih.pluralKitImport = async function (authorId, attachmentUrl) {
}); });
} }
ih.debounceImport = utils.debounce(ih.pluralKitImport, 5000);
export const importHelper = ih; export const importHelper = ih;

View File

@@ -296,7 +296,7 @@ mh.updateProxy = async function (authorId, memberName, proxy) {
mh.updatePropic = async function (authorId, memberName, values, attachmentUrl = null, attachmentExpiration = null) { mh.updatePropic = async function (authorId, memberName, values, attachmentUrl = null, attachmentExpiration = null) {
const imgUrl = values ?? attachmentUrl; const imgUrl = values ?? attachmentUrl;
// Throws error if invalid // Throws error if invalid
await utils.checkImageFormatValidity(imgUrl).catch((e) => { throw e }); await utils.debounceCheckImageFormat(imgUrl).catch((e) => { throw e });
return await mh.updateMemberField(authorId, memberName, "propic", imgUrl, attachmentExpiration).catch((e) => { throw e }); return await mh.updateMemberField(authorId, memberName, "propic", imgUrl, attachmentExpiration).catch((e) => { throw e });
} }
@@ -381,7 +381,7 @@ mh.addFullMember = async function (authorId, memberName, displayName = null, pro
let isValidPropic; let isValidPropic;
if (propic && propic.length > 0) { if (propic && propic.length > 0) {
await utils.checkImageFormatValidity(propic).then(() => { await utils.debounceCheckImageFormat(propic).then(() => {
isValidPropic = true; isValidPropic = true;
}).catch((e) => { }).catch((e) => {
errors.push(`Tried to set profile picture to \"${propic}\". ${e.message}. ${enums.err.SET_TO_NULL}`); errors.push(`Tried to set profile picture to \"${propic}\". ${e.message}. ${enums.err.SET_TO_NULL}`);

View File

@@ -26,4 +26,6 @@ u.checkImageFormatValidity = async function (imageUrl) {
}); });
} }
u.debounceCheckImageFormat = u.debounce(u.checkImageFormatValidity, 60000);
export const utils = u; export const utils = u;

View File

@@ -20,7 +20,7 @@ jest.mock("../../src/helpers/utils.js", () => {
return { return {
utils: utils:
{ {
checkImageFormatValidity: jest.fn().mockResolvedValue(), debounceCheckImageFormat: jest.fn().mockResolvedValue(),
} }
} }
}); });
@@ -476,15 +476,15 @@ describe('MemberHelper', () => {
[mockMember.propic, null, null, mockMember.propic], [mockMember.propic, null, null, mockMember.propic],
[mockMember.propic, attachmentUrl, null, attachmentUrl], [mockMember.propic, attachmentUrl, null, attachmentUrl],
[null, attachmentUrl, attachmentExpiration, attachmentUrl] [null, attachmentUrl, attachmentExpiration, attachmentUrl]
])('calls checkImageFormatValidity and updateMemberField and returns string', async(imgUrl, attachmentUrl, attachmentExpiration, expected) => { ])('calls debounceCheckImageFormat and updateMemberField and returns string', async(imgUrl, attachmentUrl, attachmentExpiration, expected) => {
// Arrange // Arrange
jest.spyOn(memberHelper, 'updateMemberField').mockResolvedValue("Updated"); jest.spyOn(memberHelper, 'updateMemberField').mockResolvedValue("Updated");
// Act // Act
return memberHelper.updatePropic(authorId, mockMember.name, imgUrl, attachmentUrl, attachmentExpiration).then((result) => { return memberHelper.updatePropic(authorId, mockMember.name, imgUrl, attachmentUrl, attachmentExpiration).then((result) => {
expect(result).toEqual("Updated"); expect(result).toEqual("Updated");
expect(utils.checkImageFormatValidity).toHaveBeenCalledTimes(1); expect(utils.debounceCheckImageFormat).toHaveBeenCalledTimes(1);
expect(utils.checkImageFormatValidity).toHaveBeenCalledWith(expected); expect(utils.debounceCheckImageFormat).toHaveBeenCalledWith(expected);
expect(memberHelper.updateMemberField).toHaveBeenCalledTimes(1); expect(memberHelper.updateMemberField).toHaveBeenCalledTimes(1);
expect(memberHelper.updateMemberField).toHaveBeenCalledWith(authorId, mockMember.name, "propic", expected, attachmentExpiration); expect(memberHelper.updateMemberField).toHaveBeenCalledWith(authorId, mockMember.name, "propic", expected, attachmentExpiration);
}); });
@@ -603,7 +603,7 @@ describe('MemberHelper', () => {
}) })
}) })
test('if propic, call checkImageFormatValidity', async () => { test('if propic, call debounceCheckImageFormat', async () => {
// Arrange // Arrange
const expectedMemberArgs = { const expectedMemberArgs = {
name: mockMember.name, name: mockMember.name,
@@ -618,8 +618,8 @@ describe('MemberHelper', () => {
return await memberHelper.addFullMember(authorId, mockMember.name, null, null, mockMember.propic).then((res) => { return await memberHelper.addFullMember(authorId, mockMember.name, null, null, mockMember.propic).then((res) => {
// Assert // Assert
expect(res).toEqual(expectedReturn); expect(res).toEqual(expectedReturn);
expect(utils.checkImageFormatValidity).toHaveBeenCalledWith(mockMember.propic); expect(utils.debounceCheckImageFormat).toHaveBeenCalledWith(mockMember.propic);
expect(utils.checkImageFormatValidity).toHaveBeenCalledTimes(1); expect(utils.debounceCheckImageFormat).toHaveBeenCalledTimes(1);
expect(database.members.create).toHaveBeenCalledWith(expectedMemberArgs); expect(database.members.create).toHaveBeenCalledWith(expectedMemberArgs);
expect(database.members.create).toHaveBeenCalledTimes(1); expect(database.members.create).toHaveBeenCalledTimes(1);
}) })