This commit is contained in:
PhilReact 2024-10-28 13:56:23 +02:00
parent 4d570068ef
commit cbd372bc07
3 changed files with 983 additions and 882 deletions

View File

@ -32,11 +32,15 @@ import {
registerName,
removeAdmin,
saveTempPublish,
sendChatGroup,
sendChatNotification,
sendCoin,
setChatHeads,
setGroupData,
walletVersion,
} from "./background";
import { encryptAndPublishSymmetricKeyGroupChat } from "./backgroundFunctions/encryption";
import { PUBLIC_NOTIFICATION_CODE_FIRST_SECRET_KEY } from "./constants/codes";
export function versionCase(request, event) {
event.source.postMessage(
@ -186,7 +190,12 @@ export async function balanceCase(request, event) {
const response = await getBalanceInfo();
event.source.postMessage(
{ requestId: request.requestId, action: "balance", payload: response, type: "backgroundMessageResponse" },
{
requestId: request.requestId,
action: "balance",
payload: response,
type: "backgroundMessageResponse",
},
event.origin
);
} catch (error) {
@ -195,7 +204,7 @@ export async function balanceCase(request, event) {
requestId: request.requestId,
action: "balance",
error: error?.message,
type: "backgroundMessageResponse"
type: "backgroundMessageResponse",
},
event.origin
);
@ -206,7 +215,12 @@ export async function balanceCase(request, event) {
const response = await getLTCBalance();
event.source.postMessage(
{ requestId: request.requestId, action: "ltcBalance", payload: response, type: "backgroundMessageResponse" },
{
requestId: request.requestId,
action: "ltcBalance",
payload: response,
type: "backgroundMessageResponse",
},
event.origin
);
} catch (error) {
@ -215,7 +229,7 @@ export async function balanceCase(request, event) {
requestId: request.requestId,
action: "ltcBalance",
error: error?.message,
type: "backgroundMessageResponse"
type: "backgroundMessageResponse",
},
event.origin
);
@ -263,7 +277,11 @@ export async function balanceCase(request, event) {
export async function inviteToGroupCase(request, event) {
try {
const { groupId, qortalAddress, inviteTime } = request.payload;
const response = await inviteToGroup({groupId, qortalAddress, inviteTime});
const response = await inviteToGroup({
groupId,
qortalAddress,
inviteTime,
});
event.source.postMessage(
{
@ -342,18 +360,22 @@ export async function balanceCase(request, event) {
export async function createGroupCase(request, event) {
try {
const { groupName,
const {
groupName,
groupDescription,
groupType,
groupApprovalThreshold,
minBlock,
maxBlock } = request.payload;
const response = await createGroup({groupName,
maxBlock,
} = request.payload;
const response = await createGroup({
groupName,
groupDescription,
groupType,
groupApprovalThreshold,
minBlock,
maxBlock});
maxBlock,
});
event.source.postMessage(
{
@ -461,7 +483,11 @@ export async function balanceCase(request, event) {
export async function kickFromGroupCase(request, event) {
try {
const { groupId, qortalAddress, rBanReason } = request.payload;
const response = await kickFromGroup({groupId, qortalAddress, rBanReason});
const response = await kickFromGroup({
groupId,
qortalAddress,
rBanReason,
});
event.source.postMessage(
{
@ -488,7 +514,12 @@ export async function balanceCase(request, event) {
export async function banFromGroupCase(request, event) {
try {
const { groupId, qortalAddress, rBanReason, rBanTime } = request.payload;
const response = await banFromGroup({groupId, qortalAddress, rBanReason, rBanTime});
const response = await banFromGroup({
groupId,
qortalAddress,
rBanReason,
rBanTime,
});
event.source.postMessage(
{
@ -539,7 +570,6 @@ export async function balanceCase(request, event) {
}
}
export async function getDataPublishesCase(request, event) {
try {
const { groupId, type } = request.payload;
@ -857,7 +887,6 @@ export async function balanceCase(request, event) {
try {
const response = await getApiKeyFromStorage();
event.source.postMessage(
{
requestId: request.requestId,
@ -884,7 +913,6 @@ export async function balanceCase(request, event) {
try {
const response = await getCustomNodesFromStorage();
event.source.postMessage(
{
requestId: request.requestId,
@ -910,7 +938,10 @@ export async function balanceCase(request, event) {
export async function notifyAdminRegenerateSecretKeyCase(request, event) {
try {
const { groupName, adminAddress } = request.payload;
const response = await notifyAdminRegenerateSecretKey({groupName, adminAddress});
const response = await notifyAdminRegenerateSecretKey({
groupName,
adminAddress,
});
event.source.postMessage(
{
@ -937,7 +968,10 @@ export async function balanceCase(request, event) {
export async function addGroupNotificationTimestampCase(request, event) {
try {
const { groupId, timestamp } = request.payload;
const response = await addTimestampGroupAnnouncement({groupId, timestamp});
const response = await addTimestampGroupAnnouncement({
groupId,
timestamp,
});
event.source.postMessage(
{
@ -989,8 +1023,14 @@ export async function balanceCase(request, event) {
export async function setGroupDataCase(request, event) {
try {
const { groupId, secretKeyData, secretKeyResource, admins } = request.payload;
const response = await setGroupData({groupId, secretKeyData, secretKeyResource, admins});
const { groupId, secretKeyData, secretKeyResource, admins } =
request.payload;
const response = await setGroupData({
groupId,
secretKeyData,
secretKeyResource,
admins,
});
event.source.postMessage(
{
@ -1067,7 +1107,6 @@ export async function balanceCase(request, event) {
}
}
export async function getGroupNotificationTimestampCase(request, event) {
try {
const response = await getTimestampGroupAnnouncement();
@ -1093,3 +1132,53 @@ export async function balanceCase(request, event) {
);
}
}
export async function encryptAndPublishSymmetricKeyGroupChatCase(
request,
event
) {
try {
const { groupId, previousData, previousNumber } = request.payload;
const { data, numberOfMembers } =
await encryptAndPublishSymmetricKeyGroupChat({
groupId,
previousData,
previousNumber,
});
event.source.postMessage(
{
requestId: request.requestId,
action: "encryptAndPublishSymmetricKeyGroupChat",
payload: data,
type: "backgroundMessageResponse",
},
event.origin
);
try {
sendChatGroup({
groupId,
typeMessage: undefined,
chatReference: undefined,
messageText: PUBLIC_NOTIFICATION_CODE_FIRST_SECRET_KEY,
});
} catch (error) {
// error in sending chat message
}
try {
sendChatNotification(data, groupId, previousData, numberOfMembers);
} catch (error) {
// error in sending notification
}
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: "encryptAndPublishSymmetricKeyGroupChat",
error: error?.message,
type: "backgroundMessageResponse",
},
event.origin
);
}
}

View File

@ -40,6 +40,7 @@ import {
clearAllNotificationsCase,
createGroupCase,
decryptWalletCase,
encryptAndPublishSymmetricKeyGroupChatCase,
getApiKeyCase,
getCustomNodesFromStorageCase,
getDataPublishesCase,
@ -1660,7 +1661,7 @@ async function sendChat({ qortAddress, recipientPublicKey, message }) {
return _response;
}
async function sendChatGroup({
export async function sendChatGroup({
groupId,
typeMessage,
chatReference,
@ -1991,7 +1992,7 @@ async function createBuyOrderTx({ crosschainAtInfo, useLocal }) {
}
}
async function sendChatNotification(
export async function sendChatNotification(
res,
groupId,
secretKeyObject,
@ -3038,6 +3039,9 @@ function setupMessageListener() {
case "getGroupNotificationTimestamp":
getGroupNotificationTimestampCase(request, event);
break;
case "encryptAndPublishSymmetricKeyGroupChat":
encryptAndPublishSymmetricKeyGroupChatCase(request, event);
break;
default:
console.error("Unknown action:", request.action);
}

View File

@ -107,28 +107,36 @@ export const CreateCommonSecret = ({groupId, secretKey, isOwner, myAddress, sec
const secretKeyToSend = !secretKey2 ? null : secretKey2
chrome?.runtime?.sendMessage({ action: "encryptAndPublishSymmetricKeyGroupChat", payload: {
window.sendMessage("encryptAndPublishSymmetricKeyGroupChat", {
groupId: groupId,
previousData: secretKeyToSend
} }, (response) => {
previousData: secretKeyToSend,
})
.then((response) => {
if (!response?.error) {
setInfoSnack({
type: "success",
message: "Successfully re-encrypted secret key. It may take a couple of minutes for the changes to propagate. Refresh the group in 5mins",
message: "Successfully re-encrypted secret key. It may take a couple of minutes for the changes to propagate. Refresh the group in 5 mins.",
});
setOpenSnack(true);
setTxList((prev)=> [{
setTxList((prev) => [
{
...response,
type: 'created-common-secret',
label: `Published secret key for group ${groupId}: awaiting confirmation`,
labelDone: `Published secret key for group ${groupId}: success!`,
done: false,
groupId,
}, ...prev])
},
...prev,
]);
}
setIsLoading(false)
setIsLoading(false);
})
.catch((error) => {
console.error("Failed to encrypt and publish symmetric key for group chat:", error.message || "An error occurred");
setIsLoading(false);
});
} catch (error) {
}