diff --git a/src/components/Apps/useQortalMessageListener.tsx b/src/components/Apps/useQortalMessageListener.tsx index 635aba6..e3f5c52 100644 --- a/src/components/Apps/useQortalMessageListener.tsx +++ b/src/components/Apps/useQortalMessageListener.tsx @@ -175,52 +175,127 @@ export function openIndexedDB() { export const listOfAllQortalRequests = [ - 'GET_USER_ACCOUNT', 'DECRYPT_DATA', 'SEND_COIN', 'GET_LIST_ITEMS', - 'ADD_LIST_ITEMS', 'DELETE_LIST_ITEM', 'VOTE_ON_POLL', 'CREATE_POLL', - 'SEND_CHAT_MESSAGE', 'JOIN_GROUP', 'DEPLOY_AT', 'GET_USER_WALLET', - 'GET_WALLET_BALANCE', 'GET_USER_WALLET_INFO', 'GET_CROSSCHAIN_SERVER_INFO', - 'GET_TX_ACTIVITY_SUMMARY', 'GET_FOREIGN_FEE', 'UPDATE_FOREIGN_FEE', - 'GET_SERVER_CONNECTION_HISTORY', 'SET_CURRENT_FOREIGN_SERVER', - 'ADD_FOREIGN_SERVER', 'REMOVE_FOREIGN_SERVER', 'GET_DAY_SUMMARY', 'CREATE_TRADE_BUY_ORDER', 'CREATE_TRADE_SELL_ORDER', 'CANCEL_TRADE_SELL_ORDER', 'IS_USING_PUBLIC_NODE', 'ADMIN_ACTION', 'SIGN_TRANSACTION', 'OPEN_NEW_TAB', 'CREATE_AND_COPY_EMBED_LINK', 'DECRYPT_QORTAL_GROUP_DATA', 'DECRYPT_DATA_WITH_SHARING_KEY', 'DELETE_HOSTED_DATA', 'GET_HOSTED_DATA', 'PUBLISH_MULTIPLE_QDN_RESOURCES', + 'GET_USER_ACCOUNT', + 'DECRYPT_DATA', + 'SEND_COIN', + 'GET_LIST_ITEMS', + 'ADD_LIST_ITEMS', + 'DELETE_LIST_ITEM', + 'VOTE_ON_POLL', + 'CREATE_POLL', + 'SEND_CHAT_MESSAGE', + 'JOIN_GROUP', + 'DEPLOY_AT', + 'GET_USER_WALLET', + 'GET_WALLET_BALANCE', + 'GET_USER_WALLET_INFO', + 'GET_CROSSCHAIN_SERVER_INFO', + 'GET_TX_ACTIVITY_SUMMARY', + 'GET_FOREIGN_FEE', + 'UPDATE_FOREIGN_FEE', + 'GET_SERVER_CONNECTION_HISTORY', + 'SET_CURRENT_FOREIGN_SERVER', + 'ADD_FOREIGN_SERVER', + 'REMOVE_FOREIGN_SERVER', + 'GET_DAY_SUMMARY', + 'CREATE_TRADE_BUY_ORDER', + 'CREATE_TRADE_SELL_ORDER', + 'CANCEL_TRADE_SELL_ORDER', + 'IS_USING_PUBLIC_NODE', + 'ADMIN_ACTION', + 'SIGN_TRANSACTION', + 'OPEN_NEW_TAB', + 'CREATE_AND_COPY_EMBED_LINK', + 'DECRYPT_QORTAL_GROUP_DATA', + 'DECRYPT_DATA_WITH_SHARING_KEY', + 'DELETE_HOSTED_DATA', + 'GET_HOSTED_DATA', + 'PUBLISH_MULTIPLE_QDN_RESOURCES', 'PUBLISH_QDN_RESOURCE', 'ENCRYPT_DATA', 'ENCRYPT_DATA_WITH_SHARING_KEY', 'ENCRYPT_QORTAL_GROUP_DATA', 'SAVE_FILE', 'GET_ACCOUNT_DATA', - 'GET_ACCOUNT_NAMES', - 'SEARCH_NAMES', - 'GET_NAME_DATA', - 'GET_QDN_RESOURCE_URL', - 'LINK_TO_QDN_RESOURCE', - 'LIST_QDN_RESOURCES', - 'SEARCH_QDN_RESOURCES', - 'FETCH_QDN_RESOURCE', - 'GET_QDN_RESOURCE_STATUS', - 'GET_QDN_RESOURCE_PROPERTIES', - 'GET_QDN_RESOURCE_METADATA', - 'SEARCH_CHAT_MESSAGES', - 'LIST_GROUPS', - 'GET_BALANCE', - 'GET_AT', - 'GET_AT_DATA', - 'LIST_ATS', - 'FETCH_BLOCK', - 'FETCH_BLOCK_RANGE', - 'SEARCH_TRANSACTIONS', - 'GET_PRICE', - 'SHOW_ACTIONS', - 'GET_USER_WALLET_TRANSACTIONS' + 'GET_ACCOUNT_NAMES', + 'SEARCH_NAMES', + 'GET_NAME_DATA', + 'GET_QDN_RESOURCE_URL', + 'LINK_TO_QDN_RESOURCE', + 'LIST_QDN_RESOURCES', + 'SEARCH_QDN_RESOURCES', + 'FETCH_QDN_RESOURCE', + 'GET_QDN_RESOURCE_STATUS', + 'GET_QDN_RESOURCE_PROPERTIES', + 'GET_QDN_RESOURCE_METADATA', + 'SEARCH_CHAT_MESSAGES', + 'LIST_GROUPS', + 'GET_BALANCE', + 'GET_AT', + 'GET_AT_DATA', + 'LIST_ATS', + 'FETCH_BLOCK', + 'FETCH_BLOCK_RANGE', + 'SEARCH_TRANSACTIONS', + 'GET_PRICE', + 'SHOW_ACTIONS', + 'GET_USER_WALLET_TRANSACTIONS', + 'GET_NODE_INFO', + 'GET_NODE_STATUS' ] export const UIQortalRequests = [ - 'GET_USER_ACCOUNT', 'DECRYPT_DATA', 'SEND_COIN', 'GET_LIST_ITEMS', - 'ADD_LIST_ITEMS', 'DELETE_LIST_ITEM', 'VOTE_ON_POLL', 'CREATE_POLL', - 'SEND_CHAT_MESSAGE', 'JOIN_GROUP', 'DEPLOY_AT', 'GET_USER_WALLET', - 'GET_WALLET_BALANCE', 'GET_USER_WALLET_INFO', 'GET_CROSSCHAIN_SERVER_INFO', - 'GET_TX_ACTIVITY_SUMMARY', 'GET_FOREIGN_FEE', 'UPDATE_FOREIGN_FEE', - 'GET_SERVER_CONNECTION_HISTORY', 'SET_CURRENT_FOREIGN_SERVER', - 'ADD_FOREIGN_SERVER', 'REMOVE_FOREIGN_SERVER', 'GET_DAY_SUMMARY', 'CREATE_TRADE_BUY_ORDER', 'CREATE_TRADE_SELL_ORDER', 'CANCEL_TRADE_SELL_ORDER', 'IS_USING_PUBLIC_NODE', 'ADMIN_ACTION', 'SIGN_TRANSACTION', 'OPEN_NEW_TAB', 'CREATE_AND_COPY_EMBED_LINK', 'DECRYPT_QORTAL_GROUP_DATA', 'DECRYPT_DATA_WITH_SHARING_KEY', 'DELETE_HOSTED_DATA', 'GET_HOSTED_DATA', 'SHOW_ACTIONS', 'REGISTER_NAME', 'UPDATE_NAME', 'LEAVE_GROUP', 'INVITE_TO_GROUP', 'KICK_FROM_GROUP', 'BAN_FROM_GROUP', 'CANCEL_GROUP_BAN', 'ADD_GROUP_ADMIN', 'REMOVE_GROUP_ADMIN', 'DECRYPT_AESGCM', 'CANCEL_GROUP_INVITE', 'CREATE_GROUP', 'GET_USER_WALLET_TRANSACTIONS' + 'GET_USER_ACCOUNT', + 'DECRYPT_DATA', + 'SEND_COIN', + 'GET_LIST_ITEMS', + 'ADD_LIST_ITEMS', + 'DELETE_LIST_ITEM', + 'VOTE_ON_POLL', + 'CREATE_POLL', + 'SEND_CHAT_MESSAGE', + 'JOIN_GROUP', + 'DEPLOY_AT', + 'GET_USER_WALLET', + 'GET_WALLET_BALANCE', + 'GET_USER_WALLET_INFO', + 'GET_CROSSCHAIN_SERVER_INFO', + 'GET_TX_ACTIVITY_SUMMARY', + 'GET_FOREIGN_FEE', + 'UPDATE_FOREIGN_FEE', + 'GET_SERVER_CONNECTION_HISTORY', + 'SET_CURRENT_FOREIGN_SERVER', + 'ADD_FOREIGN_SERVER', + 'REMOVE_FOREIGN_SERVER', + 'GET_DAY_SUMMARY', + 'CREATE_TRADE_BUY_ORDER', + 'CREATE_TRADE_SELL_ORDER', + 'CANCEL_TRADE_SELL_ORDER', + 'IS_USING_PUBLIC_NODE', + 'ADMIN_ACTION', + 'SIGN_TRANSACTION', + 'OPEN_NEW_TAB', + 'CREATE_AND_COPY_EMBED_LINK', + 'DECRYPT_QORTAL_GROUP_DATA', + 'DECRYPT_DATA_WITH_SHARING_KEY', + 'DELETE_HOSTED_DATA', + 'GET_HOSTED_DATA', + 'SHOW_ACTIONS', + 'REGISTER_NAME', + 'UPDATE_NAME', + 'LEAVE_GROUP', + 'INVITE_TO_GROUP', + 'KICK_FROM_GROUP', + 'BAN_FROM_GROUP', + 'CANCEL_GROUP_BAN', + 'ADD_GROUP_ADMIN', + 'REMOVE_GROUP_ADMIN', + 'DECRYPT_AESGCM', + 'CANCEL_GROUP_INVITE', + 'CREATE_GROUP', + 'GET_USER_WALLET_TRANSACTIONS', + 'GET_NODE_INFO', + 'GET_NODE_STATUS' ]; // TODO listOfAllQortalRequests diff --git a/src/qortalRequests.ts b/src/qortalRequests.ts index 0397538..b2848c4 100644 --- a/src/qortalRequests.ts +++ b/src/qortalRequests.ts @@ -1,6 +1,6 @@ import { gateways, getApiKeyFromStorage } from "./background"; import { listOfAllQortalRequests } from "./components/Apps/useQortalMessageListener"; -import { addForeignServer, addGroupAdminRequest, addListItems, adminAction, banFromGroupRequest, cancelGroupBanRequest, cancelGroupInviteRequest, cancelSellOrder, createAndCopyEmbedLink, createBuyOrder, createGroupRequest, createPoll, createSellOrder, decryptAESGCMRequest, decryptData, decryptDataWithSharingKey, decryptQortalGroupData, deleteHostedData, deleteListItems, deployAt, encryptData, encryptDataWithSharingKey, encryptQortalGroupData, getCrossChainServerInfo, getDaySummary, getForeignFee, getHostedData, getListItems, getServerConnectionHistory, getTxActivitySummary, getUserAccount, getUserWallet, getUserWalletInfo, getUserWalletTransactions, getWalletBalance, inviteToGroupRequest, joinGroup, kickFromGroupRequest, leaveGroupRequest, openNewTab, publishMultipleQDNResources, publishQDNResource, registerNameRequest, removeForeignServer, removeGroupAdminRequest, saveFile, sendChatMessage, sendCoin, setCurrentForeignServer, signTransaction, updateForeignFee, updateNameRequest, voteOnPoll } from "./qortalRequests/get"; +import { addForeignServer, addGroupAdminRequest, addListItems, adminAction, banFromGroupRequest, cancelGroupBanRequest, cancelGroupInviteRequest, cancelSellOrder, createAndCopyEmbedLink, createBuyOrder, createGroupRequest, createPoll, createSellOrder, decryptAESGCMRequest, decryptData, decryptDataWithSharingKey, decryptQortalGroupData, deleteHostedData, deleteListItems, deployAt, encryptData, encryptDataWithSharingKey, encryptQortalGroupData, getCrossChainServerInfo, getDaySummary, getNodeInfo, getNodeStatus, getForeignFee, getHostedData, getListItems, getServerConnectionHistory, getTxActivitySummary, getUserAccount, getUserWallet, getUserWalletInfo, getUserWalletTransactions, getWalletBalance, inviteToGroupRequest, joinGroup, kickFromGroupRequest, leaveGroupRequest, openNewTab, publishMultipleQDNResources, publishQDNResource, registerNameRequest, removeForeignServer, removeGroupAdminRequest, saveFile, sendChatMessage, sendCoin, setCurrentForeignServer, signTransaction, updateForeignFee, updateNameRequest, voteOnPoll } from "./qortalRequests/get"; import { getData, storeData } from "./utils/chromeStorage"; @@ -635,6 +635,46 @@ export const isRunningGateway = async ()=> { break; } + case "GET_NODE_INFO": { + try { + const res = await getNodeInfo(request.payload); + event.source.postMessage({ + requestId: request.requestId, + action: request.action, + payload: res, + type: "backgroundMessageResponse", + }, event.origin); + } catch (error) { + event.source.postMessage({ + requestId: request.requestId, + action: request.action, + error: error.message, + type: "backgroundMessageResponse", + }, event.origin); + } + break; + } + + case "GET_NODE_STATUS": { + try { + const res = await getNodeStatus(request.payload); + event.source.postMessage({ + requestId: request.requestId, + action: request.action, + payload: res, + type: "backgroundMessageResponse", + }, event.origin); + } catch (error) { + event.source.postMessage({ + requestId: request.requestId, + action: request.action, + error: error.message, + type: "backgroundMessageResponse", + }, event.origin); + } + break; + } + case "SEND_COIN": { try { const res = await sendCoin(request.payload, isFromExtension); diff --git a/src/qortalRequests/get.ts b/src/qortalRequests/get.ts index 6e27f8a..66e3006 100644 --- a/src/qortalRequests/get.ts +++ b/src/qortalRequests/get.ts @@ -2883,6 +2883,68 @@ export const getDaySummary = async () => { } }; +export const getNodeInfo = async () => { + const url = `/admin/info`; // Simplified endpoint URL + + try { + const endpoint = await createEndpoint(url); // Assuming createEndpoint is available for constructing the full URL + const response = await fetch(endpoint, { + method: "GET", + headers: { + Accept: "*/*", + }, + }); + + if (!response.ok) throw new Error("Failed to retrieve node info"); + + let res; + try { + res = await response.clone().json(); + } catch (e) { + res = await response.text(); + } + + if (res?.error && res?.message) { + throw new Error(res.message); + } + + return res; // Return the full response + } catch (error) { + throw new Error(error?.message || "Error in retrieving node info"); + } +}; + +export const getNodeStatus = async () => { + const url = `/admin/status`; // Simplified endpoint URL + + try { + const endpoint = await createEndpoint(url); // Assuming createEndpoint is available for constructing the full URL + const response = await fetch(endpoint, { + method: "GET", + headers: { + Accept: "*/*", + }, + }); + + if (!response.ok) throw new Error("Failed to retrieve node status"); + + let res; + try { + res = await response.clone().json(); + } catch (e) { + res = await response.text(); + } + + if (res?.error && res?.message) { + throw new Error(res.message); + } + + return res; // Return the full response + } catch (error) { + throw new Error(error?.message || "Error in retrieving node status"); + } +}; + export const sendCoin = async (data, isFromExtension) => { const requiredFields = ["coin", "amount"]; const missingFields: string[] = [];