forked from PluralFlux/PluralFlux
adding debounce
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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;
|
||||||
@@ -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}`);
|
||||||
|
|||||||
@@ -26,4 +26,6 @@ u.checkImageFormatValidity = async function (imageUrl) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u.debounceCheckImageFormat = u.debounce(u.checkImageFormatValidity, 60000);
|
||||||
|
|
||||||
export const utils = u;
|
export const utils = u;
|
||||||
|
|||||||
@@ -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);
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user