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, registerName,
removeAdmin, removeAdmin,
saveTempPublish, saveTempPublish,
sendChatGroup,
sendChatNotification,
sendCoin, sendCoin,
setChatHeads, setChatHeads,
setGroupData, setGroupData,
walletVersion, walletVersion,
} from "./background"; } from "./background";
import { encryptAndPublishSymmetricKeyGroupChat } from "./backgroundFunctions/encryption";
import { PUBLIC_NOTIFICATION_CODE_FIRST_SECRET_KEY } from "./constants/codes";
export function versionCase(request, event) { export function versionCase(request, event) {
event.source.postMessage( event.source.postMessage(
@ -186,7 +190,12 @@ export async function balanceCase(request, event) {
const response = await getBalanceInfo(); const response = await getBalanceInfo();
event.source.postMessage( event.source.postMessage(
{ requestId: request.requestId, action: "balance", payload: response, type: "backgroundMessageResponse" }, {
requestId: request.requestId,
action: "balance",
payload: response,
type: "backgroundMessageResponse",
},
event.origin event.origin
); );
} catch (error) { } catch (error) {
@ -195,7 +204,7 @@ export async function balanceCase(request, event) {
requestId: request.requestId, requestId: request.requestId,
action: "balance", action: "balance",
error: error?.message, error: error?.message,
type: "backgroundMessageResponse" type: "backgroundMessageResponse",
}, },
event.origin event.origin
); );
@ -206,7 +215,12 @@ export async function balanceCase(request, event) {
const response = await getLTCBalance(); const response = await getLTCBalance();
event.source.postMessage( event.source.postMessage(
{ requestId: request.requestId, action: "ltcBalance", payload: response, type: "backgroundMessageResponse" }, {
requestId: request.requestId,
action: "ltcBalance",
payload: response,
type: "backgroundMessageResponse",
},
event.origin event.origin
); );
} catch (error) { } catch (error) {
@ -215,7 +229,7 @@ export async function balanceCase(request, event) {
requestId: request.requestId, requestId: request.requestId,
action: "ltcBalance", action: "ltcBalance",
error: error?.message, error: error?.message,
type: "backgroundMessageResponse" type: "backgroundMessageResponse",
}, },
event.origin event.origin
); );
@ -263,7 +277,11 @@ export async function balanceCase(request, event) {
export async function inviteToGroupCase(request, event) { export async function inviteToGroupCase(request, event) {
try { try {
const { groupId, qortalAddress, inviteTime } = request.payload; const { groupId, qortalAddress, inviteTime } = request.payload;
const response = await inviteToGroup({groupId, qortalAddress, inviteTime}); const response = await inviteToGroup({
groupId,
qortalAddress,
inviteTime,
});
event.source.postMessage( event.source.postMessage(
{ {
@ -342,18 +360,22 @@ export async function balanceCase(request, event) {
export async function createGroupCase(request, event) { export async function createGroupCase(request, event) {
try { try {
const { groupName, const {
groupName,
groupDescription, groupDescription,
groupType, groupType,
groupApprovalThreshold, groupApprovalThreshold,
minBlock, minBlock,
maxBlock } = request.payload; maxBlock,
const response = await createGroup({groupName, } = request.payload;
const response = await createGroup({
groupName,
groupDescription, groupDescription,
groupType, groupType,
groupApprovalThreshold, groupApprovalThreshold,
minBlock, minBlock,
maxBlock}); maxBlock,
});
event.source.postMessage( event.source.postMessage(
{ {
@ -461,7 +483,11 @@ export async function balanceCase(request, event) {
export async function kickFromGroupCase(request, event) { export async function kickFromGroupCase(request, event) {
try { try {
const { groupId, qortalAddress, rBanReason } = request.payload; const { groupId, qortalAddress, rBanReason } = request.payload;
const response = await kickFromGroup({groupId, qortalAddress, rBanReason}); const response = await kickFromGroup({
groupId,
qortalAddress,
rBanReason,
});
event.source.postMessage( event.source.postMessage(
{ {
@ -488,7 +514,12 @@ export async function balanceCase(request, event) {
export async function banFromGroupCase(request, event) { export async function banFromGroupCase(request, event) {
try { try {
const { groupId, qortalAddress, rBanReason, rBanTime } = request.payload; 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( event.source.postMessage(
{ {
@ -539,7 +570,6 @@ export async function balanceCase(request, event) {
} }
} }
export async function getDataPublishesCase(request, event) { export async function getDataPublishesCase(request, event) {
try { try {
const { groupId, type } = request.payload; const { groupId, type } = request.payload;
@ -857,7 +887,6 @@ export async function balanceCase(request, event) {
try { try {
const response = await getApiKeyFromStorage(); const response = await getApiKeyFromStorage();
event.source.postMessage( event.source.postMessage(
{ {
requestId: request.requestId, requestId: request.requestId,
@ -884,7 +913,6 @@ export async function balanceCase(request, event) {
try { try {
const response = await getCustomNodesFromStorage(); const response = await getCustomNodesFromStorage();
event.source.postMessage( event.source.postMessage(
{ {
requestId: request.requestId, requestId: request.requestId,
@ -910,7 +938,10 @@ export async function balanceCase(request, event) {
export async function notifyAdminRegenerateSecretKeyCase(request, event) { export async function notifyAdminRegenerateSecretKeyCase(request, event) {
try { try {
const { groupName, adminAddress } = request.payload; const { groupName, adminAddress } = request.payload;
const response = await notifyAdminRegenerateSecretKey({groupName, adminAddress}); const response = await notifyAdminRegenerateSecretKey({
groupName,
adminAddress,
});
event.source.postMessage( event.source.postMessage(
{ {
@ -937,7 +968,10 @@ export async function balanceCase(request, event) {
export async function addGroupNotificationTimestampCase(request, event) { export async function addGroupNotificationTimestampCase(request, event) {
try { try {
const { groupId, timestamp } = request.payload; const { groupId, timestamp } = request.payload;
const response = await addTimestampGroupAnnouncement({groupId, timestamp}); const response = await addTimestampGroupAnnouncement({
groupId,
timestamp,
});
event.source.postMessage( event.source.postMessage(
{ {
@ -989,8 +1023,14 @@ export async function balanceCase(request, event) {
export async function setGroupDataCase(request, event) { export async function setGroupDataCase(request, event) {
try { try {
const { groupId, secretKeyData, secretKeyResource, admins } = request.payload; const { groupId, secretKeyData, secretKeyResource, admins } =
const response = await setGroupData({groupId, secretKeyData, secretKeyResource, admins}); request.payload;
const response = await setGroupData({
groupId,
secretKeyData,
secretKeyResource,
admins,
});
event.source.postMessage( event.source.postMessage(
{ {
@ -1067,7 +1107,6 @@ export async function balanceCase(request, event) {
} }
} }
export async function getGroupNotificationTimestampCase(request, event) { export async function getGroupNotificationTimestampCase(request, event) {
try { try {
const response = await getTimestampGroupAnnouncement(); 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, clearAllNotificationsCase,
createGroupCase, createGroupCase,
decryptWalletCase, decryptWalletCase,
encryptAndPublishSymmetricKeyGroupChatCase,
getApiKeyCase, getApiKeyCase,
getCustomNodesFromStorageCase, getCustomNodesFromStorageCase,
getDataPublishesCase, getDataPublishesCase,
@ -1660,7 +1661,7 @@ async function sendChat({ qortAddress, recipientPublicKey, message }) {
return _response; return _response;
} }
async function sendChatGroup({ export async function sendChatGroup({
groupId, groupId,
typeMessage, typeMessage,
chatReference, chatReference,
@ -1991,7 +1992,7 @@ async function createBuyOrderTx({ crosschainAtInfo, useLocal }) {
} }
} }
async function sendChatNotification( export async function sendChatNotification(
res, res,
groupId, groupId,
secretKeyObject, secretKeyObject,
@ -3038,6 +3039,9 @@ function setupMessageListener() {
case "getGroupNotificationTimestamp": case "getGroupNotificationTimestamp":
getGroupNotificationTimestampCase(request, event); getGroupNotificationTimestampCase(request, event);
break; break;
case "encryptAndPublishSymmetricKeyGroupChat":
encryptAndPublishSymmetricKeyGroupChatCase(request, event);
break;
default: default:
console.error("Unknown action:", request.action); 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 const secretKeyToSend = !secretKey2 ? null : secretKey2
chrome?.runtime?.sendMessage({ action: "encryptAndPublishSymmetricKeyGroupChat", payload: { window.sendMessage("encryptAndPublishSymmetricKeyGroupChat", {
groupId: groupId, groupId: groupId,
previousData: secretKeyToSend previousData: secretKeyToSend,
} }, (response) => { })
.then((response) => {
if (!response?.error) { if (!response?.error) {
setInfoSnack({ setInfoSnack({
type: "success", 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); setOpenSnack(true);
setTxList((prev)=> [{ setTxList((prev) => [
{
...response, ...response,
type: 'created-common-secret', type: 'created-common-secret',
label: `Published secret key for group ${groupId}: awaiting confirmation`, label: `Published secret key for group ${groupId}: awaiting confirmation`,
labelDone: `Published secret key for group ${groupId}: success!`, labelDone: `Published secret key for group ${groupId}: success!`,
done: false, done: false,
groupId, 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) { } catch (error) {
} }