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,
getNameInfo,
getUserInfo,
inviteToGroup,
saveTempPublish,
sendCoin,
walletVersion,
} from "./background";
@ -230,4 +232,58 @@ export async function balanceCase(request, event) {
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 { TradeBotRespondMultipleRequest } from "./transactions/TradeBotRespondMultipleRequest";
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) {
return url?.replace(/^(https?:\/\/)?(www\.)?/, '');
@ -2274,7 +2274,7 @@ async function createGroup({
throw new Error("Transaction was not able to be processed");
return res;
}
async function inviteToGroup({ groupId, qortalAddress, inviteTime }) {
export async function inviteToGroup({ groupId, qortalAddress, inviteTime }) {
const address = await getNameOrAddress(qortalAddress);
if (!address) throw new Error("Cannot find user");
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 wallet = await getSaveWallet();
const address = wallet.address0;
@ -2870,10 +2870,15 @@ function setupMessageListener() {
case "ltcBalance":
ltcBalanceCase(request, event)
break;
case "sendCoin":
sendCoinCase(request, event)
case "sendCoin":
sendCoinCase(request, event)
break;
case "inviteToGroup":
inviteToGroupCase(request, event)
break;
case "saveTempPublish":
saveTempPublishCase(request, event)
break;
default:
console.error("Unknown action:", request.action);
}

View File

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

View File

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