/* global window, textsecure, log */ // eslint-disable-next-line func-names (function() { window.libloki = window.libloki || {}; async function sendBackgroundMessage(pubKey) { return sendOnlineBroadcastMessage(pubKey); } async function broadcastOnlineStatus() { const friendKeys = await window.Signal.Data.getPubKeysWithFriendStatus( window.friends.friendRequestStatusEnum.friends ); await Promise.all( friendKeys.map(async pubKey => { if (pubKey === textsecure.storage.user.getNumber()) { return; } try { await sendOnlineBroadcastMessage(pubKey); } catch (e) { log.warn(`Failed to send online broadcast message to ${pubKey}`); } }) ); } async function sendOnlineBroadcastMessage(pubKey, isPing = false) { let p2pAddress = null; let p2pPort = null; let type; if (!window.localLokiServer.isListening()) { type = textsecure.protobuf.LokiAddressMessage.Type.HOST_UNREACHABLE; } else { // clearnet change: getMyLokiAddress -> getMyClearIP // const myLokiAddress = await window.lokiSnodeAPI.getMyLokiAddress(); const myIp = await window.lokiSnodeAPI.getMyClearIp(); p2pAddress = `https://${myIp}`; p2pPort = window.localLokiServer.getPublicPort(); type = textsecure.protobuf.LokiAddressMessage.Type.HOST_REACHABLE; } const lokiAddressMessage = new textsecure.protobuf.LokiAddressMessage({ p2pAddress, p2pPort, type, }); const content = new textsecure.protobuf.Content({ lokiAddressMessage, }); const options = { messageType: 'onlineBroadcast', isPing }; // Send a empty message with information about how to contact us directly const outgoingMessage = new textsecure.OutgoingMessage( null, // server Date.now(), // timestamp, [pubKey], // numbers content, // message true, // silent () => null, // callback options ); await outgoingMessage.sendToNumber(pubKey); } window.libloki.api = { sendBackgroundMessage, sendOnlineBroadcastMessage, broadcastOnlineStatus, }; })();