para-bridge-demo
Version:
a bridge api for js-ios/andriod rest
50 lines (40 loc) • 1.25 kB
text/typescript
import { BridgePlugin } from '../bridge';
import { get } from 'para-utils';
interface IScanParam {
scanType: 'qrCode'; // 'qrCode',默认二维码
// 扫描结果, needResult='1',才有返回内容
needResult: '0' | '1';
}
export interface IScanResult {
// 扫描结果, needResult='1',才有返回内容
resultStr: string; // 'https://domain.com'
}
export class Scan<K> extends BridgePlugin<IScanParam, K>{
protected get ntvPluginName() {
return '_ntv_util_scan';
}
protected get availableMinVersion() {
return '1.0.0';
}
protected bridgeExecChrome(pluginName: string | undefined): void {
// 可针对不同运行环境实现特定的调用逻辑来MOCK,弥补平台差异性.
throw new Error('Scan() 未针对当前环境实现');
}
}
/**
* 扫一扫 需result
* @param param IScanParam
* @returns IScanResult
*/
export const scanWithResult = () => {
return new Scan<IScanResult>({ scanType: 'qrCode', needResult: '1' }).invokeOnce().then((result) => {
return get(result.cbData, 'resultStr', '');
});
};
/**
* 扫一扫 无需result
* @param param IScanParam
*/
export const scan = () => {
new Scan<void>({ scanType: 'qrCode', needResult: '0' } as IScanParam).invoke();
}