@tencentcloud/chat-cs-uniapp
Version:
TCCC uniapp UIKit
98 lines (90 loc) • 3.39 kB
text/typescript
export function getQuery() {
return {
webAppId: uni.getStorageSync('getQueryWebAppId'),
clientData: uni.getStorageSync('getQueryClientData'),
userSig: uni.getStorageSync('getQueryUserSig'),
hideHeader: uni.getStorageSync('getQueryHideHeader'),
demoUserPhone: uni.getStorageSync('getQueryDemoUserPhone'),
globalSite: uni.getStorageSync('getQueryGlobalSite'),
}
}
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,
};
}