mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
window.webxdc = (() => {
|
|
let setUpdateListenerPromise = null
|
|
var update_listener = () => {};
|
|
var last_serial = 0;
|
|
|
|
window.__webxdcUpdate = () => {
|
|
var updates = JSON.parse(InternalJSApi.getStatusUpdates(last_serial));
|
|
updates.forEach((update) => {
|
|
update_listener(update);
|
|
last_serial = update.serial;
|
|
});
|
|
if (setUpdateListenerPromise) {
|
|
setUpdateListenerPromise()
|
|
setUpdateListenerPromise = null
|
|
}
|
|
};
|
|
|
|
return {
|
|
selfAddr: InternalJSApi.selfAddr(),
|
|
|
|
selfName: InternalJSApi.selfName(),
|
|
|
|
setUpdateListener: (cb, serial) => {
|
|
last_serial = typeof serial === "undefined" ? 0 : parseInt(serial);
|
|
update_listener = cb
|
|
var promise = new Promise((res, _rej) => {
|
|
setUpdateListenerPromise = res
|
|
})
|
|
window.__webxdcUpdate();
|
|
return promise
|
|
},
|
|
|
|
// deprecated 2022-02-20 all updates are returned through the callback set by setUpdateListener
|
|
getAllUpdates: () => {
|
|
console.error("deprecated 2022-02-20 all updates are returned through the callback set by setUpdateListener")
|
|
return Promise.resolve([]);
|
|
},
|
|
|
|
sendUpdate: (payload, descr) => {
|
|
InternalJSApi.sendStatusUpdate(JSON.stringify(payload), descr);
|
|
},
|
|
};
|
|
})();
|