forked from PluralFlux/PluralFlux
* Update dockerfile for standalone deployment (#23) * Add files via upload * Update Docker image for pluralflux service * removing unnecessary network and container name definitions --------- Co-authored-by: Aster Fialla <asterfialla@gmail.com> * Converting ES6 back to CJS (#25) converting back to cjs Co-authored-by: Aster Fialla <asterfialla@gmail.com> * Fix: Further converting ES6 to CJS - Making exports named instead of default (#26) * adding to git ignore * making imports named not default to not break all my tests * adjusted setup for memberhelper test --------- Co-authored-by: Aster Fialla <asterfialla@gmail.com> * feat: add db migrations with typeORM (#28) * adding typescript packages for typeORM * add typeORM initial files * updating package scripts * updating compose.yaml to have an exposed port for the postgres * modifying setup for typeORM * update database stuff and and package.json to help generate migrations * made models and migrations in typeORM * delete unneeded database.js * made database pattern ignored by jest * remove sequelize * separate member repo from member helper * not sure why i made everything numbers in the model but it's fixed now * edited package.json script * remove unused index.ts * adjusted files to reference repository correctly and appdatasource * made appdatasource export as named * removed start-db script * added init to appdatasource in bot.js * migrations finally! * new migration matching model names I want * updating tests * removing testpathignore patterns since it seems to be unecessary? * adjusting migrations to match current schema * removed reference to secrets file * delete old migration * Revert "delete old migration" This reverts commit db1efa39a7a80d8976878856250ccaac6a753ab2. * Revert "adjusting migrations to match current schema" This reverts commit ef89a83f6a2ef0643d6ace0a3fcf9c40f4bc6dd6. * just deleted system creation since it's got nothing in it anyway * renamed memberRepository to memberRepo for consistency * added await back to parseMemberCommand call to memberArgumentHandler * changed call to memberHelper.getMembersByAuthor to memberRepo * renamed repo updateMemberValue to updateMemberField * removed throw references in repo docstrings * remove unneeded subscriber directory ref * changed createdAt and updatedAt columns to be auto-generated made member table have timezone * changed casing of isInitialized in mock for bot.js * removed % from ILike query so that it doesn't match substrings/wildcard * renamed some stray updateMemberValue in mocks -> updateMemberField --------- Co-authored-by: Aster Fialla <asterfialla@gmail.com> * feat: Add migration to migrate existing data to new member table (#29) added migration to fill new Member table with data from Members Co-authored-by: Aster Fialla <asterfialla@gmail.com> * fix: update message helper reference hotfix (#30) * forgot to update a reference in messageHelper to memberRepo instead of memberHelper * turned off data-source logging --------- Co-authored-by: Aster Fialla <asterfialla@gmail.com> * fix: update dockerfile to run npm start (#31) fix: update dockerfile to run npm start (which runs ts-node) instead of node Co-authored-by: Aster Fialla <asterfialla@gmail.com> * added .env with examples, updated data-source to be access a docker container instead of relying on loopback * i forgot to git add data-source.ts 🤦 * fix: changed property reference for createMember in repo (#32) fix for createMember object references (was referencing non-existent properties) Co-authored-by: Aster Fialla <asterfialla@gmail.com> * fix: memberRepo methods syntax (#35) * rearranged update member field and remove member to match expected structure in typeORM * update docstring * change insert to save in memberRepo * added command in package.json --------- Co-authored-by: Aster Fialla <asterfialla@gmail.com> * Delete duplicate members migration (#33) * add migration to delete duplicates that currently exist in the db * added a name attribute for consistency --------- Co-authored-by: Aster Fialla <asterfialla@gmail.com> * Add unique index migration (#34) * add migration to delete duplicates that currently exist in the db * change model and migration to add a unique index constraint to id and name * renamed unique index name to be readable * redid model and migration to use @Unique instead of @Index * remove //Here comment --------- Co-authored-by: Aster Fialla <asterfialla@gmail.com> * why wont these workflows stay up gahdamn --------- Co-authored-by: Laika Bozhko <63646916+LaikaBzko@users.noreply.github.com> Co-authored-by: Aster Fialla <asterfialla@gmail.com> Co-authored-by: laika <laika@sanya.gay>
58 lines
1.8 KiB
JavaScript
58 lines
1.8 KiB
JavaScript
const {enums} = require('../enums');
|
|
|
|
const utils = {};
|
|
|
|
utils.debounce = function(func, delay) {
|
|
let timeout = null;
|
|
return function (...args) {
|
|
clearTimeout(timeout);
|
|
timeout = setTimeout(() => func(...args), delay);
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Checks if an uploaded picture is in the right format.
|
|
*
|
|
* @async
|
|
* @param {string} imageUrl - The url of the image
|
|
* @returns {bool} - Whether the image is in a valid format
|
|
* @throws {Error} When loading the profile picture from a URL doesn't work, or it fails requirements.
|
|
*/
|
|
utils.checkImageFormatValidity = async function (imageUrl) {
|
|
const acceptableImages = ['image/png', 'image/jpg', 'image/jpeg', 'image/webp'];
|
|
let response, blobFile;
|
|
try {
|
|
response = await fetch(imageUrl);
|
|
}
|
|
catch(e) {
|
|
throw new Error(`${enums.err.PROPIC_CANNOT_LOAD}: ${e.message}`);
|
|
}
|
|
|
|
blobFile = await response.blob();
|
|
if (blobFile.size > 10000000 || !acceptableImages.includes(blobFile.type)) throw new Error(enums.err.PROPIC_FAILS_REQUIREMENTS);
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Sets the warning that a Fluxer-uploaded image will expire.
|
|
*
|
|
* @param {string | null} [imgUrl] - An image URL.
|
|
* @param {string | null} [expirationString] - An expiration date string.
|
|
* @returns {string | null} A description of the expiration, or null.
|
|
*/
|
|
utils.setExpirationWarning = function (imgUrl = null, expirationString = null) {
|
|
if (imgUrl && imgUrl.startsWith(enums.misc.FLUXER_ATTACHMENT_URL)) {
|
|
return enums.misc.ATTACHMENT_EXPIRATION_WARNING;
|
|
}
|
|
else if (expirationString) {
|
|
let expirationDate = new Date(expirationString);
|
|
if (!isNaN(expirationDate.valueOf())) {
|
|
return `${enums.misc.ATTACHMENT_EXPIRATION_WARNING}. Expiration date: *${expirationString}*.`;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
module.exports.utils = utils;
|