From a439b3700740158720626e6641564a099c4e6424 Mon Sep 17 00:00:00 2001 From: PhilReact Date: Mon, 28 Oct 2024 10:10:52 +0200 Subject: [PATCH] cases --- src/background-cases.ts | 141 +++++++++++++++++++++ src/background.ts | 30 ++++- src/components/Group/AddGroupList.tsx | 67 ++++++---- src/components/Group/Group.tsx | 46 +++---- src/components/Group/ListOfMembers.tsx | 62 ++++----- src/components/Group/UserListOfInvites.tsx | 44 ++++--- 6 files changed, 289 insertions(+), 101 deletions(-) diff --git a/src/background-cases.ts b/src/background-cases.ts index 6615bfc..d194f38 100644 --- a/src/background-cases.ts +++ b/src/background-cases.ts @@ -1,15 +1,20 @@ import { + addDataPublishes, + banFromGroup, cancelInvitationToGroup, createGroup, decryptWallet, findUsableApi, getBalanceInfo, + getDataPublishes, getKeyPair, getLTCBalance, getNameInfo, getTempPublish, getUserInfo, inviteToGroup, + joinGroup, + kickFromGroup, leaveGroup, saveTempPublish, sendCoin, @@ -407,4 +412,140 @@ export async function balanceCase(request, event) { 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 + ); + } } \ No newline at end of file diff --git a/src/background.ts b/src/background.ts index 615b1c3..ff2e0ed 100644 --- a/src/background.ts +++ b/src/background.ts @@ -29,13 +29,18 @@ import { Sha256 } from "asmcrypto.js"; import { TradeBotRespondMultipleRequest } from "./transactions/TradeBotRespondMultipleRequest"; import { RESOURCE_TYPE_NUMBER_GROUP_CHAT_REACTIONS } from "./constants/resourceTypes"; import { + addDataPublishesCase, balanceCase, + banFromGroupCase, cancelInvitationToGroupCase, createGroupCase, decryptWalletCase, + getDataPublishesCase, getTempPublishCase, getWalletInfoCase, inviteToGroupCase, + joinGroupCase, + kickFromGroupCase, leaveGroupCase, ltcBalanceCase, nameCase, @@ -1251,7 +1256,7 @@ export async function getPublicKey(receiver) { const MAX_STORAGE_SIZE = 3 * 1024 * 1024; // 3MB in bytes -async function getDataPublishes(groupId, type) { +export async function getDataPublishes(groupId, type) { const wallet = await getSaveWallet(); const address = wallet.address0; @@ -1272,7 +1277,7 @@ async function getDataPublishes(groupId, type) { }); } -async function addDataPublishes(newData, groupId, type) { +export async function addDataPublishes(newData, groupId, type) { const wallet = await getSaveWallet(); const address = wallet.address0; const nameIdentifier = `${newData.name}-${newData.identifier}`; @@ -2206,7 +2211,7 @@ async function removeAdmin({ groupId, qortalAddress }) { return res; } -async function banFromGroup({ +export async function banFromGroup({ groupId, qortalAddress, rBanReason = "", @@ -2240,7 +2245,7 @@ async function banFromGroup({ return res; } -async function kickFromGroup({ groupId, qortalAddress, rBanReason = "" }) { +export async function kickFromGroup({ groupId, qortalAddress, rBanReason = "" }) { const lastReference = await getLastRef(); const resKeyPair = await getKeyPair(); const parsedData = JSON.parse(resKeyPair); @@ -2926,6 +2931,23 @@ function setupMessageListener() { case "leaveGroup": leaveGroupCase(request, event); break; + case "joinGroup": + joinGroupCase(request, event); + break; + case "kickFromGroup": + kickFromGroupCase(request, event); + break; + case "banFromGroup": + banFromGroupCase(request, event); + break; + + case "addDataPublishes": + addDataPublishesCase(request, event); + break; + + case "getDataPublishes": + getDataPublishesCase(request, event); + break; default: console.error("Unknown action:", request.action); } diff --git a/src/components/Group/AddGroupList.tsx b/src/components/Group/AddGroupList.tsx index 4f459e0..17eb3a8 100644 --- a/src/components/Group/AddGroupList.tsx +++ b/src/components/Group/AddGroupList.tsx @@ -108,39 +108,42 @@ export const AddGroupList = ({ setInfoSnack, setOpenSnack }) => { }) setIsLoading(true); await new Promise((res, rej) => { - chrome?.runtime?.sendMessage( - { - action: "joinGroup", - payload: { - groupId, - }, - }, - (response) => { - + window.sendMessage("joinGroup", { + groupId, + }) + .then((response) => { if (!response?.error) { setInfoSnack({ type: "success", message: "Successfully requested to join group. It may take a couple of minutes for the changes to propagate", }); - if(isOpen){ - setTxList((prev)=> [{ - ...response, - type: 'joined-group', - label: `Joined Group ${group?.groupName}: awaiting confirmation`, - labelDone: `Joined Group ${group?.groupName}: success !`, - done: false, - groupId, - }, ...prev]) + + if (isOpen) { + setTxList((prev) => [ + { + ...response, + type: 'joined-group', + label: `Joined Group ${group?.groupName}: awaiting confirmation`, + labelDone: `Joined Group ${group?.groupName}: success!`, + done: false, + groupId, + }, + ...prev, + ]); } else { - setTxList((prev)=> [{ - ...response, - type: 'joined-group-request', - label: `Requested to join Group ${group?.groupName}: awaiting confirmation`, - labelDone: `Requested to join Group ${group?.groupName}: success !`, - done: false, - groupId, - }, ...prev]) + setTxList((prev) => [ + { + ...response, + type: 'joined-group-request', + label: `Requested to join Group ${group?.groupName}: awaiting confirmation`, + labelDone: `Requested to join Group ${group?.groupName}: success!`, + done: false, + groupId, + }, + ...prev, + ]); } + setOpenSnack(true); handlePopoverClose(); res(response); @@ -153,8 +156,16 @@ export const AddGroupList = ({ setInfoSnack, setOpenSnack }) => { setOpenSnack(true); rej(response.error); } - } - ); + }) + .catch((error) => { + setInfoSnack({ + type: "error", + message: error.message || "An error occurred", + }); + setOpenSnack(true); + rej(error); + }); + }); setIsLoading(false); } catch (error) {} finally { diff --git a/src/components/Group/Group.tsx b/src/components/Group/Group.tsx index 9206914..5366402 100644 --- a/src/components/Group/Group.tsx +++ b/src/components/Group/Group.tsx @@ -221,22 +221,22 @@ export const decryptResource = async (data: string) => { export const addDataPublishesFunc = async (data: string, groupId, type) => { try { return new Promise((res, rej) => { - chrome?.runtime?.sendMessage( - { - action: "addDataPublishes", - payload: { - data, - groupId, - type, - }, - }, - (response) => { + window.sendMessage("addDataPublishes", { + data, + groupId, + type, + }) + .then((response) => { if (!response?.error) { res(response); + return; } rej(response.error); - } - ); + }) + .catch((error) => { + rej(error.message || "An error occurred"); + }); + }); } catch (error) {} }; @@ -244,21 +244,21 @@ export const addDataPublishesFunc = async (data: string, groupId, type) => { export const getDataPublishesFunc = async (groupId, type) => { try { return new Promise((res, rej) => { - chrome?.runtime?.sendMessage( - { - action: "getDataPublishes", - payload: { - groupId, - type, - }, - }, - (response) => { + window.sendMessage("getDataPublishes", { + groupId, + type, + }) + .then((response) => { if (!response?.error) { res(response); + return; } rej(response.error); - } - ); + }) + .catch((error) => { + rej(error.message || "An error occurred"); + }); + }); } catch (error) {} }; diff --git a/src/components/Group/ListOfMembers.tsx b/src/components/Group/ListOfMembers.tsx index 54950f6..f7b9b06 100644 --- a/src/components/Group/ListOfMembers.tsx +++ b/src/components/Group/ListOfMembers.tsx @@ -63,21 +63,15 @@ const ListOfMembers = ({ setIsLoadingKick(true); new Promise((res, rej) => { - chrome?.runtime?.sendMessage( - { - action: "kickFromGroup", - payload: { - groupId, - qortalAddress: address, - }, - }, - (response) => { - + window.sendMessage("kickFromGroup", { + groupId, + qortalAddress: address, + }) + .then((response) => { if (!response?.error) { setInfoSnack({ type: "success", - message: - "Successfully kicked member from group. It may take a couple of minutes for the changes to propagate", + message: "Successfully kicked member from group. It may take a couple of minutes for the changes to propagate", }); setOpenSnack(true); handlePopoverClose(); @@ -90,8 +84,16 @@ const ListOfMembers = ({ }); setOpenSnack(true); rej(response.error); - } - ); + }) + .catch((error) => { + setInfoSnack({ + type: "error", + message: error.message || "An error occurred", + }); + setOpenSnack(true); + rej(error); + }); + }); } catch (error) { } finally { @@ -107,22 +109,16 @@ const ListOfMembers = ({ }); setIsLoadingBan(true); await new Promise((res, rej) => { - chrome?.runtime?.sendMessage( - { - action: "banFromGroup", - payload: { - groupId, - qortalAddress: address, - rBanTime: 0, - }, - }, - (response) => { - + window.sendMessage("banFromGroup", { + groupId, + qortalAddress: address, + rBanTime: 0, + }) + .then((response) => { if (!response?.error) { setInfoSnack({ type: "success", - message: - "Successfully banned member from group. It may take a couple of minutes for the changes to propagate", + message: "Successfully banned member from group. It may take a couple of minutes for the changes to propagate", }); setOpenSnack(true); handlePopoverClose(); @@ -135,8 +131,16 @@ const ListOfMembers = ({ }); setOpenSnack(true); rej(response.error); - } - ); + }) + .catch((error) => { + setInfoSnack({ + type: "error", + message: error.message || "An error occurred", + }); + setOpenSnack(true); + rej(error); + }); + }); } catch (error) { } finally { diff --git a/src/components/Group/UserListOfInvites.tsx b/src/components/Group/UserListOfInvites.tsx index 20aa6fb..0b28dd3 100644 --- a/src/components/Group/UserListOfInvites.tsx +++ b/src/components/Group/UserListOfInvites.tsx @@ -85,37 +85,47 @@ export const UserListOfInvites = ({myAddress, setInfoSnack, setOpenSnack}) => { setIsLoading(true); await new Promise((res, rej)=> { - chrome?.runtime?.sendMessage({ action: "joinGroup", payload: { - groupId, - }}, (response) => { - + window.sendMessage("joinGroup", { + groupId, + }) + .then((response) => { if (!response?.error) { - setTxList((prev)=> [{ - ...response, - type: 'joined-group', - label: `Joined Group ${groupName}: awaiting confirmation`, - labelDone: `Joined Group ${groupName}: success !`, - done: false, - groupId, - - }, ...prev]) - res(response) + setTxList((prev) => [ + { + ...response, + type: 'joined-group', + label: `Joined Group ${groupName}: awaiting confirmation`, + labelDone: `Joined Group ${groupName}: success!`, + done: false, + groupId, + }, + ...prev, + ]); + res(response); setInfoSnack({ type: "success", message: "Successfully requested to join group. It may take a couple of minutes for the changes to propagate", }); setOpenSnack(true); handlePopoverClose(); - return + return; } setInfoSnack({ type: "error", message: response?.error, }); setOpenSnack(true); - rej(response.error) - + rej(response.error); + }) + .catch((error) => { + setInfoSnack({ + type: "error", + message: error.message || "An error occurred", + }); + setOpenSnack(true); + rej(error); }); + }) } catch (error) {