This commit is contained in:
PhilReact 2024-10-28 10:10:52 +02:00
parent 66b3933f8f
commit a439b37007
6 changed files with 289 additions and 101 deletions

View File

@ -1,15 +1,20 @@
import { import {
addDataPublishes,
banFromGroup,
cancelInvitationToGroup, cancelInvitationToGroup,
createGroup, createGroup,
decryptWallet, decryptWallet,
findUsableApi, findUsableApi,
getBalanceInfo, getBalanceInfo,
getDataPublishes,
getKeyPair, getKeyPair,
getLTCBalance, getLTCBalance,
getNameInfo, getNameInfo,
getTempPublish, getTempPublish,
getUserInfo, getUserInfo,
inviteToGroup, inviteToGroup,
joinGroup,
kickFromGroup,
leaveGroup, leaveGroup,
saveTempPublish, saveTempPublish,
sendCoin, sendCoin,
@ -407,4 +412,140 @@ export async function balanceCase(request, event) {
event.origin 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
);
}
} }

View File

@ -29,13 +29,18 @@ import { Sha256 } from "asmcrypto.js";
import { TradeBotRespondMultipleRequest } from "./transactions/TradeBotRespondMultipleRequest"; import { TradeBotRespondMultipleRequest } from "./transactions/TradeBotRespondMultipleRequest";
import { RESOURCE_TYPE_NUMBER_GROUP_CHAT_REACTIONS } from "./constants/resourceTypes"; import { RESOURCE_TYPE_NUMBER_GROUP_CHAT_REACTIONS } from "./constants/resourceTypes";
import { import {
addDataPublishesCase,
balanceCase, balanceCase,
banFromGroupCase,
cancelInvitationToGroupCase, cancelInvitationToGroupCase,
createGroupCase, createGroupCase,
decryptWalletCase, decryptWalletCase,
getDataPublishesCase,
getTempPublishCase, getTempPublishCase,
getWalletInfoCase, getWalletInfoCase,
inviteToGroupCase, inviteToGroupCase,
joinGroupCase,
kickFromGroupCase,
leaveGroupCase, leaveGroupCase,
ltcBalanceCase, ltcBalanceCase,
nameCase, nameCase,
@ -1251,7 +1256,7 @@ export async function getPublicKey(receiver) {
const MAX_STORAGE_SIZE = 3 * 1024 * 1024; // 3MB in bytes 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 wallet = await getSaveWallet();
const address = wallet.address0; 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 wallet = await getSaveWallet();
const address = wallet.address0; const address = wallet.address0;
const nameIdentifier = `${newData.name}-${newData.identifier}`; const nameIdentifier = `${newData.name}-${newData.identifier}`;
@ -2206,7 +2211,7 @@ async function removeAdmin({ groupId, qortalAddress }) {
return res; return res;
} }
async function banFromGroup({ export async function banFromGroup({
groupId, groupId,
qortalAddress, qortalAddress,
rBanReason = "", rBanReason = "",
@ -2240,7 +2245,7 @@ async function banFromGroup({
return res; return res;
} }
async function kickFromGroup({ groupId, qortalAddress, rBanReason = "" }) { export async function kickFromGroup({ groupId, qortalAddress, rBanReason = "" }) {
const lastReference = await getLastRef(); const lastReference = await getLastRef();
const resKeyPair = await getKeyPair(); const resKeyPair = await getKeyPair();
const parsedData = JSON.parse(resKeyPair); const parsedData = JSON.parse(resKeyPair);
@ -2926,6 +2931,23 @@ function setupMessageListener() {
case "leaveGroup": case "leaveGroup":
leaveGroupCase(request, event); leaveGroupCase(request, event);
break; 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: default:
console.error("Unknown action:", request.action); console.error("Unknown action:", request.action);
} }

View File

@ -108,39 +108,42 @@ export const AddGroupList = ({ setInfoSnack, setOpenSnack }) => {
}) })
setIsLoading(true); setIsLoading(true);
await new Promise((res, rej) => { await new Promise((res, rej) => {
chrome?.runtime?.sendMessage( window.sendMessage("joinGroup", {
{ groupId,
action: "joinGroup", })
payload: { .then((response) => {
groupId,
},
},
(response) => {
if (!response?.error) { if (!response?.error) {
setInfoSnack({ setInfoSnack({
type: "success", type: "success",
message: "Successfully requested to join group. It may take a couple of minutes for the changes to propagate", message: "Successfully requested to join group. It may take a couple of minutes for the changes to propagate",
}); });
if(isOpen){
setTxList((prev)=> [{ if (isOpen) {
...response, setTxList((prev) => [
type: 'joined-group', {
label: `Joined Group ${group?.groupName}: awaiting confirmation`, ...response,
labelDone: `Joined Group ${group?.groupName}: success !`, type: 'joined-group',
done: false, label: `Joined Group ${group?.groupName}: awaiting confirmation`,
groupId, labelDone: `Joined Group ${group?.groupName}: success!`,
}, ...prev]) done: false,
groupId,
},
...prev,
]);
} else { } else {
setTxList((prev)=> [{ setTxList((prev) => [
...response, {
type: 'joined-group-request', ...response,
label: `Requested to join Group ${group?.groupName}: awaiting confirmation`, type: 'joined-group-request',
labelDone: `Requested to join Group ${group?.groupName}: success !`, label: `Requested to join Group ${group?.groupName}: awaiting confirmation`,
done: false, labelDone: `Requested to join Group ${group?.groupName}: success!`,
groupId, done: false,
}, ...prev]) groupId,
},
...prev,
]);
} }
setOpenSnack(true); setOpenSnack(true);
handlePopoverClose(); handlePopoverClose();
res(response); res(response);
@ -153,8 +156,16 @@ export const AddGroupList = ({ setInfoSnack, setOpenSnack }) => {
setOpenSnack(true); setOpenSnack(true);
rej(response.error); rej(response.error);
} }
} })
); .catch((error) => {
setInfoSnack({
type: "error",
message: error.message || "An error occurred",
});
setOpenSnack(true);
rej(error);
});
}); });
setIsLoading(false); setIsLoading(false);
} catch (error) {} finally { } catch (error) {} finally {

View File

@ -221,22 +221,22 @@ export const decryptResource = async (data: string) => {
export const addDataPublishesFunc = async (data: string, groupId, type) => { export const addDataPublishesFunc = async (data: string, groupId, type) => {
try { try {
return new Promise((res, rej) => { return new Promise((res, rej) => {
chrome?.runtime?.sendMessage( window.sendMessage("addDataPublishes", {
{ data,
action: "addDataPublishes", groupId,
payload: { type,
data, })
groupId, .then((response) => {
type,
},
},
(response) => {
if (!response?.error) { if (!response?.error) {
res(response); res(response);
return;
} }
rej(response.error); rej(response.error);
} })
); .catch((error) => {
rej(error.message || "An error occurred");
});
}); });
} catch (error) {} } catch (error) {}
}; };
@ -244,21 +244,21 @@ export const addDataPublishesFunc = async (data: string, groupId, type) => {
export const getDataPublishesFunc = async (groupId, type) => { export const getDataPublishesFunc = async (groupId, type) => {
try { try {
return new Promise((res, rej) => { return new Promise((res, rej) => {
chrome?.runtime?.sendMessage( window.sendMessage("getDataPublishes", {
{ groupId,
action: "getDataPublishes", type,
payload: { })
groupId, .then((response) => {
type,
},
},
(response) => {
if (!response?.error) { if (!response?.error) {
res(response); res(response);
return;
} }
rej(response.error); rej(response.error);
} })
); .catch((error) => {
rej(error.message || "An error occurred");
});
}); });
} catch (error) {} } catch (error) {}
}; };

View File

@ -63,21 +63,15 @@ const ListOfMembers = ({
setIsLoadingKick(true); setIsLoadingKick(true);
new Promise((res, rej) => { new Promise((res, rej) => {
chrome?.runtime?.sendMessage( window.sendMessage("kickFromGroup", {
{ groupId,
action: "kickFromGroup", qortalAddress: address,
payload: { })
groupId, .then((response) => {
qortalAddress: address,
},
},
(response) => {
if (!response?.error) { if (!response?.error) {
setInfoSnack({ setInfoSnack({
type: "success", type: "success",
message: message: "Successfully kicked member from group. It may take a couple of minutes for the changes to propagate",
"Successfully kicked member from group. It may take a couple of minutes for the changes to propagate",
}); });
setOpenSnack(true); setOpenSnack(true);
handlePopoverClose(); handlePopoverClose();
@ -90,8 +84,16 @@ const ListOfMembers = ({
}); });
setOpenSnack(true); 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) { } catch (error) {
} finally { } finally {
@ -107,22 +109,16 @@ const ListOfMembers = ({
}); });
setIsLoadingBan(true); setIsLoadingBan(true);
await new Promise((res, rej) => { await new Promise((res, rej) => {
chrome?.runtime?.sendMessage( window.sendMessage("banFromGroup", {
{ groupId,
action: "banFromGroup", qortalAddress: address,
payload: { rBanTime: 0,
groupId, })
qortalAddress: address, .then((response) => {
rBanTime: 0,
},
},
(response) => {
if (!response?.error) { if (!response?.error) {
setInfoSnack({ setInfoSnack({
type: "success", type: "success",
message: message: "Successfully banned member from group. It may take a couple of minutes for the changes to propagate",
"Successfully banned member from group. It may take a couple of minutes for the changes to propagate",
}); });
setOpenSnack(true); setOpenSnack(true);
handlePopoverClose(); handlePopoverClose();
@ -135,8 +131,16 @@ const ListOfMembers = ({
}); });
setOpenSnack(true); 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) { } catch (error) {
} finally { } finally {

View File

@ -85,37 +85,47 @@ export const UserListOfInvites = ({myAddress, setInfoSnack, setOpenSnack}) => {
setIsLoading(true); setIsLoading(true);
await new Promise((res, rej)=> { await new Promise((res, rej)=> {
chrome?.runtime?.sendMessage({ action: "joinGroup", payload: { window.sendMessage("joinGroup", {
groupId, groupId,
}}, (response) => { })
.then((response) => {
if (!response?.error) { if (!response?.error) {
setTxList((prev)=> [{ setTxList((prev) => [
...response, {
type: 'joined-group', ...response,
label: `Joined Group ${groupName}: awaiting confirmation`, type: 'joined-group',
labelDone: `Joined Group ${groupName}: success !`, label: `Joined Group ${groupName}: awaiting confirmation`,
done: false, labelDone: `Joined Group ${groupName}: success!`,
groupId, done: false,
groupId,
}, ...prev]) },
res(response) ...prev,
]);
res(response);
setInfoSnack({ setInfoSnack({
type: "success", type: "success",
message: "Successfully requested to join group. It may take a couple of minutes for the changes to propagate", message: "Successfully requested to join group. It may take a couple of minutes for the changes to propagate",
}); });
setOpenSnack(true); setOpenSnack(true);
handlePopoverClose(); handlePopoverClose();
return return;
} }
setInfoSnack({ setInfoSnack({
type: "error", type: "error",
message: response?.error, message: response?.error,
}); });
setOpenSnack(true); 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) { } catch (error) {