diff --git a/src/App.tsx b/src/App.tsx index b410141..3c2372d 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1264,21 +1264,16 @@ function App() { }); setIsLoadingRegisterName(true); new Promise((res, rej) => { - chrome?.runtime?.sendMessage( - { - action: "registerName", - payload: { - name: registerNameValue, - }, - }, - (response) => { + window.sendMessage("registerName", { + name: registerNameValue, + }) + .then((response) => { if (!response?.error) { res(response); setIsLoadingRegisterName(false); setInfoSnack({ type: "success", - message: - "Successfully registered. It may take a couple of minutes for the changes to propagate", + message: "Successfully registered. It may take a couple of minutes for the changes to propagate", }); setOpenRegisterName(false); setRegisterNameValue(""); @@ -1301,8 +1296,16 @@ function App() { }); setOpenSnack(true); rej(response.error); - } - ); + }) + .catch((error) => { + setInfoSnack({ + type: "error", + message: error.message || "An error occurred", + }); + setOpenSnack(true); + rej(error); + }); + }); } catch (error) { if (error?.message) { diff --git a/src/background-cases.ts b/src/background-cases.ts index d194f38..31b0312 100644 --- a/src/background-cases.ts +++ b/src/background-cases.ts @@ -1,6 +1,8 @@ import { addDataPublishes, + addUserSettings, banFromGroup, + cancelBan, cancelInvitationToGroup, createGroup, decryptWallet, @@ -12,10 +14,13 @@ import { getNameInfo, getTempPublish, getUserInfo, + getUserSettings, inviteToGroup, joinGroup, kickFromGroup, leaveGroup, + makeAdmin, + registerName, saveTempPublish, sendCoin, walletVersion, @@ -548,4 +553,138 @@ export async function balanceCase(request, event) { 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 + ); + } } \ No newline at end of file diff --git a/src/background.ts b/src/background.ts index ff2e0ed..f478285 100644 --- a/src/background.ts +++ b/src/background.ts @@ -30,20 +30,25 @@ import { TradeBotRespondMultipleRequest } from "./transactions/TradeBotRespondMu import { RESOURCE_TYPE_NUMBER_GROUP_CHAT_REACTIONS } from "./constants/resourceTypes"; import { addDataPublishesCase, + addUserSettingsCase, balanceCase, banFromGroupCase, + cancelBanCase, cancelInvitationToGroupCase, createGroupCase, decryptWalletCase, getDataPublishesCase, getTempPublishCase, + getUserSettingsCase, getWalletInfoCase, inviteToGroupCase, joinGroupCase, kickFromGroupCase, leaveGroupCase, ltcBalanceCase, + makeAdminCase, nameCase, + registerNameCase, saveTempPublishCase, sendCoinCase, userInfoCase, @@ -1341,7 +1346,7 @@ export async function addDataPublishes(newData, groupId, type) { } // Fetch user settings based on the key -async function getUserSettings({ key }) { +export async function getUserSettings({ key }) { const wallet = await getSaveWallet(); const address = wallet.address0; @@ -1362,7 +1367,7 @@ async function getUserSettings({ key }) { } // Add or update user settings -async function addUserSettings({ keyValue }) { +export async function addUserSettings({ keyValue }) { const wallet = await getSaveWallet(); const address = wallet.address0; const { key, value } = keyValue; @@ -2105,7 +2110,7 @@ export async function cancelInvitationToGroup({ groupId, qortalAddress }) { return res; } -async function cancelBan({ groupId, qortalAddress }) { +export async function cancelBan({ groupId, qortalAddress }) { const lastReference = await getLastRef(); const resKeyPair = await getKeyPair(); const parsedData = JSON.parse(resKeyPair); @@ -2131,7 +2136,7 @@ async function cancelBan({ groupId, qortalAddress }) { throw new Error("Transaction was not able to be processed"); return res; } -async function registerName({ name }) { +export async function registerName({ name }) { const lastReference = await getLastRef(); const resKeyPair = await getKeyPair(); const parsedData = JSON.parse(resKeyPair); @@ -2157,7 +2162,7 @@ async function registerName({ name }) { throw new Error("Transaction was not able to be processed"); return res; } -async function makeAdmin({ groupId, qortalAddress }) { +export async function makeAdmin({ groupId, qortalAddress }) { const lastReference = await getLastRef(); const resKeyPair = await getKeyPair(); const parsedData = JSON.parse(resKeyPair); @@ -2245,7 +2250,11 @@ export async function banFromGroup({ return res; } -export 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); @@ -2922,31 +2931,44 @@ function setupMessageListener() { case "getTempPublish": getTempPublishCase(request, event); break; - case "createGroup": - createGroupCase(request, event); + case "createGroup": + createGroupCase(request, event); + break; + case "cancelInvitationToGroup": + cancelInvitationToGroupCase(request, event); + break; + 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; + case "addUserSettings": + addUserSettingsCase(request, event); + break; + case "cancelBan": + cancelBanCase(request, event); + break; + case "registerName": + registerNameCase(request, event); break; - case "cancelInvitationToGroup": - cancelInvitationToGroupCase(request, event); - break; - 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); + case "makeAdmin": + makeAdminCase(request, event); break; default: console.error("Unknown action:", request.action); diff --git a/src/components/ContextMenu.tsx b/src/components/ContextMenu.tsx index 6779bb0..491e1f7 100644 --- a/src/components/ContextMenu.tsx +++ b/src/components/ContextMenu.tsx @@ -77,17 +77,23 @@ export const ContextMenu = ({ children, groupId, getUserSettings, mutedGroups }) } else { value.push(groupId) } - chrome?.runtime?.sendMessage( - { - action: "addUserSettings", - payload: { - keyValue: { - key: 'mutedGroups', - value - }, - }, + window.sendMessage("addUserSettings", { + keyValue: { + key: 'mutedGroups', + value, + }, + }) + .then((response) => { + if (response?.error) { + console.error("Error adding user settings:", response.error); + } else { + console.log("User settings added successfully"); } - ); + }) + .catch((error) => { + console.error("Failed to add user settings:", error.message || "An error occurred"); + }); + setTimeout(() => { getUserSettings() }, 400); diff --git a/src/components/Group/Group.tsx b/src/components/Group/Group.tsx index 5366402..ce01cd9 100644 --- a/src/components/Group/Group.tsx +++ b/src/components/Group/Group.tsx @@ -475,22 +475,21 @@ export const Group = ({ const getUserSettings = async () => { try { return new Promise((res, rej) => { - chrome?.runtime?.sendMessage( - { - action: "getUserSettings", - payload: { - key: "mutedGroups", - }, - }, - (response) => { + window.sendMessage("getUserSettings", { + key: "mutedGroups", + }) + .then((response) => { if (!response?.error) { setMutedGroups(response || []); res(response); return; } rej(response.error); - } - ); + }) + .catch((error) => { + rej(error.message || "An error occurred"); + }); + }); } catch (error) { console.log("error", error); diff --git a/src/components/Group/ListOfBans.tsx b/src/components/Group/ListOfBans.tsx index 41ef9f4..183653c 100644 --- a/src/components/Group/ListOfBans.tsx +++ b/src/components/Group/ListOfBans.tsx @@ -74,29 +74,38 @@ export const ListOfBans = ({ groupId, setInfoSnack, setOpenSnack, show }) => { }) setIsLoadingUnban(true) new Promise((res, rej)=> { - chrome?.runtime?.sendMessage({ action: "cancelBan", payload: { - groupId, - qortalAddress: address, - }}, (response) => { - + window.sendMessage("cancelBan", { + groupId, + qortalAddress: address, + }) + .then((response) => { if (!response?.error) { - res(response) - setIsLoadingUnban(false) + res(response); + setIsLoadingUnban(false); setInfoSnack({ type: "success", message: "Successfully unbanned user. It may take a couple of minutes for the changes to propagate", }); handlePopoverClose(); setOpenSnack(true); - 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) { diff --git a/src/components/Group/ListOfMembers.tsx b/src/components/Group/ListOfMembers.tsx index f7b9b06..9abb455 100644 --- a/src/components/Group/ListOfMembers.tsx +++ b/src/components/Group/ListOfMembers.tsx @@ -157,21 +157,15 @@ const ListOfMembers = ({ }); setIsLoadingMakeAdmin(true); await new Promise((res, rej) => { - chrome?.runtime?.sendMessage( - { - action: "makeAdmin", - payload: { - groupId, - qortalAddress: address, - }, - }, - (response) => { - + window.sendMessage("makeAdmin", { + groupId, + qortalAddress: address, + }) + .then((response) => { if (!response?.error) { setInfoSnack({ type: "success", - message: - "Successfully made member an admin. It may take a couple of minutes for the changes to propagate", + message: "Successfully made member an admin. It may take a couple of minutes for the changes to propagate", }); setOpenSnack(true); handlePopoverClose(); @@ -184,8 +178,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/Settings.tsx b/src/components/Group/Settings.tsx index cf253d4..945ec70 100644 --- a/src/components/Group/Settings.tsx +++ b/src/components/Group/Settings.tsx @@ -84,17 +84,23 @@ export const Settings = ({ const handleChange = (event: React.ChangeEvent) => { setChecked(event.target.checked); - chrome?.runtime?.sendMessage( - { - action: "addUserSettings", - payload: { - keyValue: { - key: 'disable-push-notifications', - value: event.target.checked - }, - }, - } - ); + window.sendMessage("addUserSettings", { + keyValue: { + key: 'disable-push-notifications', + value: event.target.checked, + }, + }) + .then((response) => { + if (response?.error) { + console.error("Error adding user settings:", response.error); + } else { + console.log("User settings added successfully"); + } + }) + .catch((error) => { + console.error("Failed to add user settings:", error.message || "An error occurred"); + }); + }; const handleClose = () => { @@ -104,22 +110,21 @@ export const Settings = ({ const getUserSettings = async () => { try { return new Promise((res, rej) => { - chrome?.runtime?.sendMessage( - { - action: "getUserSettings", - payload: { - key: "disable-push-notifications", - }, - }, - (response) => { + window.sendMessage("getUserSettings", { + key: "disable-push-notifications", + }) + .then((response) => { if (!response?.error) { setChecked(response || false); res(response); return; } rej(response.error); - } - ); + }) + .catch((error) => { + rej(error.message || "An error occurred"); + }); + }); } catch (error) { console.log("error", error);