UNPKG

@dechains/cra-template-dapp

Version:

Create react app template with notification system, etherium wallet integration, MUI5 integration and other necessary packages required for base dApp development in REACTJS

69 lines (61 loc) 2.07 kB
import { getType, Type } from "tst-reflect"; export const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); /** * @reflect */ export function getDefaultValues<T>(objType: Type | undefined = undefined) { let obj: { [key: string | number | symbol]: any } = {}; objType = objType ?? getType<T>(); objType.getProperties().forEach((prop) => { if (prop.type.isString()) { obj[prop.name] = ""; } else if (prop.type.isNumber() || prop.type.isEnum()) { obj[prop.name] = 0; } else if (prop.type.isBoolean()) { obj[prop.name] = false; } else if (prop.type.isArray()) { obj[prop.name] = []; } else if (prop.type.isAssignableTo(Type.Undefined)) { obj[prop.name] = undefined; } else if (prop.type.isAssignableTo(Type.Null)) { obj[prop.name] = null; } else if (prop.type.isObjectLike()) { obj[prop.name] = getDefaultValues(prop.type); } }); return obj as T; } export const getBase64 = (file: File) => new Promise<string>((resolve, reject) => { let reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function () { resolve(reader.result as string); }; reader.onerror = function (error) { console.log("Error: ", error); reject(error); }; }); const handleFormInput = (data: any, key: string, formData: FormData) => { if (Array.isArray(data)) { data.forEach((item, index) => { handleFormInput(item, `${key}[${index}]`, formData); }); } else if (data instanceof File || data instanceof Blob) { formData.append(key, data); } else if (typeof data === "object") { for (const [k, v] of Object.entries(data)) { handleFormInput(v, `${key}[${k}]`, formData); } } else { formData.append(key, data); } }; export const shapeFormData = (data: any) => { let formData = new FormData(); for (const [key, value] of Object.entries(data)) { handleFormInput(value, key, formData); } return formData; };