update qortalRequest buy order

This commit is contained in:
PhilReact 2025-01-16 21:49:07 +02:00
parent a6de6e8a54
commit 9f328c000b

View File

@ -26,6 +26,8 @@ import { decryptResource, getGroupAdmins, getPublishesFromAdmins, validateSecret
import { QORT_DECIMALS } from "../constants/constants"; import { QORT_DECIMALS } from "../constants/constants";
import Base58 from "../deps/Base58"; import Base58 from "../deps/Base58";
import nacl from "../deps/nacl-fast"; import nacl from "../deps/nacl-fast";
import { import {
base64ToUint8Array, base64ToUint8Array,
createSymmetricKeyAndNonce, createSymmetricKeyAndNonce,
@ -52,8 +54,11 @@ import { createTransaction } from "../transactions/transactions";
import { executeEvent } from "../utils/events"; import { executeEvent } from "../utils/events";
import { fileToBase64 } from "../utils/fileReading"; import { fileToBase64 } from "../utils/fileReading";
import { mimeToExtensionMap } from "../utils/memeTypes"; import { mimeToExtensionMap } from "../utils/memeTypes";
import { RequestQueueWithPromise } from "../utils/queue/queue";
import utils from "../utils/utils"; import utils from "../utils/utils";
export const requestQueueGetAtAddresses = new RequestQueueWithPromise(10);
const sellerForeignFee = { const sellerForeignFee = {
LITECOIN: { LITECOIN: {
value: "~0.00005", value: "~0.00005",
@ -2453,8 +2458,10 @@ export const getForeignFee = async (data) => {
}; };
export const updateForeignFee = async (data) => { export const updateForeignFee = async (data) => {
const localNodeAvailable = await isUsingLocal(); const isGateway = await isRunningGateway();
if (!localNodeAvailable) throw new Error("Please use your local node."); if (isGateway) {
throw new Error("This action cannot be done through a gateway");
}
const requiredFields = ["coin", "type", "value"]; const requiredFields = ["coin", "type", "value"];
const missingFields: string[] = []; const missingFields: string[] = [];
@ -2471,7 +2478,7 @@ export const updateForeignFee = async (data) => {
} }
const { coin, type, value } = data; const { coin, type, value } = data;
const url = `/crosschain/${coin}/update${type}`; const url = `/crosschain/${coin.toLowerCase()}/update${type}`;
try { try {
const endpoint = await createEndpoint(url); const endpoint = await createEndpoint(url);
@ -2518,7 +2525,7 @@ export const getServerConnectionHistory = async (data) => {
} }
const coin = data.coin.toLowerCase(); const coin = data.coin.toLowerCase();
const url = `/crosschain/${coin}/serverconnectionhistory`; const url = `/crosschain/${coin.toLowerCase()}/serverconnectionhistory`;
try { try {
const endpoint = await createEndpoint(url); // Assuming createEndpoint is available const endpoint = await createEndpoint(url); // Assuming createEndpoint is available
@ -2551,8 +2558,10 @@ export const getServerConnectionHistory = async (data) => {
}; };
export const setCurrentForeignServer = async (data) => { export const setCurrentForeignServer = async (data) => {
const localNodeAvailable = await isUsingLocal(); const isGateway = await isRunningGateway();
if (!localNodeAvailable) throw new Error("Please use your local node."); if (isGateway) {
throw new Error("This action cannot be done through a gateway");
}
const requiredFields = ["coin"]; const requiredFields = ["coin"];
const missingFields: string[] = []; const missingFields: string[] = [];
@ -2576,7 +2585,7 @@ export const setCurrentForeignServer = async (data) => {
connectionType: type, connectionType: type,
}; };
const url = `/crosschain/${coin}/setcurrentserver`; const url = `/crosschain/${coin.toLowerCase()}/setcurrentserver`;
try { try {
const endpoint = await createEndpoint(url); // Assuming createEndpoint is available const endpoint = await createEndpoint(url); // Assuming createEndpoint is available
@ -2609,8 +2618,10 @@ export const setCurrentForeignServer = async (data) => {
}; };
export const addForeignServer = async (data) => { export const addForeignServer = async (data) => {
const localNodeAvailable = await isUsingLocal(); const isGateway = await isRunningGateway();
if (!localNodeAvailable) throw new Error("Please use your local node."); if (isGateway) {
throw new Error("This action cannot be done through a gateway");
}
const requiredFields = ["coin"]; const requiredFields = ["coin"];
const missingFields: string[] = []; const missingFields: string[] = [];
@ -2634,7 +2645,7 @@ export const addForeignServer = async (data) => {
connectionType: type, connectionType: type,
}; };
const url = `/crosschain/${coin}/addserver`; const url = `/crosschain/${coin.toLowerCase()}/addserver`;
try { try {
const endpoint = await createEndpoint(url); // Assuming createEndpoint is available const endpoint = await createEndpoint(url); // Assuming createEndpoint is available
@ -2667,8 +2678,10 @@ export const addForeignServer = async (data) => {
}; };
export const removeForeignServer = async (data) => { export const removeForeignServer = async (data) => {
const localNodeAvailable = await isUsingLocal(); const isGateway = await isRunningGateway();
if (!localNodeAvailable) throw new Error("Please use your local node."); if (isGateway) {
throw new Error("This action cannot be done through a gateway");
}
const requiredFields = ["coin"]; const requiredFields = ["coin"];
const missingFields: string[] = []; const missingFields: string[] = [];
@ -2692,7 +2705,7 @@ export const removeForeignServer = async (data) => {
connectionType: type, connectionType: type,
}; };
const url = `/crosschain/${coin}/removeserver`; const url = `/crosschain/${coin.toLowerCase()}/removeserver`;
try { try {
const endpoint = await createEndpoint(url); // Assuming createEndpoint is available const endpoint = await createEndpoint(url); // Assuming createEndpoint is available
@ -3201,11 +3214,24 @@ export const createBuyOrder = async (data, isFromExtension) => {
} }
const isGateway = await isRunningGateway(); const isGateway = await isRunningGateway();
const foreignBlockchain = data.foreignBlockchain; const foreignBlockchain = data.foreignBlockchain;
const crosschainAtInfo = data.crosschainAtInfo;
const atAddresses = data.crosschainAtInfo?.map( const atAddresses = data.crosschainAtInfo?.map(
(order) => order.qortalAtAddress (order) => order.qortalAtAddress
); );
const atPromises = atAddresses
.map((atAddress) =>
requestQueueGetAtAddresses.enqueue(async () => {
const url = await createEndpoint(`/crosschain/trade/${atAddress}`)
const resAddress = await fetch(url);
const resData = await resAddress.json();
if(foreignBlockchain !== resData?.foreignBlockchain){
throw new Error('All requested ATs need to be of the same foreign Blockchain.')
}
return resData
})
);
const crosschainAtInfo = await Promise.all(atPromises);
try { try {
const resPermission = await getUserPermission( const resPermission = await getUserPermission(
{ {
@ -3217,7 +3243,7 @@ export const createBuyOrder = async (data, isFromExtension) => {
return latest + +cur?.qortAmount; return latest + +cur?.qortAmount;
}, 0)} QORT FOR ${roundUpToDecimals( }, 0)} QORT FOR ${roundUpToDecimals(
crosschainAtInfo?.reduce((latest, cur) => { crosschainAtInfo?.reduce((latest, cur) => {
return latest + +cur?.foreignAmount; return latest + +cur?.expectedForeignAmount;
}, 0) }, 0)
)} )}
${` ${crosschainAtInfo?.[0]?.foreignBlockchain}`}`, ${` ${crosschainAtInfo?.[0]?.foreignBlockchain}`}`,