Qortal-Hub/src/qortalRequests.ts
2025-05-18 19:22:27 +02:00

1936 lines
51 KiB
TypeScript

import { gateways, getApiKeyFromStorage } from './background';
import { listOfAllQortalRequests } from './hooks/useQortalMessageListener';
import {
addForeignServer,
addGroupAdminRequest,
addListItems,
adminAction,
banFromGroupRequest,
cancelGroupBanRequest,
cancelGroupInviteRequest,
cancelSellOrder,
createAndCopyEmbedLink,
createBuyOrder,
createGroupRequest,
createPoll,
createSellOrder,
decryptAESGCMRequest,
decryptData,
decryptDataWithSharingKey,
decryptQortalGroupData,
deleteHostedData,
deleteListItems,
deployAt,
encryptData,
encryptDataWithSharingKey,
encryptQortalGroupData,
getCrossChainServerInfo,
getDaySummary,
getNodeInfo,
getNodeStatus,
getForeignFee,
getHostedData,
getListItems,
getServerConnectionHistory,
getTxActivitySummary,
getUserAccount,
getUserWallet,
getUserWalletInfo,
getUserWalletTransactions,
getWalletBalance,
inviteToGroupRequest,
joinGroup,
kickFromGroupRequest,
leaveGroupRequest,
openNewTab,
publishMultipleQDNResources,
publishQDNResource,
registerNameRequest,
removeForeignServer,
removeGroupAdminRequest,
saveFile,
sendChatMessage,
sendCoin,
setCurrentForeignServer,
signTransaction,
updateForeignFee,
updateNameRequest,
voteOnPoll,
getArrrSyncStatus,
updateGroupRequest,
buyNameRequest,
sellNameRequest,
cancelSellNameRequest,
signForeignFees,
multiPaymentWithPrivateData,
transferAssetRequest,
} from './qortalRequests/get';
import { getData, storeData } from './utils/chromeStorage';
import { executeEvent } from './utils/events';
function getLocalStorage(key) {
return getData(key).catch((error) => {
console.error('Error retrieving data:', error);
throw error;
});
}
// Promisify setting data in localStorage
function setLocalStorage(key, data) {
return storeData(key, data).catch((error) => {
console.error('Error saving data:', error);
throw error;
});
}
export const isRunningGateway = async () => {
let isGateway = true;
const apiKey = await getApiKeyFromStorage();
if (
apiKey &&
apiKey?.url &&
!gateways.some((gateway) => apiKey?.url?.includes(gateway))
) {
isGateway = false;
}
return isGateway;
};
export async function setPermission(key, value) {
try {
// Get the existing qortalRequestPermissions object
const qortalRequestPermissions =
(await getLocalStorage('qortalRequestPermissions')) || {};
// Update the permission
qortalRequestPermissions[key] = value;
// Save the updated object back to storage
await setLocalStorage('qortalRequestPermissions', qortalRequestPermissions);
} catch (error) {
console.error('Error setting permission:', error);
}
}
export async function getPermission(key) {
try {
// Get the qortalRequestPermissions object from storage
const qortalRequestPermissions =
(await getLocalStorage('qortalRequestPermissions')) || {};
// Return the value for the given key, or null if it doesn't exist
return qortalRequestPermissions[key] || null;
} catch (error) {
console.error('Error getting permission:', error);
return null;
}
}
// TODO: GET_FRIENDS_LIST
// NOT SURE IF TO IMPLEMENT: LINK_TO_QDN_RESOURCE, QDN_RESOURCE_DISPLAYED, SET_TAB_NOTIFICATIONS
function setupMessageListenerQortalRequest() {
window.addEventListener('message', async (event) => {
const request = event.data;
// Ensure the message is from a trusted source
const isFromExtension = request?.isExtension;
const appInfo = request?.appInfo;
const skipAuth = request?.skipAuth || false;
if (request?.type !== 'backgroundMessage') return; // Only process messages of type 'backgroundMessage'
// Handle actions based on the `request.action` value
switch (request.action) {
case 'GET_USER_ACCOUNT': {
try {
const res = await getUserAccount({
isFromExtension,
appInfo,
skipAuth,
});
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: 'Unable to get user account',
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'ENCRYPT_DATA': {
try {
const res = await encryptData(request.payload, event.source);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'ENCRYPT_QORTAL_GROUP_DATA': {
try {
const res = await encryptQortalGroupData(
request.payload,
event.source
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'DECRYPT_QORTAL_GROUP_DATA': {
try {
const res = await decryptQortalGroupData(
request.payload,
event.source
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'DECRYPT_DATA': {
try {
const res = await decryptData(request.payload);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'GET_LIST_ITEMS': {
try {
const res = await getListItems(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'ADD_LIST_ITEMS': {
try {
const res = await addListItems(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'DELETE_LIST_ITEM': {
try {
const res = await deleteListItems(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'PUBLISH_QDN_RESOURCE': {
try {
const res = await publishQDNResource(
request.payload,
event.source,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'PUBLISH_MULTIPLE_QDN_RESOURCES': {
try {
const res = await publishMultipleQDNResources(
request.payload,
event.source,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'VOTE_ON_POLL': {
try {
const res = await voteOnPoll(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'CREATE_POLL': {
try {
const res = await createPoll(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'SEND_CHAT_MESSAGE': {
try {
const res = await sendChatMessage(
request.payload,
isFromExtension,
appInfo
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'JOIN_GROUP': {
try {
const res = await joinGroup(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'DEPLOY_AT': {
try {
const res = await deployAt(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'GET_USER_WALLET': {
try {
const res = await getUserWallet(
request.payload,
isFromExtension,
appInfo
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'GET_WALLET_BALANCE': {
try {
const res = await getWalletBalance(
request.payload,
false,
isFromExtension,
appInfo
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'GET_USER_WALLET_TRANSACTIONS': {
try {
const res = await getUserWalletTransactions(
request.payload,
isFromExtension,
appInfo
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'GET_USER_WALLET_INFO': {
try {
const res = await getUserWalletInfo(
request.payload,
isFromExtension,
appInfo
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'GET_CROSSCHAIN_SERVER_INFO': {
try {
const res = await getCrossChainServerInfo(request.payload);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'GET_TX_ACTIVITY_SUMMARY': {
try {
const res = await getTxActivitySummary(request.payload);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'GET_FOREIGN_FEE': {
try {
const res = await getForeignFee(request.payload);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'UPDATE_FOREIGN_FEE': {
try {
const res = await updateForeignFee(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'GET_SERVER_CONNECTION_HISTORY': {
try {
const res = await getServerConnectionHistory(request.payload);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'SET_CURRENT_FOREIGN_SERVER': {
try {
const res = await setCurrentForeignServer(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'ADD_FOREIGN_SERVER': {
try {
const res = await addForeignServer(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'REMOVE_FOREIGN_SERVER': {
try {
const res = await removeForeignServer(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'GET_DAY_SUMMARY': {
try {
const res = await getDaySummary(request.payload);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'GET_NODE_INFO': {
try {
const res = await getNodeInfo(request.payload);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'GET_NODE_STATUS': {
try {
const res = await getNodeStatus(request.payload);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'SEND_COIN': {
try {
const res = await sendCoin(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'CREATE_TRADE_BUY_ORDER': {
try {
const res = await createBuyOrder(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'CREATE_TRADE_SELL_ORDER': {
try {
const res = await createSellOrder(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'CANCEL_TRADE_SELL_ORDER': {
try {
const res = await cancelSellOrder(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'IS_USING_PUBLIC_NODE': {
try {
let isGateway = await isRunningGateway();
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: isGateway,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'ADMIN_ACTION': {
try {
const res = await adminAction(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'SIGN_TRANSACTION': {
try {
const res = await signTransaction(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'OPEN_NEW_TAB': {
try {
const res = await openNewTab(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'CREATE_AND_COPY_EMBED_LINK': {
try {
const res = await createAndCopyEmbedLink(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'ENCRYPT_DATA_WITH_SHARING_KEY': {
try {
const res = await encryptDataWithSharingKey(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'DECRYPT_DATA_WITH_SHARING_KEY': {
try {
const res = await decryptDataWithSharingKey(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'DELETE_HOSTED_DATA': {
try {
const res = await deleteHostedData(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'GET_HOSTED_DATA': {
try {
const res = await getHostedData(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'SHOW_ACTIONS': {
try {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: listOfAllQortalRequests,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'REGISTER_NAME': {
try {
const res = await registerNameRequest(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'UPDATE_NAME': {
try {
const res = await updateNameRequest(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'LEAVE_GROUP': {
try {
const res = await leaveGroupRequest(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'INVITE_TO_GROUP': {
try {
const res = await inviteToGroupRequest(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'KICK_FROM_GROUP': {
try {
const res = await kickFromGroupRequest(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'BAN_FROM_GROUP': {
try {
const res = await banFromGroupRequest(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'CANCEL_GROUP_BAN': {
try {
const res = await cancelGroupBanRequest(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'ADD_GROUP_ADMIN': {
try {
const res = await addGroupAdminRequest(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'DECRYPT_AESGCM': {
try {
const res = await decryptAESGCMRequest(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'REMOVE_GROUP_ADMIN': {
try {
const res = await removeGroupAdminRequest(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'CANCEL_GROUP_INVITE': {
try {
const res = await cancelGroupInviteRequest(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'CREATE_GROUP': {
try {
const res = await createGroupRequest(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'UPDATE_GROUP': {
try {
const res = await updateGroupRequest(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'GET_ARRR_SYNC_STATUS': {
try {
const res = await getArrrSyncStatus(request.payload);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'SHOW_PDF_READER': {
try {
if (!request.payload?.blob) {
throw new Error('Missing blob');
}
if (request.payload?.blob?.type !== 'application/pdf')
throw new Error('blob type must be application/pdf');
executeEvent('openPdf', { blob: request.payload?.blob });
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: true,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'MULTI_ASSET_PAYMENT_WITH_PRIVATE_DATA': {
try {
const res = await multiPaymentWithPrivateData(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'TRANSFER_ASSET': {
try {
const res = await transferAssetRequest(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error?.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'BUY_NAME': {
try {
const res = await buyNameRequest(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'SELL_NAME': {
try {
const res = await sellNameRequest(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'CANCEL_SELL_NAME': {
try {
const res = await cancelSellNameRequest(
request.payload,
isFromExtension
);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
case 'SIGN_FOREIGN_FEES': {
try {
const res = await signForeignFees(request.payload, isFromExtension);
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
payload: res,
type: 'backgroundMessageResponse',
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: request.action,
error: error.message,
type: 'backgroundMessageResponse',
},
event.origin
);
}
break;
}
default:
break;
}
});
}
// Initialize the message listener
setupMessageListenerQortalRequest();