hyapp-h5/common/jsbridge.js
2026-05-26 02:56:37 +08:00

70 lines
2.0 KiB
JavaScript

(function () {
function post(action, payload) {
var message = JSON.stringify({
action: action,
payload: payload || {},
});
if (
window.flutter_inappwebview &&
window.flutter_inappwebview.callHandler
) {
return window.flutter_inappwebview.callHandler(
'HyAppBridge',
action,
payload || {}
);
}
if (
window.HyAppBridgeChannel &&
window.HyAppBridgeChannel.postMessage
) {
window.HyAppBridgeChannel.postMessage(message);
return Promise.resolve();
}
if (window.FlutterBridge && window.FlutterBridge.postMessage) {
window.FlutterBridge.postMessage(message);
return Promise.resolve();
}
if (
window.webkit &&
window.webkit.messageHandlers &&
window.webkit.messageHandlers.HyAppBridge
) {
window.webkit.messageHandlers.HyAppBridge.postMessage({
action: action,
payload: payload || {},
});
return Promise.resolve();
}
window.dispatchEvent(
new CustomEvent('hyapp:bridge-message', {
detail: { action: action, payload: payload || {} },
})
);
return Promise.resolve();
}
window.HyAppBridge = {
post: post,
back: function () {
return post('back');
},
openUser: function (userId) {
return post('openUser', { user_id: String(userId || '') });
},
openRoom: function (roomId) {
return post('openRoom', { room_id: String(roomId || '') });
},
openRankNote: function (boardType) {
return post('openRankNote', {
board_type: String(boardType || ''),
});
},
ready: function (payload) {
return post('ready', payload || {});
},
};
})();