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