index.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import Taro, { getStorageSync } from "@tarojs/taro";
  2. import Schema, { Rules } from "async-validator";
  3. export const TOKEN_KEY = "token";
  4. export const NICKNAME_key = "nickname";
  5. export const getSceneUrl = (scene?: number) => {
  6. const name = getStorageSync(NICKNAME_key);
  7. const token = getStorageSync(TOKEN_KEY);
  8. return `https://app.4dage.com/projects/wxcs/web/index.html?platform=wx&name=${name}&token=${token}${
  9. typeof scene === "number" ? `&scene=${scene}` : ""
  10. }`;
  11. };
  12. export const createRandomString = () => {
  13. const characters =
  14. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  15. let randomString = "";
  16. for (let i = 0; i < 2; i++) {
  17. randomString += characters.charAt(
  18. Math.floor(Math.random() * characters.length)
  19. );
  20. }
  21. return randomString;
  22. };
  23. export const onValidateField = (value: any, rules: Rules) => {
  24. const validator = new Schema(rules);
  25. return new Promise<any>((resolve) => {
  26. validator.validate(value, (errors) => {
  27. if (errors) {
  28. resolve(errors);
  29. } else {
  30. const errMsg = Object.keys(rules).map((key) => {
  31. return {
  32. field: key,
  33. message: undefined,
  34. };
  35. });
  36. resolve(errMsg);
  37. }
  38. });
  39. });
  40. };
  41. export const handleValidate = async (params, formRules) => {
  42. const errors = await onValidateField(params, formRules);
  43. let valid = !errors || errors.filter((error) => error.message).length <= 0;
  44. if (!valid) {
  45. Taro.showToast({
  46. icon: "none",
  47. title: errors[0].message,
  48. });
  49. return false;
  50. }
  51. return true;
  52. };
  53. export function debounce(func: Function, time: number, immediate = false) {
  54. let timer: number | null = null;
  55. return (...args: any) => {
  56. if (timer) clearInterval(timer);
  57. if (immediate) {
  58. if (!timer) func.apply(this, args);
  59. timer = window.setTimeout(() => {
  60. timer = null;
  61. }, time);
  62. } else {
  63. timer = window.setTimeout(() => {
  64. func.apply(this, args);
  65. }, time);
  66. }
  67. };
  68. }