This commit is contained in:
PhilReact 2024-10-28 09:21:31 +02:00
parent 8afc3789c9
commit 797da47763
5 changed files with 129 additions and 52 deletions

View File

@ -6,6 +6,8 @@ import {
getLTCBalance, getLTCBalance,
getNameInfo, getNameInfo,
getUserInfo, getUserInfo,
inviteToGroup,
saveTempPublish,
sendCoin, sendCoin,
walletVersion, walletVersion,
} from "./background"; } from "./background";
@ -230,4 +232,58 @@ export async function balanceCase(request, event) {
event.origin event.origin
); );
} }
}
export async function inviteToGroupCase(request, event) {
try {
const { groupId, qortalAddress, inviteTime } = request.payload;
const response = await inviteToGroup({groupId, qortalAddress, inviteTime});
event.source.postMessage(
{
requestId: request.requestId,
action: "inviteToGroup",
payload: response,
type: "backgroundMessageResponse",
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: "inviteToGroup",
error: error?.message,
type: "backgroundMessageResponse",
},
event.origin
);
}
}
export async function saveTempPublishCase(request, event) {
try {
const { data, key } = request.payload;
const response = await saveTempPublish({data, key});
event.source.postMessage(
{
requestId: request.requestId,
action: "saveTempPublish",
payload: response,
type: "backgroundMessageResponse",
},
event.origin
);
} catch (error) {
event.source.postMessage(
{
requestId: request.requestId,
action: "saveTempPublish",
error: error?.message,
type: "backgroundMessageResponse",
},
event.origin
);
}
} }

View File

@ -28,7 +28,7 @@ import { validateAddress } from "./utils/validateAddress";
import { Sha256 } from "asmcrypto.js"; import { Sha256 } from "asmcrypto.js";
import { TradeBotRespondMultipleRequest } from "./transactions/TradeBotRespondMultipleRequest"; import { TradeBotRespondMultipleRequest } from "./transactions/TradeBotRespondMultipleRequest";
import { RESOURCE_TYPE_NUMBER_GROUP_CHAT_REACTIONS } from "./constants/resourceTypes"; import { RESOURCE_TYPE_NUMBER_GROUP_CHAT_REACTIONS } from "./constants/resourceTypes";
import { balanceCase, decryptWalletCase, getWalletInfoCase, ltcBalanceCase, nameCase, sendCoinCase, userInfoCase, validApiCase, versionCase } from './background-cases'; import { balanceCase, decryptWalletCase, getWalletInfoCase, inviteToGroupCase, ltcBalanceCase, nameCase, saveTempPublishCase, sendCoinCase, userInfoCase, validApiCase, versionCase } from './background-cases';
export function cleanUrl(url) { export function cleanUrl(url) {
return url?.replace(/^(https?:\/\/)?(www\.)?/, ''); return url?.replace(/^(https?:\/\/)?(www\.)?/, '');
@ -2274,7 +2274,7 @@ async function createGroup({
throw new Error("Transaction was not able to be processed"); throw new Error("Transaction was not able to be processed");
return res; return res;
} }
async function inviteToGroup({ groupId, qortalAddress, inviteTime }) { export async function inviteToGroup({ groupId, qortalAddress, inviteTime }) {
const address = await getNameOrAddress(qortalAddress); const address = await getNameOrAddress(qortalAddress);
if (!address) throw new Error("Cannot find user"); if (!address) throw new Error("Cannot find user");
const lastReference = await getLastRef(); const lastReference = await getLastRef();
@ -2616,7 +2616,7 @@ async function getTempPublish() {
} }
} }
async function saveTempPublish({ data, key }) { export async function saveTempPublish({ data, key }) {
const existingTemp = await getTempPublish(); const existingTemp = await getTempPublish();
const wallet = await getSaveWallet(); const wallet = await getSaveWallet();
const address = wallet.address0; const address = wallet.address0;
@ -2870,10 +2870,15 @@ function setupMessageListener() {
case "ltcBalance": case "ltcBalance":
ltcBalanceCase(request, event) ltcBalanceCase(request, event)
break; break;
case "sendCoin": case "sendCoin":
sendCoinCase(request, event) sendCoinCase(request, event)
break; break;
case "inviteToGroup":
inviteToGroupCase(request, event)
break;
case "saveTempPublish":
saveTempPublishCase(request, event)
break;
default: default:
console.error("Unknown action:", request.action); console.error("Unknown action:", request.action);
} }

View File

@ -48,22 +48,21 @@ export const requestQueuePublishedAccouncements = new RequestQueueWithPromise(
export const saveTempPublish = async ({ data, key }: any) => { export const saveTempPublish = async ({ data, key }: any) => {
return new Promise((res, rej) => { return new Promise((res, rej) => {
chrome?.runtime?.sendMessage( window.sendMessage("saveTempPublish", {
{ data,
action: "saveTempPublish", key,
payload: { })
data, .then((response) => {
key,
},
},
(response) => {
if (!response?.error) { if (!response?.error) {
res(response); res(response);
return; return;
} }
rej(response.error); rej(response.error);
} })
); .catch((error) => {
rej(error.message || "An error occurred");
});
}); });
}; };

View File

@ -26,17 +26,12 @@ export const InviteMember = ({ groupId, setInfoSnack, setOpenSnack, show }) => {
setIsLoadingInvite(true) setIsLoadingInvite(true)
if (!expiryTime || !value) return; if (!expiryTime || !value) return;
new Promise((res, rej) => { new Promise((res, rej) => {
chrome?.runtime?.sendMessage( window.sendMessage("inviteToGroup", {
{ groupId,
action: "inviteToGroup", qortalAddress: value,
payload: { inviteTime: +expiryTime,
groupId, })
qortalAddress: value, .then((response) => {
inviteTime: +expiryTime,
},
},
(response) => {
if (!response?.error) { if (!response?.error) {
setInfoSnack({ setInfoSnack({
type: "success", type: "success",
@ -44,9 +39,9 @@ export const InviteMember = ({ groupId, setInfoSnack, setOpenSnack, show }) => {
}); });
setOpenSnack(true); setOpenSnack(true);
res(response); res(response);
setValue(""); setValue("");
return return;
} }
setInfoSnack({ setInfoSnack({
type: "error", type: "error",
@ -54,8 +49,16 @@ export const InviteMember = ({ groupId, setInfoSnack, setOpenSnack, show }) => {
}); });
setOpenSnack(true); 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) {} finally { } catch (error) {} finally {
setIsLoadingInvite(false) setIsLoadingInvite(false)

View File

@ -76,40 +76,54 @@ export const ListOfJoinRequests = ({ groupId, setInfoSnack, setOpenSnack, show }
}) })
setIsLoadingAccept(true) setIsLoadingAccept(true)
await new Promise((res, rej)=> { await new Promise((res, rej)=> {
chrome?.runtime?.sendMessage({ action: "inviteToGroup", payload: { window.sendMessage("inviteToGroup", {
groupId, groupId,
qortalAddress: address, qortalAddress: address,
inviteTime: 10800, inviteTime: 10800,
}}, (response) => { })
.then((response) => {
if (!response?.error) { if (!response?.error) {
setIsLoadingAccept(false) setIsLoadingAccept(false);
setInfoSnack({ setInfoSnack({
type: "success", type: "success",
message: "Successfully accepted join request. It may take a couple of minutes for the changes to propagate", message: "Successfully accepted join request. It may take a couple of minutes for the changes to propagate",
}); });
setOpenSnack(true); setOpenSnack(true);
handlePopoverClose(); handlePopoverClose();
res(response) res(response);
setTxList((prev)=> [{
...response, setTxList((prev) => [
type: 'join-request-accept', {
label: `Accepted join request: awaiting confirmation`, ...response,
labelDone: `User successfully joined!`, type: 'join-request-accept',
done: false, label: `Accepted join request: awaiting confirmation`,
groupId, labelDone: `User successfully joined!`,
qortalAddress: address done: false,
groupId,
}, ...prev]) qortalAddress: address,
return },
...prev,
]);
return;
} }
setInfoSnack({ setInfoSnack({
type: "error", type: "error",
message: response?.error, message: response?.error,
}); });
setOpenSnack(true); 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) { } catch (error) {