import { addDataPublishes, addEnteredQmailTimestamp, addTimestampEnterChat, addTimestampGroupAnnouncement, addTimestampMention, addUserSettings, banFromGroup, cancelBan, cancelInvitationToGroup, checkLocalFunc, checkNewMessages, checkThreads, clearAllNotifications, createGroup, decryptDirectFunc, decryptSingleForPublishes, decryptSingleFunc, decryptWallet, findUsableApi, getApiKeyFromStorage, getBalanceInfo, getCustomNodesFromStorage, getDataPublishes, getEnteredQmailTimestamp, getGroupDataSingle, getKeyPair, getLTCBalance, getNameInfo, getTempPublish, getTimestampEnterChat, getTimestampGroupAnnouncement, getTimestampMention, getUserInfo, getUserSettings, handleActiveGroupDataFromSocket, inviteToGroup, joinGroup, kickFromGroup, leaveGroup, makeAdmin, notifyAdminRegenerateSecretKey, pauseAllQueues, registerName, removeAdmin, resumeAllQueues, saveTempPublish, sendChatDirect, sendChatGroup, sendChatNotification, sendCoin, setChatHeads, setGroupData, updateThreadActivity, walletVersion, } from "./background"; import { decryptGroupEncryption, encryptAndPublishSymmetricKeyGroupChat, encryptAndPublishSymmetricKeyGroupChatForAdmins, publishGroupEncryptedResource, publishOnQDN } from "./backgroundFunctions/encryption"; import { PUBLIC_NOTIFICATION_CODE_FIRST_SECRET_KEY } from "./constants/codes"; import { encryptSingle } from "./qdn/encryption/group-encryption"; import { _createPoll, _voteOnPoll } from "./qortalRequests/get"; import { getData, storeData } from "./utils/chromeStorage"; export function versionCase(request, event) { event.source.postMessage( { requestId: request.requestId, action: "version", payload: { version: "1.0" }, type: "backgroundMessageResponse", }, event.origin ); } export async function getWalletInfoCase(request, event) { try { const response = await getKeyPair(); try { const walletInfo = await getData('walletInfo').catch((error)=> null) if(walletInfo){ event.source.postMessage( { requestId: request.requestId, action: "getWalletInfo", payload: { walletInfo, hasKeyPair: true }, type: "backgroundMessageResponse", }, event.origin ); } else { event.source.postMessage( { requestId: request.requestId, action: "getWalletInfo", error: "No wallet info found", type: "backgroundMessageResponse", }, event.origin ); } } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "getWalletInfo", error: "No wallet info found", type: "backgroundMessageResponse", }, event.origin ); } } catch (error) { try { const walletInfo = await getData('walletInfo').catch((error)=> null) if(walletInfo){ event.source.postMessage( { requestId: request.requestId, action: "getWalletInfo", payload: { walletInfo, hasKeyPair: false }, type: "backgroundMessageResponse", }, event.origin ); } else { event.source.postMessage( { requestId: request.requestId, action: "getWalletInfo", error: "Wallet not authenticated", type: "backgroundMessageResponse", }, event.origin ); } } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "getWalletInfo", error: "Wallet not authenticated", type: "backgroundMessageResponse", }, event.origin ); } } } export async function validApiCase(request, event) { try { const usableApi = await findUsableApi(); event.source.postMessage( { requestId: request.requestId, action: "validApi", payload: usableApi, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "validApi", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function nameCase(request, event) { try { const response = await getNameInfo(); event.source.postMessage( { requestId: request.requestId, action: "name", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "name", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function userInfoCase(request, event) { try { const response = await getUserInfo(); event.source.postMessage( { requestId: request.requestId, action: "userInfo", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "userInfo", error: "User not authenticated", type: "backgroundMessageResponse", }, event.origin ); } } export async function decryptWalletCase(request, event) { try { const { password, wallet } = request.payload; const response = await decryptWallet({password, wallet, walletVersion}); event.source.postMessage( { requestId: request.requestId, action: "decryptWallet", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "decryptWallet", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function balanceCase(request, event) { try { const response = await getBalanceInfo(); event.source.postMessage( { requestId: request.requestId, action: "balance", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "balance", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function ltcBalanceCase(request, event) { try { const response = await getLTCBalance(); event.source.postMessage( { requestId: request.requestId, action: "ltcBalance", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "ltcBalance", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function sendCoinCase(request, event) { try { const { receiver, password, amount } = request.payload; const { res } = await sendCoin({ receiver, password, amount }); if (!res?.success) { event.source.postMessage( { requestId: request.requestId, action: "sendCoin", error: res?.data?.message, type: "backgroundMessageResponse", }, event.origin ); return; } event.source.postMessage( { requestId: request.requestId, action: "sendCoin", payload: true, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "sendCoin", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function inviteToGroupCase(request, event) { try { const { groupId, qortalAddress, inviteTime } = request.payload; const response = await inviteToGroup({ groupId, qortalAddress, inviteTime, }); event.source.postMessage( { requestId: request.requestId, action: "inviteToGroup", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "inviteToGroup", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function saveTempPublishCase(request, event) { try { const { data, key } = request.payload; const response = await saveTempPublish({ data, key }); event.source.postMessage( { requestId: request.requestId, action: "saveTempPublish", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "saveTempPublish", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function getTempPublishCase(request, event) { try { const response = await getTempPublish(); event.source.postMessage( { requestId: request.requestId, action: "getTempPublish", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "getTempPublish", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function createGroupCase(request, event) { try { const { groupName, groupDescription, groupType, groupApprovalThreshold, minBlock, maxBlock, } = request.payload; const response = await createGroup({ groupName, groupDescription, groupType, groupApprovalThreshold, minBlock, maxBlock, }); event.source.postMessage( { requestId: request.requestId, action: "createGroup", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "createGroup", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function cancelInvitationToGroupCase(request, event) { try { const { groupId, qortalAddress } = request.payload; const response = await cancelInvitationToGroup({ groupId, qortalAddress }); event.source.postMessage( { requestId: request.requestId, action: "cancelInvitationToGroup", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "cancelInvitationToGroup", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function leaveGroupCase(request, event) { try { const { groupId } = request.payload; const response = await leaveGroup({ groupId }); event.source.postMessage( { requestId: request.requestId, action: "leaveGroup", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "leaveGroup", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function joinGroupCase(request, event) { try { const { groupId } = request.payload; const response = await joinGroup({ groupId }); event.source.postMessage( { requestId: request.requestId, action: "joinGroup", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "joinGroup", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function kickFromGroupCase(request, event) { try { const { groupId, qortalAddress, rBanReason } = request.payload; const response = await kickFromGroup({ groupId, qortalAddress, rBanReason, }); event.source.postMessage( { requestId: request.requestId, action: "kickFromGroup", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "kickFromGroup", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function banFromGroupCase(request, event) { try { const { groupId, qortalAddress, rBanReason, rBanTime } = request.payload; const response = await banFromGroup({ groupId, qortalAddress, rBanReason, rBanTime, }); event.source.postMessage( { requestId: request.requestId, action: "banFromGroup", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "banFromGroup", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function addDataPublishesCase(request, event) { try { const { data, groupId, type } = request.payload; const response = await addDataPublishes( data, groupId, type ); event.source.postMessage( { requestId: request.requestId, action: "addDataPublishes", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "addDataPublishes", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function getDataPublishesCase(request, event) { try { const { groupId, type } = request.payload; const response = await getDataPublishes(groupId, type ); event.source.postMessage( { requestId: request.requestId, action: "getDataPublishes", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "getDataPublishes", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function addUserSettingsCase(request, event) { try { const { keyValue } = request.payload; const response = await addUserSettings({ keyValue }); event.source.postMessage( { requestId: request.requestId, action: "addUserSettings", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "addUserSettings", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function getUserSettingsCase(request, event) { try { const { key } = request.payload; const response = await getUserSettings({ key }); event.source.postMessage( { requestId: request.requestId, action: "getUserSettings", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "getUserSettings", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function cancelBanCase(request, event) { try { const { groupId, qortalAddress } = request.payload; const response = await cancelBan({ groupId, qortalAddress }); event.source.postMessage( { requestId: request.requestId, action: "cancelBan", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "cancelBan", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function registerNameCase(request, event) { try { const { name } = request.payload; const response = await registerName({ name }); event.source.postMessage( { requestId: request.requestId, action: "registerName", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "registerName", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function makeAdminCase(request, event) { try { const { groupId, qortalAddress } = request.payload; const response = await makeAdmin({ groupId, qortalAddress }); event.source.postMessage( { requestId: request.requestId, action: "makeAdmin", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "makeAdmin", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function removeAdminCase(request, event) { try { const { groupId, qortalAddress } = request.payload; const response = await removeAdmin({ groupId, qortalAddress }); event.source.postMessage( { requestId: request.requestId, action: "removeAdmin", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "removeAdmin", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function notificationCase(request, event) { try { const notificationId = "chat_notification_" + Date.now(); // Create a unique ID // chrome.notifications.create(notificationId, { // type: "basic", // iconUrl: "qort.png", // Add an appropriate icon for chat notifications // title: "New Group Message!", // message: "You have received a new message from one of your groups", // priority: 2, // Use the maximum priority to ensure it's // }); // Set a timeout to clear the notification after 'timeout' milliseconds // setTimeout(() => { // chrome.notifications.clear(notificationId); // }, 3000); // event.source.postMessage( // { // requestId: request.requestId, // action: "notification", // payload: true, // type: "backgroundMessageResponse", // }, // event.origin // ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "notification", error: "Error displaying notifaction", type: "backgroundMessageResponse", }, event.origin ); } } export async function addTimestampEnterChatCase(request, event) { try { const { groupId, timestamp } = request.payload; const response = await addTimestampEnterChat({ groupId, timestamp }); event.source.postMessage( { requestId: request.requestId, action: "addTimestampEnterChat", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "addTimestampEnterChat", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function setApiKeyCase(request, event) { try { const payload = request.payload; storeData('apiKey', payload) event.source.postMessage( { requestId: request.requestId, action: "setApiKey", payload: true, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "setApiKey", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function setCustomNodesCase(request, event) { try { const nodes = request.payload; storeData('customNodes', nodes) event.source.postMessage( { requestId: request.requestId, action: "setCustomNodes", payload: true, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "setCustomNodes", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function getApiKeyCase(request, event) { try { const response = await getApiKeyFromStorage(); event.source.postMessage( { requestId: request.requestId, action: "getApiKey", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "getApiKey", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function getCustomNodesFromStorageCase(request, event) { try { const response = await getCustomNodesFromStorage(); event.source.postMessage( { requestId: request.requestId, action: "getCustomNodesFromStorage", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "getCustomNodesFromStorage", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function notifyAdminRegenerateSecretKeyCase(request, event) { try { const { groupName, adminAddress } = request.payload; const response = await notifyAdminRegenerateSecretKey({ groupName, adminAddress, }); event.source.postMessage( { requestId: request.requestId, action: "notifyAdminRegenerateSecretKey", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "notifyAdminRegenerateSecretKey", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function addGroupNotificationTimestampCase(request, event) { try { const { groupId, timestamp } = request.payload; const response = await addTimestampGroupAnnouncement({ groupId, timestamp, seenTimestamp: true }); event.source.postMessage( { requestId: request.requestId, action: "addGroupNotificationTimestamp", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "addGroupNotificationTimestamp", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function clearAllNotificationsCase(request, event) { try { await clearAllNotifications(); event.source.postMessage( { requestId: request.requestId, action: "clearAllNotifications", payload: true, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "clearAllNotifications", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function setGroupDataCase(request, event) { try { const { groupId, secretKeyData, secretKeyResource, admins } = request.payload; const response = await setGroupData({ groupId, secretKeyData, secretKeyResource, admins, }); event.source.postMessage( { requestId: request.requestId, action: "setGroupData", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "setGroupData", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function getGroupDataSingleCase(request, event) { try { const { groupId } = request.payload; const response = await getGroupDataSingle({ groupId }); event.source.postMessage( { requestId: request.requestId, action: "getGroupDataSingle", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "getGroupDataSingle", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function getTimestampEnterChatCase(request, event) { try { const response = await getTimestampEnterChat(); event.source.postMessage( { requestId: request.requestId, action: "getTimestampEnterChat", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "getTimestampEnterChat", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function getGroupNotificationTimestampCase(request, event) { try { const response = await getTimestampGroupAnnouncement(); event.source.postMessage( { requestId: request.requestId, action: "getGroupNotificationTimestamp", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "getGroupNotificationTimestamp", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function encryptAndPublishSymmetricKeyGroupChatCase( request, event ) { try { const { groupId, previousData, previousNumber } = request.payload; const { data, numberOfMembers } = await encryptAndPublishSymmetricKeyGroupChat({ groupId, previousData, previousNumber, }); event.source.postMessage( { requestId: request.requestId, action: "encryptAndPublishSymmetricKeyGroupChat", payload: data, type: "backgroundMessageResponse", }, event.origin ); if (!previousData) { try { sendChatGroup({ groupId, typeMessage: undefined, chatReference: undefined, messageText: PUBLIC_NOTIFICATION_CODE_FIRST_SECRET_KEY, }); } catch (error) { // error in sending chat message } } try { sendChatNotification(data, groupId, previousData, numberOfMembers); } catch (error) { // error in sending notification } } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "encryptAndPublishSymmetricKeyGroupChat", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function encryptAndPublishSymmetricKeyGroupChatForAdminsCase( request, event ) { try { const { groupId, previousData, admins } = request.payload; const { data, numberOfMembers } = await encryptAndPublishSymmetricKeyGroupChatForAdmins({ groupId, previousData, admins }); event.source.postMessage( { requestId: request.requestId, action: "encryptAndPublishSymmetricKeyGroupChatForAdmins", payload: data, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "encryptAndPublishSymmetricKeyGroupChat", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function publishGroupEncryptedResourceCase(request, event) { try { const {encryptedData, identifier} = request.payload; const response = await publishGroupEncryptedResource({encryptedData, identifier}); event.source.postMessage( { requestId: request.requestId, action: "publishGroupEncryptedResource", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "publishGroupEncryptedResource", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function publishOnQDNCase(request, event) { try { const {data, identifier, service, title, description, category, tag1, tag2, tag3, tag4, tag5, uploadType} = request.payload; const response = await publishOnQDN({data, identifier, service, title, description, category, tag1, tag2, tag3, tag4, tag5, uploadType}); event.source.postMessage( { requestId: request.requestId, action: "publishOnQDN", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "publishOnQDN", error: error?.message || 'Unable to publish', type: "backgroundMessageResponse", }, event.origin ); } } export async function handleActiveGroupDataFromSocketCase(request, event) { try { const {groups, directs} = request.payload; const response = await handleActiveGroupDataFromSocket({groups, directs}); event.source.postMessage( { requestId: request.requestId, action: "handleActiveGroupDataFromSocket", payload: true, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "handleActiveGroupDataFromSocket", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function getThreadActivityCase(request, event) { try { const response = await checkThreads(true) event.source.postMessage( { requestId: request.requestId, action: "getThreadActivity", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "getThreadActivity", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function updateThreadActivityCase(request, event) { try { const { threadId, qortalName, groupId, thread} = request.payload; const response = await updateThreadActivity({ threadId, qortalName, groupId, thread }); event.source.postMessage( { requestId: request.requestId, action: "updateThreadActivity", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "updateThreadActivity", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function decryptGroupEncryptionCase(request, event) { try { const { data} = request.payload; const response = await decryptGroupEncryption({ data }); event.source.postMessage( { requestId: request.requestId, action: "decryptGroupEncryption", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "decryptGroupEncryption", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function encryptSingleCase(request, event) { try { const { data, secretKeyObject, typeNumber} = request.payload; const response = await encryptSingle({ data64: data, secretKeyObject, typeNumber }); event.source.postMessage( { requestId: request.requestId, action: "encryptSingle", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "encryptSingle", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function decryptSingleCase(request, event) { try { const { data, secretKeyObject, skipDecodeBase64} = request.payload; const response = await decryptSingleFunc({ messages: data, secretKeyObject, skipDecodeBase64 }); event.source.postMessage( { requestId: request.requestId, action: "decryptSingle", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "decryptSingle", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function pauseAllQueuesCase(request, event) { try { await pauseAllQueues(); event.source.postMessage( { requestId: request.requestId, action: "pauseAllQueues", payload: true, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "pauseAllQueues", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function resumeAllQueuesCase(request, event) { try { await resumeAllQueues(); event.source.postMessage( { requestId: request.requestId, action: "resumeAllQueues", payload: true, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "resumeAllQueues", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function checkLocalCase(request, event) { try { const response = await checkLocalFunc() event.source.postMessage( { requestId: request.requestId, action: "pauseAllQueues", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "checkLocal", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function decryptSingleForPublishesCase(request, event) { try { const { data, secretKeyObject, skipDecodeBase64} = request.payload; const response = await decryptSingleForPublishes({ messages: data, secretKeyObject, skipDecodeBase64 }); event.source.postMessage( { requestId: request.requestId, action: "decryptSingleForPublishes", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "decryptSingle", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function decryptDirectCase(request, event) { try { const { data, involvingAddress} = request.payload; const response = await decryptDirectFunc({ messages: data, involvingAddress }); event.source.postMessage( { requestId: request.requestId, action: "decryptDirect", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "decryptDirect", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function sendChatGroupCase(request, event) { try { const { groupId, typeMessage = undefined, chatReference = undefined, messageText} = request.payload; const response = await sendChatGroup({ groupId, typeMessage, chatReference, messageText }); event.source.postMessage( { requestId: request.requestId, action: "sendChatGroup", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "sendChatGroup", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function sendChatDirectCase(request, event) { try { const { directTo, typeMessage = undefined, chatReference = undefined, messageText, publicKeyOfRecipient, address, otherData} = request.payload; const response = await sendChatDirect({ directTo, chatReference, messageText, typeMessage, publicKeyOfRecipient, address, otherData }); event.source.postMessage( { requestId: request.requestId, action: "sendChatDirect", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "sendChatDirect", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function setupGroupWebsocketCase(request, event) { try { checkNewMessages(); checkThreads(); event.source.postMessage( { requestId: request.requestId, action: "sendChatDirect", payload: true, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "sendChatDirect", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function addEnteredQmailTimestampCase(request, event) { try { const response = await addEnteredQmailTimestamp(); event.source.postMessage( { requestId: request.requestId, action: "addEnteredQmailTimestamp", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "addEnteredQmailTimestamp", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function getEnteredQmailTimestampCase(request, event) { try { const response = await getEnteredQmailTimestamp(); event.source.postMessage( { requestId: request.requestId, action: "getEnteredQmailTimestamp", payload: {timestamp: response}, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "getEnteredQmailTimestamp", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function getTimestampMentionCase(request, event) { try { const response = await getTimestampMention(); event.source.postMessage( { requestId: request.requestId, action: "getTimestampMention", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "getTimestampMention", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function addTimestampMentionCase(request, event) { try { const { groupId, timestamp } = request.payload; const response = await addTimestampMention({ groupId, timestamp }); event.source.postMessage( { requestId: request.requestId, action: "addTimestampMention", payload: response, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "addTimestampMention", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function createPollCase(request, event) { try { const { pollName, pollDescription, pollOptions } = request.payload; const resCreatePoll = await _createPoll( { pollName, pollDescription, options: pollOptions, }, true, true // skip permission ); event.source.postMessage( { requestId: request.requestId, action: "registerName", payload: resCreatePoll, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "registerName", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } } export async function voteOnPollCase(request, event) { try { const res = await _voteOnPoll(request.payload, true, true); event.source.postMessage( { requestId: request.requestId, action: "registerName", payload: res, type: "backgroundMessageResponse", }, event.origin ); } catch (error) { event.source.postMessage( { requestId: request.requestId, action: "registerName", error: error?.message, type: "backgroundMessageResponse", }, event.origin ); } }