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 {
addDataPublishes,
banFromGroup,
cancelInvitationToGroup,
createGroup,
decryptWallet,
findUsableApi,
getBalanceInfo,
getDataPublishes,
getKeyPair,
getLTCBalance,
getNameInfo,
getTempPublish,
getUserInfo,
inviteToGroup,
joinGroup,
kickFromGroup,
leaveGroup,
saveTempPublish,
sendCoin,
@ -408,3 +413,139 @@ export async function balanceCase(request, event) {
);
}
}
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 { 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);
}

View File

@ -108,39 +108,42 @@ export const AddGroupList = ({ setInfoSnack, setOpenSnack }) => {
})
setIsLoading(true);
await new Promise((res, rej) => {
chrome?.runtime?.sendMessage(
{
action: "joinGroup",
payload: {
window.sendMessage("joinGroup", {
groupId,
},
},
(response) => {
})
.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)=> [{
setTxList((prev) => [
{
...response,
type: 'joined-group',
label: `Joined Group ${group?.groupName}: awaiting confirmation`,
labelDone: `Joined Group ${group?.groupName}: success!`,
done: false,
groupId,
}, ...prev])
},
...prev,
]);
} else {
setTxList((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])
},
...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 {

View File

@ -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: {
window.sendMessage("addDataPublishes", {
data,
groupId,
type,
},
},
(response) => {
})
.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: {
window.sendMessage("getDataPublishes", {
groupId,
type,
},
},
(response) => {
})
.then((response) => {
if (!response?.error) {
res(response);
return;
}
rej(response.error);
}
);
})
.catch((error) => {
rej(error.message || "An error occurred");
});
});
} catch (error) {}
};

View File

@ -63,21 +63,15 @@ const ListOfMembers = ({
setIsLoadingKick(true);
new Promise((res, rej) => {
chrome?.runtime?.sendMessage(
{
action: "kickFromGroup",
payload: {
window.sendMessage("kickFromGroup", {
groupId,
qortalAddress: address,
},
},
(response) => {
})
.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: {
window.sendMessage("banFromGroup", {
groupId,
qortalAddress: address,
rBanTime: 0,
},
},
(response) => {
})
.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 {

View File

@ -85,37 +85,47 @@ export const UserListOfInvites = ({myAddress, setInfoSnack, setOpenSnack}) => {
setIsLoading(true);
await new Promise((res, rej)=> {
chrome?.runtime?.sendMessage({ action: "joinGroup", payload: {
window.sendMessage("joinGroup", {
groupId,
}}, (response) => {
})
.then((response) => {
if (!response?.error) {
setTxList((prev)=> [{
setTxList((prev) => [
{
...response,
type: 'joined-group',
label: `Joined Group ${groupName}: awaiting confirmation`,
labelDone: `Joined Group ${groupName}: success!`,
done: false,
groupId,
}, ...prev])
res(response)
},
...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) {