From 808a6fa5d7d1f6933f0691e21d5c3b202a783cf4 Mon Sep 17 00:00:00 2001 From: IrohDW Date: Wed, 25 Oct 2023 15:34:13 -0600 Subject: [PATCH] Added functions for getting wallet balance and user data restructured project files to be easier to understand --- index.ts | 23 ++- package-lock.json | 69 +++++-- package.json | 3 +- src/{Core => QortalRequest}/SendCoin.ts | 4 +- .../API => QortalRequest}/Transactions.ts | 2 +- src/{Core => QortalRequest/Utils}/Fetch.ts | 0 .../Utils}/Interfaces.ts | 2 +- src/{Core => QortalRequest/Utils}/Types.ts | 2 + .../getFromAddress.ts} | 11 +- src/QortalRequest/getFromSelf.ts | 22 +++ src/{ => TypescriptUtils}/Numbers/Colors.ts | 0 .../Numbers/NumberConversion.ts | 0 src/{ => TypescriptUtils}/Numbers/Numbers.ts | 0 .../Numbers/StringNumbers.ts | 0 .../Strings/printFunctions.ts | 0 src/global.d.ts | 174 +++++++++--------- tsconfig.json | 16 +- vite.config.ts | 2 +- 18 files changed, 209 insertions(+), 121 deletions(-) rename src/{Core => QortalRequest}/SendCoin.ts (94%) rename src/{Core/API => QortalRequest}/Transactions.ts (90%) rename src/{Core => QortalRequest/Utils}/Fetch.ts (100%) rename src/{Core => QortalRequest/Utils}/Interfaces.ts (96%) rename src/{Core => QortalRequest/Utils}/Types.ts (91%) rename src/{Core/API/Names.ts => QortalRequest/getFromAddress.ts} (66%) create mode 100644 src/QortalRequest/getFromSelf.ts rename src/{ => TypescriptUtils}/Numbers/Colors.ts (100%) rename src/{ => TypescriptUtils}/Numbers/NumberConversion.ts (100%) rename src/{ => TypescriptUtils}/Numbers/Numbers.ts (100%) rename src/{ => TypescriptUtils}/Numbers/StringNumbers.ts (100%) rename src/{ => TypescriptUtils}/Strings/printFunctions.ts (100%) diff --git a/index.ts b/index.ts index 8c0f4bf..64f5b21 100644 --- a/index.ts +++ b/index.ts @@ -1,10 +1,13 @@ -export * from "./src/Core/Interfaces"; -export * from "./src/Core/SendCoin"; -export * from "./src/Core/Types"; -export * from "./src/Core/API/Names"; -export * from "./src/Core/API/Transactions"; -export * from "./src/Numbers/Colors"; -export * from "./src/Numbers/NumberConversion"; -export * from "./src/Numbers/Numbers"; -export * from "./src/Numbers/StringNumbers"; -export * from "./src/Strings/printFunctions"; +export * from "./src/TypescriptUtils/Numbers/Colors"; +export * from "./src/TypescriptUtils/Numbers/NumberConversion"; +export * from "./src/TypescriptUtils/Numbers/Numbers"; +export * from "./src/TypescriptUtils/Numbers/StringNumbers"; +export * from "./src/TypescriptUtils/Strings/printFunctions"; + +export * from "./src/QortalRequest/Utils/Interfaces"; +export * from "./src/QortalRequest/Utils/Types"; + +export * from "./src/QortalRequest/getFromAddress"; +export * from "./src/QortalRequest/getFromSelf"; +export * from "./src/QortalRequest/SendCoin"; +export * from "./src/QortalRequest/Transactions"; diff --git a/package-lock.json b/package-lock.json index b35a18b..64c0dfe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "qortal-app-utils", - "version": "1.1.0", + "version": "1.1.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "qortal-app-utils", - "version": "1.1.0", + "version": "1.1.1", "dependencies": { "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", @@ -22,7 +22,8 @@ "react-intersection-observer": "^9.4.3", "react-quill": "^2.0.0", "react-rnd": "^10.4.1", - "ts-key-enum": "^2.0.12" + "ts-key-enum": "^2.0.12", + "vite-tsconfig-paths": "^4.2.1" }, "devDependencies": { "@types/react": "^18.0.28", @@ -1949,7 +1950,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -2050,7 +2050,7 @@ "version": "0.18.20", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", - "dev": true, + "devOptional": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -2658,6 +2658,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -3071,14 +3076,13 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nanoid": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -3294,7 +3298,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "devOptional": true }, "node_modules/picomatch": { "version": "2.3.1", @@ -3312,7 +3316,7 @@ "version": "8.4.29", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", - "dev": true, + "devOptional": true, "funding": [ { "type": "opencollective", @@ -3646,7 +3650,7 @@ "version": "3.28.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.28.1.tgz", "integrity": "sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==", - "dev": true, + "devOptional": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -3764,7 +3768,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -3851,6 +3855,25 @@ "resolved": "https://registry.npmjs.org/ts-key-enum/-/ts-key-enum-2.0.12.tgz", "integrity": "sha512-Ety4IvKMaeG34AyXMp5r11XiVZNDRL+XWxXbVVJjLvq2vxKRttEANBE7Za1bxCAZRdH2/sZT6jFyyTWxXz28hw==" }, + "node_modules/tsconfck": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-2.1.2.tgz", + "integrity": "sha512-ghqN1b0puy3MhhviwO2kGF8SeMDNhEbnKxjK7h6+fvY9JAxqvXi8y5NAHSQv687OVboS2uZIByzGd45/YxrRHg==", + "bin": { + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^14.13.1 || ^16 || >=18" + }, + "peerDependencies": { + "typescript": "^4.3.5 || ^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -3905,7 +3928,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "dev": true, + "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -3962,7 +3985,7 @@ "version": "4.4.9", "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", - "dev": true, + "devOptional": true, "dependencies": { "esbuild": "^0.18.10", "postcss": "^8.4.27", @@ -4013,6 +4036,24 @@ } } }, + "node_modules/vite-tsconfig-paths": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.1.tgz", + "integrity": "sha512-GNUI6ZgPqT3oervkvzU+qtys83+75N/OuDaQl7HmOqFTb0pjZsuARrRipsyJhJ3enqV8beI1xhGbToR4o78nSQ==", + "dependencies": { + "debug": "^4.1.1", + "globrex": "^0.1.2", + "tsconfck": "^2.1.0" + }, + "peerDependencies": { + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 4debbe0..7b7af85 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,8 @@ "react-intersection-observer": "^9.4.3", "react-quill": "^2.0.0", "react-rnd": "^10.4.1", - "ts-key-enum": "^2.0.12" + "ts-key-enum": "^2.0.12", + "vite-tsconfig-paths": "^4.2.1" }, "devDependencies": { "@types/react": "^18.0.28", diff --git a/src/Core/SendCoin.ts b/src/QortalRequest/SendCoin.ts similarity index 94% rename from src/Core/SendCoin.ts rename to src/QortalRequest/SendCoin.ts index 14478b3..35e788f 100644 --- a/src/Core/SendCoin.ts +++ b/src/QortalRequest/SendCoin.ts @@ -1,7 +1,9 @@ +import { CoinType } from "./Utils/Types"; + export const sendCoin = async ( address: string, amount: number, - coin: string + coin: CoinType ) => { return qortalRequest({ action: "SEND_COIN", diff --git a/src/Core/API/Transactions.ts b/src/QortalRequest/Transactions.ts similarity index 90% rename from src/Core/API/Transactions.ts rename to src/QortalRequest/Transactions.ts index 8216a6d..378318e 100644 --- a/src/Core/API/Transactions.ts +++ b/src/QortalRequest/Transactions.ts @@ -1,7 +1,7 @@ import { SearchTransactionResponse, TransactionSearchParams, -} from "../Interfaces"; +} from "./Utils/Interfaces"; export const searchTransactions = async (params: TransactionSearchParams) => { return (await qortalRequest({ diff --git a/src/Core/Fetch.ts b/src/QortalRequest/Utils/Fetch.ts similarity index 100% rename from src/Core/Fetch.ts rename to src/QortalRequest/Utils/Fetch.ts diff --git a/src/Core/Interfaces.ts b/src/QortalRequest/Utils/Interfaces.ts similarity index 96% rename from src/Core/Interfaces.ts rename to src/QortalRequest/Utils/Interfaces.ts index 452edb8..e7051d8 100644 --- a/src/Core/Interfaces.ts +++ b/src/QortalRequest/Utils/Interfaces.ts @@ -1,4 +1,4 @@ -import { ConfirmationStatus, TransactionType } from ".//Types"; +import { ConfirmationStatus, TransactionType } from "./Types"; export interface GetRequestData { limit?: number; diff --git a/src/Core/Types.ts b/src/QortalRequest/Utils/Types.ts similarity index 91% rename from src/Core/Types.ts rename to src/QortalRequest/Utils/Types.ts index cd20763..f4772d8 100644 --- a/src/Core/Types.ts +++ b/src/QortalRequest/Utils/Types.ts @@ -41,3 +41,5 @@ export type TransactionType = | "ACCOUNT_LEVEL" | "TRANSFER_PRIVS" | "PRESENCE"; + +export type CoinType = "QORT" | "BTC" | "LTC" | "DOGE" | "DGB" | "RVN" | "ARRR"; diff --git a/src/Core/API/Names.ts b/src/QortalRequest/getFromAddress.ts similarity index 66% rename from src/Core/API/Names.ts rename to src/QortalRequest/getFromAddress.ts index ffda9b2..9404d5b 100644 --- a/src/Core/API/Names.ts +++ b/src/QortalRequest/getFromAddress.ts @@ -1,5 +1,5 @@ -import { stringIsEmpty } from "../../Numbers/StringNumbers"; -import { GetRequestData } from "../Interfaces"; +import { stringIsEmpty } from "../TypescriptUtils/Numbers/StringNumbers"; +import { GetRequestData } from "./Utils/Interfaces"; type AccountName = { name: string; owner: string }; export const getAccountNames = async ( @@ -19,3 +19,10 @@ export const getAccountNames = async ( return emptyNamesFilled.length > 0 ? emptyNamesFilled : [namelessAddress]; }; + +export const getBalance = async (address: string) => { + return (await qortalRequest({ + action: "GET_BALANCE", + address, + })) as number; +}; diff --git a/src/QortalRequest/getFromSelf.ts b/src/QortalRequest/getFromSelf.ts new file mode 100644 index 0000000..0b455f7 --- /dev/null +++ b/src/QortalRequest/getFromSelf.ts @@ -0,0 +1,22 @@ +import { getBalance } from "./getFromAddress"; +import { CoinType } from "./Utils/Types"; + +export const getWalletBalance = async (coin: CoinType) => { + return (await qortalRequest({ + action: "GET_WALLET_BALANCE", + coin, + })) as number; +}; + +export const getUserBalance = async () => { + const accountInfo = await getUserAccount(); + return (await getBalance(accountInfo.address)) as number; +}; + +export type AccountInfo = { address: string; publicKey: string }; + +export const getUserAccount = async () => { + return (await qortalRequest({ + action: "GET_USER_ACCOUNT", + })) as AccountInfo; +}; diff --git a/src/Numbers/Colors.ts b/src/TypescriptUtils/Numbers/Colors.ts similarity index 100% rename from src/Numbers/Colors.ts rename to src/TypescriptUtils/Numbers/Colors.ts diff --git a/src/Numbers/NumberConversion.ts b/src/TypescriptUtils/Numbers/NumberConversion.ts similarity index 100% rename from src/Numbers/NumberConversion.ts rename to src/TypescriptUtils/Numbers/NumberConversion.ts diff --git a/src/Numbers/Numbers.ts b/src/TypescriptUtils/Numbers/Numbers.ts similarity index 100% rename from src/Numbers/Numbers.ts rename to src/TypescriptUtils/Numbers/Numbers.ts diff --git a/src/Numbers/StringNumbers.ts b/src/TypescriptUtils/Numbers/StringNumbers.ts similarity index 100% rename from src/Numbers/StringNumbers.ts rename to src/TypescriptUtils/Numbers/StringNumbers.ts diff --git a/src/Strings/printFunctions.ts b/src/TypescriptUtils/Strings/printFunctions.ts similarity index 100% rename from src/Strings/printFunctions.ts rename to src/TypescriptUtils/Strings/printFunctions.ts diff --git a/src/global.d.ts b/src/global.d.ts index e2904b2..e772ecd 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -1,92 +1,92 @@ type TransactionType = - | "GENESIS" - | "PAYMENT" - | "REGISTER_NAME" - | "UPDATE_NAME" - | "SELL_NAME" - | "CANCEL_SELL_NAME" - | "BUY_NAME" - | "CREATE_POLL" - | "VOTE_ON_POLL" - | "ARBITRARY" - | "ISSUE_ASSET" - | "TRANSFER_ASSET" - | "CREATE_ASSET_ORDER" - | "CANCEL_ASSET_ORDER" - | "MULTI_PAYMENT" - | "DEPLOY_AT" - | "MESSAGE" - | "CHAT" - | "PUBLICIZE" - | "AIRDROP" - | "AT" - | "CREATE_GROUP" - | "UPDATE_GROUP" - | "ADD_GROUP_ADMIN" - | "REMOVE_GROUP_ADMIN" - | "GROUP_BAN" - | "CANCEL_GROUP_BAN" - | "GROUP_KICK" - | "GROUP_INVITE" - | "CANCEL_GROUP_INVITE" - | "JOIN_GROUP" - | "LEAVE_GROUP" - | "GROUP_APPROVAL" - | "SET_GROUP" - | "UPDATE_ASSET" - | "ACCOUNT_FLAGS" - | "ENABLE_FORGING" - | "REWARD_SHARE" - | "ACCOUNT_LEVEL" - | "TRANSFER_PRIVS" - | "PRESENCE"; + | "GENESIS" + | "PAYMENT" + | "REGISTER_NAME" + | "UPDATE_NAME" + | "SELL_NAME" + | "CANCEL_SELL_NAME" + | "BUY_NAME" + | "CREATE_POLL" + | "VOTE_ON_POLL" + | "ARBITRARY" + | "ISSUE_ASSET" + | "TRANSFER_ASSET" + | "CREATE_ASSET_ORDER" + | "CANCEL_ASSET_ORDER" + | "MULTI_PAYMENT" + | "DEPLOY_AT" + | "MESSAGE" + | "CHAT" + | "PUBLICIZE" + | "AIRDROP" + | "AT" + | "CREATE_GROUP" + | "UPDATE_GROUP" + | "ADD_GROUP_ADMIN" + | "REMOVE_GROUP_ADMIN" + | "GROUP_BAN" + | "CANCEL_GROUP_BAN" + | "GROUP_KICK" + | "GROUP_INVITE" + | "CANCEL_GROUP_INVITE" + | "JOIN_GROUP" + | "LEAVE_GROUP" + | "GROUP_APPROVAL" + | "SET_GROUP" + | "UPDATE_ASSET" + | "ACCOUNT_FLAGS" + | "ENABLE_FORGING" + | "REWARD_SHARE" + | "ACCOUNT_LEVEL" + | "TRANSFER_PRIVS" + | "PRESENCE"; interface QortalRequestOptions { - action: string; - name?: string; - service?: string; - data64?: string; - title?: string; - description?: string; - category?: string; - tags?: string[] | string; - identifier?: string; - address?: string; - metaData?: string; - encoding?: string; - includeMetadata?: boolean; - limit?: number; - offset?: number; - reverse?: boolean; - resources?: any[]; - filename?: string; - list_name?: string; - item?: string; - items?: string[]; - tag1?: string; - tag2?: string; - tag3?: string; - tag4?: string; - tag5?: string; - coin?: string; - destinationAddress?: string; - amount?: number; - blob?: Blob; - mimeType?: string; - file?: File; - encryptedData?: string; - mode?: string; - query?: string; - excludeBlocked?: boolean; - exactMatchNames?: boolean; - creationBytes?: string; - type?: string; - assetId?: number; - txType?: TransactionType[]; - confirmationStatus?: string; - startBlock?: number; - blockLimit?: number; - txGroupId?: number; + action: string; + name?: string; + service?: string; + data64?: string; + title?: string; + description?: string; + category?: string; + tags?: string[] | string; + identifier?: string; + address?: string; + metaData?: string; + encoding?: string; + includeMetadata?: boolean; + limit?: number; + offset?: number; + reverse?: boolean; + resources?: any[]; + filename?: string; + list_name?: string; + item?: string; + items?: string[]; + tag1?: string; + tag2?: string; + tag3?: string; + tag4?: string; + tag5?: string; + coin?: string; + destinationAddress?: string; + amount?: number; + blob?: Blob; + mimeType?: string; + file?: File; + encryptedData?: string; + mode?: string; + query?: string; + excludeBlocked?: boolean; + exactMatchNames?: boolean; + creationBytes?: string; + type?: string; + assetId?: number; + txType?: TransactionType[]; + confirmationStatus?: string; + startBlock?: number; + blockLimit?: number; + txGroupId?: number; } -declare function qortalRequest(options: QortalRequestOptions): Promise; \ No newline at end of file +declare function qortalRequest(options: QortalRequestOptions): Promise; diff --git a/tsconfig.json b/tsconfig.json index 0aaa8d9..faa3326 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,11 @@ "compilerOptions": { "target": "ESNext", "module": "ESNext", - "lib": ["DOM", "DOM.Iterable", "ESNext"], + "lib": [ + "DOM", + "DOM.Iterable", + "ESNext" + ], "skipLibCheck": true, "declaration": true, "sourceMap": true, @@ -26,6 +30,12 @@ "esm": true }, "experimentalSpecifierResolution": "node", + "references": [ + { + "path": "./tsconfig.node.json" + } + ], + "baseUrl": "./src", "include": ["src/**/*"], - "references": [{ "path": "./tsconfig.node.json" }] -} + +} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index 3737fda..073a34c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,6 +1,7 @@ import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; import { resolve } from "path"; + // https://vitejs.dev/config/ export default defineConfig({ build: { @@ -10,5 +11,4 @@ export default defineConfig({ }, }, plugins: [react()], - base: "", });