From 3d15aff0efee6987ed148351b6d9bd04cf1eef4a Mon Sep 17 00:00:00 2001 From: Uncle Fatso Date: Thu, 8 Oct 2026 18:54:16 +0300 Subject: [PATCH] apply new ghost-connect features into lite version Signed-off-by: Uncle Fatso --- package.json | 2 +- src/components/ChainSelect.tsx | 2 +- src/components/chainspecs/casper_dev.ts | 10 ++--- src/containers/Accounts.tsx | 50 ++++--------------------- src/containers/Nominations.tsx | 4 +- src/containers/Transactions.tsx | 8 +--- src/hooks/useUnstableProvider.tsx | 24 ++++++------ src/settings.ts | 2 +- 8 files changed, 28 insertions(+), 74 deletions(-) diff --git a/package.json b/package.json index c0508f1..5cbe6bc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghost-lite", - "version": "0.3.0", + "version": "0.4.0", "description": "Web application for Ghost and Casper chain.", "author": "Uncle f4ts0 ", "maintainers": [ diff --git a/src/components/ChainSelect.tsx b/src/components/ChainSelect.tsx index 260bbf2..19ce095 100644 --- a/src/components/ChainSelect.tsx +++ b/src/components/ChainSelect.tsx @@ -18,7 +18,7 @@ import { const chainData = [ { label: "CASPER", - value: "0x475e48fab52f3d0587b6b03101d224560c549e984d1dee197b7d8b55830e7da3", + value: "0xcaf9c5ddccc7ba6f96149a6b8a81c26a3641742795cd5e7e0aee79bf3f4e77b7", chainSpec: casperDevelopment, } ] diff --git a/src/components/chainspecs/casper_dev.ts b/src/components/chainspecs/casper_dev.ts index 5f78a56..bdb24ec 100644 --- a/src/components/chainspecs/casper_dev.ts +++ b/src/components/chainspecs/casper_dev.ts @@ -11,14 +11,14 @@ export const chainSpec: string = `{ "chainType": "Live", "forkBlocks": null, "genesis": { - "stateRootHash": "0xfcb09113f5c18bb681bd0376bdb01a1d672030cf021ff24f017f9c90d6340669" + "stateRootHash": "0xb4784a3c8f2f29ba3f191d563f1166f08f4e0337e114679c0f24ef77d06e10e4" }, "id": "casper_staging_testnet", "lightSyncState": { - "babeEpochChanges": "0x0486e94817613148af08d25b61d10de83b314aad94478565e9d5070ad5bf1384de181c00000164dc951100000000c4e59511000000000468c4943cf7c7ced2abbe900614a80a5e8a3029eca80186350ff93745379523007825000001c4e595110000000024ef951100000000047460d5a9745e7ac79c62165f29bfc35ca816684a91e0afe30464781ec663ffd3d82e00000124ef95110000000084f895110000000000000c68c4943cf7c7ced2abbe900614a80a5e8a3029eca80186350ff937453795230078250000010500000000000000c4e5951100000000600900000000000010daaaaab6a6e574099e24ae9bb75b543610edef9d374fa85a378edb573b47615f010000000000000074fa7381a7a74b316afb6793a00387eed9d95d46a69866cbb316b5d9c918af0e01000000000000006c4dd88b43e2011cf9a6a73d53446336ac9e04cdd4ca23587df63187ac455e4901000000000000003c944c704cae203619b9e7a5a4b6742736da6a8e76c762291bebdc7652cfec2f01000000000000000e662d4ad2b3bf5eb96ec0fade8662d2225d4717319580d1c4eb932e8bce917d01000000000000000400000000000000027460d5a9745e7ac79c62165f29bfc35ca816684a91e0afe30464781ec663ffd3d82e000001060000000000000024ef951100000000600900000000000028426ab855ba3d0eaade067c62f197989e13c28641948d018d657c13c139da9e450100000000000000daaaaab6a6e574099e24ae9bb75b543610edef9d374fa85a378edb573b47615f010000000000000074fa7381a7a74b316afb6793a00387eed9d95d46a69866cbb316b5d9c918af0e0100000000000000dee45a9f88b2829e831f26908a7769db5fd38e7c0fc0cfec3fd83cede451fc120100000000000000c66631a4b6220beb0ad83498ddd36b2cb53fc0e345edd50e6d40dcfc74cc6b7b01000000000000006c4dd88b43e2011cf9a6a73d53446336ac9e04cdd4ca23587df63187ac455e4901000000000000003c944c704cae203619b9e7a5a4b6742736da6a8e76c762291bebdc7652cfec2f01000000000000002c4d7c0e011f53f81f31a071f3d4c42f1e85ad60e50918bc841a5001b9763f4f01000000000000003a9afa87f78c79af14753c30851f66414604987dc5ba85dd568403e0963c927d01000000000000001e06092d5210b61cadd1118e3142ecafc4d53de4267c1d7ad8205d50e64c5d4601000000000000003584ab6c4870be3cb13b2b69b7569fd593d8354b202917d61a6f139f70187b24010000000000000004000000000000000286e94817613148af08d25b61d10de83b314aad94478565e9d5070ad5bf1384de181c000001040000000000000064dc951100000000600900000000000010daaaaab6a6e574099e24ae9bb75b543610edef9d374fa85a378edb573b47615f010000000000000074fa7381a7a74b316afb6793a00387eed9d95d46a69866cbb316b5d9c918af0e01000000000000006c4dd88b43e2011cf9a6a73d53446336ac9e04cdd4ca23587df63187ac455e4901000000000000003c944c704cae203619b9e7a5a4b6742736da6a8e76c762291bebdc7652cfec2f010000000000000005cfbdbd5ccbf25f2bc82b8488ef493b8ee1205d2d1e0b2a52689d8ed252c1470100000000000000040000000000000002", - "babeFinalizedBlockWeight": 3115, - "finalizedBlockHeader": "0x40ab762007d6e2d1dddb18a10073e637712b425bac09fe2d87e50373afa1fcb111bd1cd1b45c2547cc5123ca78564a1fe0bcaced95cf3e0c7cf305b7cb443e2c037d6a40040ac0406b97a19a74625c9a717e9a0a922e41d733a88e8ce860fce8e278080642414245b501030100000030e69511000000006279297ea7ba3278c5a8fcbd16a7fd02d14fa771983443ff8d1fc4d536c8684a00ac542d13f1b03c54f5c4e51f473d326bad1feae09b95a632aa87da9c491c0cae7d5981d364a093b341db9a0028af5540957f6a01b952d3c0ef18b52c2f490d054241424501016e1a35643f1fe6e1f08e8ef0b2165368d2ae2a576a0bb10584c58a27005e2c5b5ef4d86c1f2dd98ac498c8cb3b314def9e72aaaf1b446c36f345339091a76487", - "grandpaAuthoritySet": "0x1055446f9a7aa99ced06b317c80ce90d56b84e56526775683af2525969e8da0b640100000000000000236d2fa03f4ed8cb65de7e514d7540159b328f1c170dd402b094ad7fbf54721801000000000000008f9ea20bf4a807a8e710f7559dece86e94672b5b361de157bdaa5c1f37849f8d01000000000000000aa3a88f6b777c95c3dfe7e997b76798413f16aa325f34824cae0c9102b281d5010000000000000000000000000000000001442f00000000" + "babeEpochChanges": "0x042c315b655c7144df4bfdc41837eeacb84d80aee06eaba51f6941a0c7a26cb1bf5d090000015e9de408000000000ea2e40800000000049b2e88b8ce43a677c1ca90f62134800b7e510c0c353dad719cad82faf6136cfb0d0e0000010ea2e40800000000bea6e408000000000000082c315b655c7144df4bfdc41837eeacb84d80aee06eaba51f6941a0c7a26cb1bf5d0900000103000000000000005e9de40800000000b00400000000000014daaaaab6a6e574099e24ae9bb75b543610edef9d374fa85a378edb573b47615f010000000000000074fa7381a7a74b316afb6793a00387eed9d95d46a69866cbb316b5d9c918af0e0100000000000000e0f0a776ecc9fa5e1f22e2fa001fe3fba5aea52b9444bc894b45589d4213247501000000000000006c4dd88b43e2011cf9a6a73d53446336ac9e04cdd4ca23587df63187ac455e4901000000000000003c944c704cae203619b9e7a5a4b6742736da6a8e76c762291bebdc7652cfec2f01000000000000002ff7c765405e9c11a59525a08173bb1fa59e5e281090f8e4d1824469f513d0cc01000000000000000400000000000000029b2e88b8ce43a677c1ca90f62134800b7e510c0c353dad719cad82faf6136cfb0d0e00000104000000000000000ea2e40800000000b00400000000000014daaaaab6a6e574099e24ae9bb75b543610edef9d374fa85a378edb573b47615f010000000000000074fa7381a7a74b316afb6793a00387eed9d95d46a69866cbb316b5d9c918af0e0100000000000000e0f0a776ecc9fa5e1f22e2fa001fe3fba5aea52b9444bc894b45589d4213247501000000000000006c4dd88b43e2011cf9a6a73d53446336ac9e04cdd4ca23587df63187ac455e4901000000000000003c944c704cae203619b9e7a5a4b6742736da6a8e76c762291bebdc7652cfec2f0100000000000000dea465ff8bf16938cc9ead89bf9fdb5d9c495fad61fd952b2067ebdc51c4e1c10100000000000000040000000000000002", + "babeFinalizedBlockWeight": 1039, + "finalizedBlockHeader": "0x6ed6c2debc2e5fd4e7db0d14426d1b904e6c101f2c62a71b8e891c217ba79079f9433280c0257a860f793833bd6bed6b9f86094400aa8e5ea24a81752f0f046ff5ed560f7231760c622ae35d3968fbab033ed34d950b57a7937ae45c411d1d384748080642414245b50103000000004fa0e40800000000a2c7d71b4e1f94c0208c9730ab93955b08c8d7ac86d2fc6ec5f62cc3272a5f1ec0e28c798461372109ee3e12f03ff66ea5ad9cac5b1c37d7280d2333d0226f0865ea77a801bad79785a8ca83c87f0dbf1e36936a6f65cd7b125a41c52f38f80105424142450101caaa6fe5f9df57930e2ac08aef43b75d5477d410c73c3a8e6dea9d5503b9fd25eae1d12b6604194389e22f3f4265d581eb162d1dc5a9034247fe33765dddbe8c", + "grandpaAuthoritySet": "0x1455446f9a7aa99ced06b317c80ce90d56b84e56526775683af2525969e8da0b640100000000000000236d2fa03f4ed8cb65de7e514d7540159b328f1c170dd402b094ad7fbf5472180100000000000000b63c5a0cf342b9b04931bc8ed74d7d0165ab99ab5f8a4514797d4b299a4501fe01000000000000008f9ea20bf4a807a8e710f7559dece86e94672b5b361de157bdaa5c1f37849f8d01000000000000000aa3a88f6b777c95c3dfe7e997b76798413f16aa325f34824cae0c9102b281d5010000000000000000000000000000000001fe1000000000" }, "name": "Casper Staging Testnet", "properties": { diff --git a/src/containers/Accounts.tsx b/src/containers/Accounts.tsx index 887afc9..24c7f8e 100644 --- a/src/containers/Accounts.tsx +++ b/src/containers/Accounts.tsx @@ -1,15 +1,5 @@ import React from "react" -import { Unstable } from "@substrate/connect-discovery" - -import { - Select, - SelectValue, - SelectTrigger, - SelectContent, - SelectGroup, - SelectItem, -} from "../components/ui/select" import { Accordion, AccordionContent, @@ -23,57 +13,31 @@ import { Row } from "./Row" interface SenderProps { account: string - accounts: string[] senderAccount: SystemAccountStorage | undefined senderBalance: string tokenDecimals: number tokenSymbol: string - connectAccount: (account: Unstable.Account) => void applyDecimals: (value: bigint, decimals: number, tokenSymbol: string) => string } export const Sender: React.FC = ({ account, - accounts, senderAccount, senderBalance, tokenDecimals, tokenSymbol, - connectAccount, applyDecimals }) => { return ( <> - { - try { - const unstableAccount: Unstable.Account = { address } - connectAccount(unstableAccount) - } catch (e) { - console.log(e) - } - }} - > - - - - - - {accounts?.map((address, index) => ( - {address.slice(0, 10)}...{address.slice(-10)} - - ))} - - - } /> + aria-label="Transfer Sender" + type="text" + className="sm:w-[300px] w-full" + placeholder="Waiting for acitve account address" + />} /> { handleTransaction, renderStatus, } = useTransactionStatusProvider() - const { account, accounts, connectAccount } = useUnstableProvider() + const { account } = useUnstableProvider() const chainSpecV1 = useChainSpecV1() const eraIndex = useEraIndex() @@ -373,12 +373,10 @@ export const Nominations = () => {
acc?.address ?? "") ?? []} senderAccount={senderAccount} senderBalance={applyDecimals(senderAccount?.data.free ?? 0n, tokenDecimals, tokenSymbol)} tokenDecimals={tokenDecimals} tokenSymbol={tokenSymbol} - connectAccount={connectAccount} applyDecimals={applyDecimals} /> {ledger && ledger.total > 0n && ( diff --git a/src/containers/Transactions.tsx b/src/containers/Transactions.tsx index 4667561..815d492 100644 --- a/src/containers/Transactions.tsx +++ b/src/containers/Transactions.tsx @@ -90,11 +90,7 @@ export const Transactions = () => { return `${days} days, ${hours} hours, ${minutes} minutes, ${seconds} seconds` } - const { - account, - accounts, - connectAccount - } = useUnstableProvider() + const { account } = useUnstableProvider() const receiverObject = useMemo(() => { try { @@ -242,12 +238,10 @@ export const Transactions = () => { <> acc?.address ?? "") ?? []} senderAccount={senderAccount} senderBalance={applyDecimals(senderAccount?.data.free ?? 0n, tokenDecimals, tokenSymbol)} tokenDecimals={tokenDecimals} tokenSymbol={tokenSymbol} - connectAccount={connectAccount} applyDecimals={applyDecimals} /> Promise; +} + type Context = { providerDetails?: Unstable.SubstrateConnectProviderDetail[] providerDetail?: Unstable.SubstrateConnectProviderDetail connectProviderDetail(detail: Unstable.SubstrateConnectProviderDetail): void disconnectProviderDetail(): void - accounts?: Unstable.Account[] account?: Unstable.Account - connectAccount(account: Unstable.Account): void - disconnectAccount(): void provider?: Unstable.Provider chainId: string setChainId: (chainId: string) => void @@ -45,9 +46,13 @@ export const UnstableProviderProvider = ({ ) const [chainId, setChainId_] = useState(defaultChainId) - const { data: accounts } = useSWR( - () => `providerDetail.${providerDetail!.info.uuid}.provider.getAccounts(${chainId})`, - async () => (await providerDetail!.provider).getAccounts(chainId), + const { data: account } = useSWR( + () => `providerDetail.${providerDetail!.info.uuid}.provider.getAccount(${chainId})`, + async () => { + const resProvider = await providerDetail!.provider; + return (resProvider as ExtendedProvider).getAccount(chainId); + }, + ) const client = useMemo(() => { @@ -72,15 +77,11 @@ export const UnstableProviderProvider = ({ return observableClient ? observableClient.chainHead$() : undefined }, [observableClient]) - const [account, setAccount] = useState() - const disconnectAccount = () => setAccount(undefined) const disconnectProviderDetail = () => { - disconnectAccount() setProviderDetail(undefined) } const setChainId = (chainId: string) => { setChainId_(chainId) - disconnectAccount() } return ( @@ -90,10 +91,7 @@ export const UnstableProviderProvider = ({ providerDetail, connectProviderDetail: setProviderDetail, disconnectProviderDetail, - accounts, account, - connectAccount: setAccount, - disconnectAccount, provider, chainId, setChainId, diff --git a/src/settings.ts b/src/settings.ts index 5303e87..5a44dc8 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -1 +1 @@ -export const DEFAULT_CHAIN_ID = "0x475e48fab52f3d0587b6b03101d224560c549e984d1dee197b7d8b55830e7da3" +export const DEFAULT_CHAIN_ID = "0xcaf9c5ddccc7ba6f96149a6b8a81c26a3641742795cd5e7e0aee79bf3f4e77b7"