/** * Author: Rymera Web Co * * @package Svelte_WP_Plugin_Boilerplate */ import { isRef, Ref } from 'vue'; import { TStatusEnum } from '@/types'; import purify from 'dompurify'; export enum StatusEnum { PENDING = 'pending', IDLE = 'idle', REJECTED = 'rejected', FULFILLED = 'fulfilled', } /** * Generate a random string. * * @param {number} length */ export const generateRandomId = (length: number = 5): string => { length = length < 4 ? 4 : length > 8 ? 8 : length; return Math.random() .toString(36) .substring(2, 2 + length); }; /** * Sets status ref of request to idle after 1 second. * @param {Ref} status * @param {any} response */ export const setRequestStatus = (status: Ref, response: any = null) => { if (!isRef(status)) { return; } if (response == null) { status.value = StatusEnum.PENDING; } else if (response?.data != null) { status.value = StatusEnum.FULFILLED; } else if (response?.error != null) { status.value = StatusEnum.REJECTED; } setTimeout(() => { status.value = StatusEnum.IDLE; }, Math.floor((1000 / 3) * 2)); }; /** * Helper function to get adtObj from window as it seems, `