Commit dc4a15fb by golton_gao

update: 更新showWidget和getExtra这2个js桥

parent d8a7bbdc
Showing with 94 additions and 30 deletions
;(function (global) {
var qing = global.qing
function getParamValue (paramName) {
var search = location.search
var reg = new RegExp(`(?:\\?|&)${paramName}=([^&]+)`)
if (reg.test(search)) {
return RegExp.$1
}
return null
var appMap = {
'com.jffc.gc-bak': '500000106',
'com.jffc.gc': '500000113',
'com.jffc.supplier': '500000112'
}
var widgetVal = {}
function isObject (value) {
return value !== null && typeof value === 'object'
}
var qingPromise = function (fnName, params) {
return new Promise(function (resolve, reject) {
......@@ -193,6 +191,41 @@
}
qing.call('request', opt)
}
function openAppWithData (appName, data, url) {
var val = ''
if (isObject(data)) {
data = JSON.stringify(data)
// 针对json数据格式化来的字符串添加特殊标识,方便后续还原
data = '__json__=' + data
}
if (typeof data === 'string') {
// IOS有个奇葩的设计,把双引号转单引号输出了,所以需要将单引号,双引号在保存前特殊处理,然后再还原。
val = data.replace(/'/gm, '∆∆').replace(/"/gm, 'åå')
}
val = encodeURIComponent(val)
return new Promise(function (resolve, reject) {
qing.call('storage.setItem', {
shared: true,
key: appName,
value: val,
success: function (res) {
if (String(res.success).toLowerCase() === 'true') {
qing.call('gotoLightApp', {
urlParam: url
})
resolve(true)
} else {
reject(res.error)
}
},
error: function (e) {
reject(e)
}
})
})
}
var handlers = {
MIDEACOMMON: {
launchExternalAPPByThird: function (params, successFn, failFn) {
......@@ -310,24 +343,70 @@
urlParam: url
})
},
showWidget: function () {},
showWidget: function (params, successFn, failFn) {
if (!Array.isArray(params) || !params[0]) {
failFn('未检测到要打开的应用地址!')
return
}
var appName = params[0]
var appId = appMap[appName]
if (!appId) {
failFn('未检测到要打开的应用!')
return
}
var data = params[1] || ''
openAppWithData(
encodeURIComponent(appName),
data,
'cloudhub://miniapp?appid=' + appId + '&path=index.html'
).then(successFn, failFn)
},
getExtra: function (params, successFn, failFn) {
var result = null
if (Array.isArray(params)) {
var appName = params[0]
if (appName) {
var appParams = widgetVal[appName] || ''
result = {
qing.call('storage.getItem', {
key: encodeURIComponent(appName),
shared: true,
success: function (res) {
if (String(res.success).toLowerCase() === 'true') {
try {
var data = (res.data || {}).value || ''
data = decodeURIComponent(data)
if (data) {
// IOS有个奇葩的设计,把双引号转单引号输出了,所以需要将单引号,双引号在保存前特殊处理,然后再还原。
data = data.replace(/∆∆/gm, "'").replace(/åå/gm, '"')
// 将json数据反编译回object
if (data.indexOf('__json__=') === 0) {
data = data.replace(/^__json__=/, '')
data = JSON.parse(data)
}
successFn({
result: true,
msg: '成功',
widgetId: appName,
extra: {
showWidgetKey: appParams
showWidgetKey: data
}
})
} else {
successFn({})
}
} catch (error) {
console.error('getExtra error:', error)
failFn()
}
} else {
failFn()
}
}
})
} else {
failFn()
}
} else {
failFn()
}
successFn(result)
}
},
MIDEAUSER: {
......@@ -461,19 +540,4 @@
})
}
}
qing.ready(() => {
var data = getParamValue('data')
if (data) {
try {
data = JSON.parse(data)
var appName = data.appName
if (appName) {
var params = data.params || ''
widgetVal[appName] = params
}
} catch (error) {
}
}
})
})(window)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment