47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
// eslint-disable-next-line no-unused-vars
|
|
export const throttle = (func: (...args: any[]) => void, limit: number) => {
|
|
let lastFunc: any;
|
|
let lastRan: number;
|
|
return function (this: any, ...args: any[]) {
|
|
if (!lastRan) {
|
|
func.apply(this, args);
|
|
lastRan = Date.now();
|
|
} else {
|
|
clearTimeout(lastFunc);
|
|
lastFunc = setTimeout(
|
|
() => {
|
|
if (Date.now() - lastRan >= limit) {
|
|
func.apply(this, args);
|
|
lastRan = Date.now();
|
|
}
|
|
},
|
|
limit - (Date.now() - lastRan)
|
|
);
|
|
}
|
|
};
|
|
};
|
|
|
|
export const jsonToQueryParams = (json: any) => {
|
|
const params = new URLSearchParams();
|
|
|
|
for (const key in json) {
|
|
if (json.hasOwnProperty(key)) {
|
|
params.append(key, json[key]);
|
|
}
|
|
}
|
|
|
|
return params.toString();
|
|
};
|
|
|
|
|
|
export const ApplicationFileDownloadUrl = (API_URL: any, token: any, fileName: any) => {
|
|
return `${API_URL}/application/file/download?name=${fileName}&token=${token}`;
|
|
}
|
|
|
|
export const getFileExtension = (filename: string): string | null => {
|
|
const lastDotIndex = filename.lastIndexOf('.');
|
|
if (lastDotIndex === -1 || lastDotIndex === 0 || lastDotIndex === filename.length - 1) {
|
|
return null; // No extension found or invalid format
|
|
}
|
|
return filename.substring(lastDotIndex + 1);
|
|
} |