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,18 +204,23 @@ 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
); );
} }
} }
export async function ltcBalanceCase(request, event) { export async function ltcBalanceCase(request, event) {
try { try {
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,17 +229,17 @@ 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
); );
} }
} }
export async function sendCoinCase(request, event) { export async function sendCoinCase(request, event) {
try { try {
const { receiver, password, amount } = request.payload; const { receiver, password, amount } = request.payload;
const { res } = await sendCoin({receiver, password, amount}); const { res } = await sendCoin({ receiver, password, amount });
if (!res?.success) { if (!res?.success) {
event.source.postMessage( event.source.postMessage(
{ {
@ -258,12 +272,16 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
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(
{ {
@ -285,12 +303,12 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function saveTempPublishCase(request, event) { export async function saveTempPublishCase(request, event) {
try { try {
const { data, key } = request.payload; const { data, key } = request.payload;
const response = await saveTempPublish({data, key}); const response = await saveTempPublish({ data, key });
event.source.postMessage( event.source.postMessage(
{ {
@ -312,9 +330,9 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function getTempPublishCase(request, event) { export async function getTempPublishCase(request, event) {
try { try {
const response = await getTempPublish(); const response = await getTempPublish();
@ -338,22 +356,26 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
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(
{ {
@ -375,12 +397,12 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function cancelInvitationToGroupCase(request, event) { export async function cancelInvitationToGroupCase(request, event) {
try { try {
const { groupId, qortalAddress } = request.payload; const { groupId, qortalAddress } = request.payload;
const response = await cancelInvitationToGroup({groupId, qortalAddress}); const response = await cancelInvitationToGroup({ groupId, qortalAddress });
event.source.postMessage( event.source.postMessage(
{ {
@ -402,12 +424,12 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function leaveGroupCase(request, event) { export async function leaveGroupCase(request, event) {
try { try {
const { groupId, qortalAddress } = request.payload; const { groupId, qortalAddress } = request.payload;
const response = await leaveGroup({groupId, qortalAddress}); const response = await leaveGroup({ groupId, qortalAddress });
event.source.postMessage( event.source.postMessage(
{ {
@ -429,12 +451,12 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function joinGroupCase(request, event) { export async function joinGroupCase(request, event) {
try { try {
const { groupId } = request.payload; const { groupId } = request.payload;
const response = await joinGroup({groupId}); const response = await joinGroup({ groupId });
event.source.postMessage( event.source.postMessage(
{ {
@ -456,12 +478,16 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
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(
{ {
@ -483,12 +509,17 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
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(
{ {
@ -510,12 +541,12 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function addDataPublishesCase(request, event) { export async function addDataPublishesCase(request, event) {
try { try {
const { data, groupId, type } = request.payload; const { data, groupId, type } = request.payload;
const response = await addDataPublishes({data, groupId, type}); const response = await addDataPublishes({ data, groupId, type });
event.source.postMessage( event.source.postMessage(
{ {
@ -537,13 +568,12 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function getDataPublishesCase(request, event) {
export async function getDataPublishesCase(request, event) {
try { try {
const { groupId, type } = request.payload; const { groupId, type } = request.payload;
const response = await getDataPublishes({groupId, type}); const response = await getDataPublishes({ groupId, type });
event.source.postMessage( event.source.postMessage(
{ {
@ -565,11 +595,11 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function addUserSettingsCase(request, event) { export async function addUserSettingsCase(request, event) {
try { try {
const { keyValue } = request.payload; const { keyValue } = request.payload;
const response = await addUserSettings({keyValue}); const response = await addUserSettings({ keyValue });
event.source.postMessage( event.source.postMessage(
{ {
@ -591,12 +621,12 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function getUserSettingsCase(request, event) { export async function getUserSettingsCase(request, event) {
try { try {
const { key } = request.payload; const { key } = request.payload;
const response = await getUserSettings({key}); const response = await getUserSettings({ key });
event.source.postMessage( event.source.postMessage(
{ {
@ -618,12 +648,12 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function cancelBanCase(request, event) { export async function cancelBanCase(request, event) {
try { try {
const { groupId, qortalAddress } = request.payload; const { groupId, qortalAddress } = request.payload;
const response = await cancelBan({groupId, qortalAddress}); const response = await cancelBan({ groupId, qortalAddress });
event.source.postMessage( event.source.postMessage(
{ {
@ -645,12 +675,12 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function registerNameCase(request, event) { export async function registerNameCase(request, event) {
try { try {
const { name } = request.payload; const { name } = request.payload;
const response = await registerName({name}); const response = await registerName({ name });
event.source.postMessage( event.source.postMessage(
{ {
@ -672,12 +702,12 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function makeAdminCase(request, event) { export async function makeAdminCase(request, event) {
try { try {
const { groupId, qortalAddress } = request.payload; const { groupId, qortalAddress } = request.payload;
const response = await makeAdmin({groupId, qortalAddress}); const response = await makeAdmin({ groupId, qortalAddress });
event.source.postMessage( event.source.postMessage(
{ {
@ -699,12 +729,12 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function removeAdminCase(request, event) { export async function removeAdminCase(request, event) {
try { try {
const { groupId, qortalAddress } = request.payload; const { groupId, qortalAddress } = request.payload;
const response = await removeAdmin({groupId, qortalAddress}); const response = await removeAdmin({ groupId, qortalAddress });
event.source.postMessage( event.source.postMessage(
{ {
@ -726,9 +756,9 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function notificationCase(request, event) { export async function notificationCase(request, event) {
try { try {
const notificationId = "chat_notification_" + Date.now(); // Create a unique ID const notificationId = "chat_notification_" + Date.now(); // Create a unique ID
@ -767,12 +797,12 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function addTimestampEnterChatCase(request, event) { export async function addTimestampEnterChatCase(request, event) {
try { try {
const { groupId, timestamp } = request.payload; const { groupId, timestamp } = request.payload;
const response = await addTimestampEnterChat({groupId, timestamp}); const response = await addTimestampEnterChat({ groupId, timestamp });
event.source.postMessage( event.source.postMessage(
{ {
@ -794,9 +824,9 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function setApiKeyCase(request, event) { export async function setApiKeyCase(request, event) {
try { try {
const payload = request.payload; const payload = request.payload;
chrome.storage.local.set({ apiKey: payload }, () => { chrome.storage.local.set({ apiKey: payload }, () => {
@ -823,8 +853,8 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function setCustomNodesCase(request, event) { export async function setCustomNodesCase(request, event) {
try { try {
const nodes = request.payload; const nodes = request.payload;
chrome.storage.local.set({ customNodes: nodes }, () => { chrome.storage.local.set({ customNodes: nodes }, () => {
@ -851,13 +881,12 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function getApiKeyCase(request, event) { export async function getApiKeyCase(request, event) {
try { try {
const response = await getApiKeyFromStorage(); const response = await getApiKeyFromStorage();
event.source.postMessage( event.source.postMessage(
{ {
requestId: request.requestId, requestId: request.requestId,
@ -878,13 +907,12 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function getCustomNodesFromStorageCase(request, event) { export async function getCustomNodesFromStorageCase(request, event) {
try { try {
const response = await getCustomNodesFromStorage(); const response = await getCustomNodesFromStorage();
event.source.postMessage( event.source.postMessage(
{ {
requestId: request.requestId, requestId: request.requestId,
@ -905,12 +933,15 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
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(
{ {
@ -932,12 +963,15 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
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(
{ {
@ -959,9 +993,9 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function clearAllNotificationsCase(request, event) { export async function clearAllNotificationsCase(request, event) {
try { try {
await clearAllNotifications(); await clearAllNotifications();
@ -985,12 +1019,18 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
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(
{ {
@ -1012,12 +1052,12 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function getGroupDataSingleCase(request, event) { export async function getGroupDataSingleCase(request, event) {
try { try {
const { groupId } = request.payload; const { groupId } = request.payload;
const response = await getGroupDataSingle({groupId}); const response = await getGroupDataSingle({ groupId });
event.source.postMessage( event.source.postMessage(
{ {
@ -1039,9 +1079,9 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function getTimestampEnterChatCase(request, event) { export async function getTimestampEnterChatCase(request, event) {
try { try {
const response = await getTimestampEnterChat(); const response = await getTimestampEnterChat();
@ -1065,10 +1105,9 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
} }
export async function getGroupNotificationTimestampCase(request, event) {
export async function getGroupNotificationTimestampCase(request, event) {
try { try {
const response = await getTimestampGroupAnnouncement(); const response = await getTimestampGroupAnnouncement();
@ -1092,4 +1131,54 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
}
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) {
} }