From 797da47763431b470772d5994ad48142657a9479 Mon Sep 17 00:00:00 2001 From: PhilReact Date: Mon, 28 Oct 2024 09:21:31 +0200 Subject: [PATCH] cases --- src/background-cases.ts | 56 +++++++++++++++++++++ src/background.ts | 17 ++++--- src/components/Chat/GroupAnnouncements.tsx | 21 ++++---- src/components/Group/InviteMember.tsx | 33 ++++++------ src/components/Group/ListOfJoinRequests.tsx | 54 ++++++++++++-------- 5 files changed, 129 insertions(+), 52 deletions(-) diff --git a/src/background-cases.ts b/src/background-cases.ts index 9777fac..80f2f96 100644 --- a/src/background-cases.ts +++ b/src/background-cases.ts @@ -6,6 +6,8 @@ import { getLTCBalance, getNameInfo, getUserInfo, + inviteToGroup, + saveTempPublish, sendCoin, walletVersion, } from "./background"; @@ -230,4 +232,58 @@ export async function balanceCase(request, event) { 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 + ); + } } \ No newline at end of file diff --git a/src/background.ts b/src/background.ts index c9bbdb6..9801a52 100644 --- a/src/background.ts +++ b/src/background.ts @@ -28,7 +28,7 @@ import { validateAddress } from "./utils/validateAddress"; import { Sha256 } from "asmcrypto.js"; import { TradeBotRespondMultipleRequest } from "./transactions/TradeBotRespondMultipleRequest"; import { RESOURCE_TYPE_NUMBER_GROUP_CHAT_REACTIONS } from "./constants/resourceTypes"; -import { balanceCase, decryptWalletCase, getWalletInfoCase, ltcBalanceCase, nameCase, sendCoinCase, userInfoCase, validApiCase, versionCase } from './background-cases'; +import { balanceCase, decryptWalletCase, getWalletInfoCase, inviteToGroupCase, ltcBalanceCase, nameCase, saveTempPublishCase, sendCoinCase, userInfoCase, validApiCase, versionCase } from './background-cases'; export function cleanUrl(url) { return url?.replace(/^(https?:\/\/)?(www\.)?/, ''); @@ -2274,7 +2274,7 @@ async function createGroup({ throw new Error("Transaction was not able to be processed"); return res; } -async function inviteToGroup({ groupId, qortalAddress, inviteTime }) { +export async function inviteToGroup({ groupId, qortalAddress, inviteTime }) { const address = await getNameOrAddress(qortalAddress); if (!address) throw new Error("Cannot find user"); const lastReference = await getLastRef(); @@ -2616,7 +2616,7 @@ async function getTempPublish() { } } -async function saveTempPublish({ data, key }) { +export async function saveTempPublish({ data, key }) { const existingTemp = await getTempPublish(); const wallet = await getSaveWallet(); const address = wallet.address0; @@ -2870,10 +2870,15 @@ function setupMessageListener() { case "ltcBalance": ltcBalanceCase(request, event) break; - case "sendCoin": - sendCoinCase(request, event) + case "sendCoin": + sendCoinCase(request, event) break; - + case "inviteToGroup": + inviteToGroupCase(request, event) + break; + case "saveTempPublish": + saveTempPublishCase(request, event) + break; default: console.error("Unknown action:", request.action); } diff --git a/src/components/Chat/GroupAnnouncements.tsx b/src/components/Chat/GroupAnnouncements.tsx index dee3494..60ab4e9 100644 --- a/src/components/Chat/GroupAnnouncements.tsx +++ b/src/components/Chat/GroupAnnouncements.tsx @@ -48,22 +48,21 @@ export const requestQueuePublishedAccouncements = new RequestQueueWithPromise( export const saveTempPublish = async ({ data, key }: any) => { return new Promise((res, rej) => { - chrome?.runtime?.sendMessage( - { - action: "saveTempPublish", - payload: { - data, - key, - }, - }, - (response) => { + window.sendMessage("saveTempPublish", { + data, + key, + }) + .then((response) => { if (!response?.error) { res(response); return; } rej(response.error); - } - ); + }) + .catch((error) => { + rej(error.message || "An error occurred"); + }); + }); }; diff --git a/src/components/Group/InviteMember.tsx b/src/components/Group/InviteMember.tsx index 12efdda..147c9bb 100644 --- a/src/components/Group/InviteMember.tsx +++ b/src/components/Group/InviteMember.tsx @@ -26,17 +26,12 @@ export const InviteMember = ({ groupId, setInfoSnack, setOpenSnack, show }) => { setIsLoadingInvite(true) if (!expiryTime || !value) return; new Promise((res, rej) => { - chrome?.runtime?.sendMessage( - { - action: "inviteToGroup", - payload: { - groupId, - qortalAddress: value, - inviteTime: +expiryTime, - }, - }, - (response) => { - + window.sendMessage("inviteToGroup", { + groupId, + qortalAddress: value, + inviteTime: +expiryTime, + }) + .then((response) => { if (!response?.error) { setInfoSnack({ type: "success", @@ -44,9 +39,9 @@ export const InviteMember = ({ groupId, setInfoSnack, setOpenSnack, show }) => { }); setOpenSnack(true); res(response); - + setValue(""); - return + return; } setInfoSnack({ type: "error", @@ -54,8 +49,16 @@ export const InviteMember = ({ groupId, setInfoSnack, setOpenSnack, show }) => { }); setOpenSnack(true); rej(response.error); - } - ); + }) + .catch((error) => { + setInfoSnack({ + type: "error", + message: error?.message || "An error occurred", + }); + setOpenSnack(true); + rej(error); + }); + }); } catch (error) {} finally { setIsLoadingInvite(false) diff --git a/src/components/Group/ListOfJoinRequests.tsx b/src/components/Group/ListOfJoinRequests.tsx index b3422da..491c69d 100644 --- a/src/components/Group/ListOfJoinRequests.tsx +++ b/src/components/Group/ListOfJoinRequests.tsx @@ -76,40 +76,54 @@ export const ListOfJoinRequests = ({ groupId, setInfoSnack, setOpenSnack, show } }) setIsLoadingAccept(true) await new Promise((res, rej)=> { - chrome?.runtime?.sendMessage({ action: "inviteToGroup", payload: { - groupId, - qortalAddress: address, - inviteTime: 10800, - }}, (response) => { - + window.sendMessage("inviteToGroup", { + groupId, + qortalAddress: address, + inviteTime: 10800, + }) + .then((response) => { if (!response?.error) { - setIsLoadingAccept(false) + setIsLoadingAccept(false); setInfoSnack({ type: "success", message: "Successfully accepted join request. It may take a couple of minutes for the changes to propagate", }); setOpenSnack(true); handlePopoverClose(); - res(response) - setTxList((prev)=> [{ - ...response, - type: 'join-request-accept', - label: `Accepted join request: awaiting confirmation`, - labelDone: `User successfully joined!`, - done: false, - groupId, - qortalAddress: address - - }, ...prev]) - return + res(response); + + setTxList((prev) => [ + { + ...response, + type: 'join-request-accept', + label: `Accepted join request: awaiting confirmation`, + labelDone: `User successfully joined!`, + done: false, + groupId, + qortalAddress: address, + }, + ...prev, + ]); + + 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) {