UNPKG

para-bridge-demo

Version:

a bridge api for js-ios/andriod rest

47 lines (40 loc) 1.57 kB
import { BridgePlugin } from '../bridge'; import { getUrlNtvThird } from '../../utils/bridgeUtils'; import { get, stringify, extend } from 'para-utils'; interface IDataCallbackParam { tagName: string; result: string; } export class DataCallback<K> extends BridgePlugin<IDataCallbackParam, K>{ protected get ntvPluginName() { return '_ntv_web_data_callback'; } protected get availableMinVersion() { return '1.0.0'; } /** * 覆盖基类的默认生成NTV bridge调用参数字符串, 此处 data_callback always需要去parse URL参数 * "ntv_third" 去获取上一个webview传递过来的cbPluginName. * @param pluginName 当前回调生成的cbPluginName */ protected buildNtvParameter(pluginName) { const urlCbData = getUrlNtvThird(); pluginName = get(urlCbData, 'cbPluginName', pluginName); return super.buildNtvParameter(pluginName); } protected bridgeExecChrome(pluginName?: string | undefined): void { // 可针对不同运行环境实现特定的调用逻辑来MOCK,弥补平台差异性. throw new Error('DataCallback() 未针对当前环境实现'); } } /** * 回退上一个webview,并执行上一个webview定义的函数回调With特定的业务参数 * @param cbBizData 回调给上一个webview的自定义业务参数 */ export const dataCallbackToPreviousWebview = (cbBizData = {}) => { const urlCbData = getUrlNtvThird(); new DataCallback<void>().invoke({ tagName: 'ntv_data_callback', result: stringify(extend(true, get(urlCbData, 'cbData'), cbBizData)), }); }