UNPKG

@tencentcloud/chat-cs-uniapp

Version:

TCCC uniapp UIKit

115 lines (106 loc) 4.47 kB
import qs from 'query-string'; export function getQuery() { if (window.location.hash !== '') { console.log(window.location); const parseResult = qs.parse(window.location.hash.split('?')[1]) return { webAppId: uni.getStorageSync('getQueryWebAppId') || parseResult?.webAppId, clientData: uni.getStorageSync('getQueryClientData') || parseResult?.clientData, userSig: uni.getStorageSync('getQueryUserSig') || parseResult?.userSig, hideHeader: uni.getStorageSync('getQueryHideHeader') || parseResult?.hideHeader, demoUserPhone: uni.getStorageSync('getQueryDemoUserPhone') || parseResult?.demoUserPhone, globalSite: uni.getStorageSync('getQueryGlobalSite') || parseResult?.globalSite, } } else { console.log(window.location); const parseResult = qs.parse(window.location.search.split('?')[1]) return { webAppId: uni.getStorageSync('getQueryWebAppId') || parseResult?.webAppId, clientData: uni.getStorageSync('getQueryClientData') || parseResult?.clientData, userSig: uni.getStorageSync('getQueryUserSig') || parseResult?.userSig, hideHeader: uni.getStorageSync('getQueryHideHeader') || parseResult?.hideHeader, demoUserPhone: uni.getStorageSync('getQueryDemoUserPhone') || parseResult?.demoUserPhone, globalSite: uni.getStorageSync('getQueryGlobalSite') || parseResult?.globalSite, } } } export function isTestEnv() { return process.env.NODE_ENV === 'development' || process.env.REACT_APP_NODE_ENV === 'test'; } export function isPreEnv() { return process.env.REACT_APP_NODE_ENV === 'pre'; } interface ratingTemplate { errorCode: string, menuContent: string menuId: string menuName: string menuSendRuleFlag: string msg: string nonce: string requestId: string } export function parseRatingTemplate(ratingTemplate: ratingTemplate) { return { ...JSON.parse(ratingTemplate.menuContent), allowClientSendRating: parseInt(ratingTemplate.menuSendRuleFlag) === 4 } } export function dynamicLoadCaptcha() { return new Promise((resolve, reject) => { const captcha = document.getElementById('TCaptcha'); if (!captcha) { const script = document.createElement('script'); script.src = 'https://ssl.captcha.qq.com/TCaptcha.js'; script.id = 'TCaptcha'; script.addEventListener('load', resolve); script.addEventListener('error', reject); document.body.appendChild(script); } else { resolve(undefined); } }); } export function verify(appId: any) { return dynamicLoadCaptcha() .then( () => new Promise((resolve, reject) => { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore new TencentCaptcha(appId, (res: any) => { switch (res.ret) { case 0: resolve(res); return; case 2: resolve(undefined); return; default: reject(`verify failed, ret: ${JSON.stringify(res)}`); return; } }, { loading: false }).show(); }), ) .catch((error) => { console.error('captcha', error); if (error instanceof Error) { return generateFallbackCaptchaResult(appId, 1005, error.message); } if (error?.target?.id === 'TCaptcha') { return generateFallbackCaptchaResult(appId, 1001, 'jsload_error'); } return generateFallbackCaptchaResult(appId, 1005, error?.toString() || 'unknown_error'); }); } export function generateFallbackCaptchaResult(appId: string, errorCode: number, errorMessage: string) { return { ret: 0, appid: appId, randstr: `@${((window.crypto.getRandomValues(new Uint8Array(1)) as any) * 0.001).toString(36).substr(2)}`, ticket: `terror_1001_${appId}_${Math.floor(new Date().getTime() / 1000)}`, errorCode, errorMessage, }; }