Browse Source

Added functions for getting wallet balance and user data

restructured project files to be easier to understand
pull/1/head
Qortal Dev 11 months ago
parent
commit
808a6fa5d7
  1. 23
      index.ts
  2. 69
      package-lock.json
  3. 3
      package.json
  4. 4
      src/QortalRequest/SendCoin.ts
  5. 2
      src/QortalRequest/Transactions.ts
  6. 0
      src/QortalRequest/Utils/Fetch.ts
  7. 2
      src/QortalRequest/Utils/Interfaces.ts
  8. 2
      src/QortalRequest/Utils/Types.ts
  9. 11
      src/QortalRequest/getFromAddress.ts
  10. 22
      src/QortalRequest/getFromSelf.ts
  11. 0
      src/TypescriptUtils/Numbers/Colors.ts
  12. 0
      src/TypescriptUtils/Numbers/NumberConversion.ts
  13. 0
      src/TypescriptUtils/Numbers/Numbers.ts
  14. 0
      src/TypescriptUtils/Numbers/StringNumbers.ts
  15. 0
      src/TypescriptUtils/Strings/printFunctions.ts
  16. 174
      src/global.d.ts
  17. 16
      tsconfig.json
  18. 2
      vite.config.ts

23
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";

69
package-lock.json generated

@ -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",

3
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",

4
src/Core/SendCoin.ts → 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",

2
src/Core/API/Transactions.ts → 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({

0
src/Core/Fetch.ts → src/QortalRequest/Utils/Fetch.ts

2
src/Core/Interfaces.ts → src/QortalRequest/Utils/Interfaces.ts

@ -1,4 +1,4 @@
import { ConfirmationStatus, TransactionType } from ".//Types";
import { ConfirmationStatus, TransactionType } from "./Types";
export interface GetRequestData {
limit?: number;

2
src/Core/Types.ts → 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";

11
src/Core/API/Names.ts → 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;
};

22
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;
};

0
src/Numbers/Colors.ts → src/TypescriptUtils/Numbers/Colors.ts

0
src/Numbers/NumberConversion.ts → src/TypescriptUtils/Numbers/NumberConversion.ts

0
src/Numbers/Numbers.ts → src/TypescriptUtils/Numbers/Numbers.ts

0
src/Numbers/StringNumbers.ts → src/TypescriptUtils/Numbers/StringNumbers.ts

0
src/Strings/printFunctions.ts → src/TypescriptUtils/Strings/printFunctions.ts

174
src/global.d.ts vendored

@ -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<object>;
declare function qortalRequest(options: QortalRequestOptions): Promise<any>;

16
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" }]
}
}

2
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: "",
});

Loading…
Cancel
Save