@polkahub/ledger 0.1.0-pre.3 → 0.1.0-pre.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ManageLedger.js +72 -87
- package/dist/ManageLedger.js.map +1 -1
- package/package.json +6 -5
package/dist/ManageLedger.js
CHANGED
|
@@ -4,43 +4,30 @@ import { useSetSelectedAccount } from '@polkahub/select-account';
|
|
|
4
4
|
import { SourceButton, Button, CardPlaceholder, Checkbox } from '@polkahub/ui-components';
|
|
5
5
|
import { state, useStateObservable } from '@react-rxjs/core';
|
|
6
6
|
import { createSignal } from '@react-rxjs/utils';
|
|
7
|
-
import { Trash2, ChevronLeft,
|
|
8
|
-
import { useContext
|
|
7
|
+
import { Trash2, Usb, TriangleAlert, ChevronLeft, ChevronRight } from 'lucide-react';
|
|
8
|
+
import { useContext } from 'react';
|
|
9
9
|
import { debounceTime, map, concatMap, filter, take, switchMap, startWith, catchError } from 'rxjs';
|
|
10
10
|
import ledgerImg from './assets/ledger.webp.js';
|
|
11
11
|
import { ledgerProviderId } from './provider.js';
|
|
12
12
|
|
|
13
13
|
const ManageLedger = () => {
|
|
14
|
-
const {
|
|
14
|
+
const { pushContent } = useContext(ModalContext);
|
|
15
15
|
const ledgerProvider = usePlugin(ledgerProviderId);
|
|
16
16
|
return /* @__PURE__ */ jsx(
|
|
17
17
|
SourceButton,
|
|
18
18
|
{
|
|
19
19
|
label: "Ledger",
|
|
20
|
-
onClick: () =>
|
|
20
|
+
onClick: () => pushContent({ title: "Ledger Accounts", element: /* @__PURE__ */ jsx(LedgerAccounts, {}) }),
|
|
21
21
|
disabled: !ledgerProvider,
|
|
22
22
|
children: /* @__PURE__ */ jsx("img", { src: ledgerImg, alt: "Ledger", className: "h-10 rounded" })
|
|
23
23
|
}
|
|
24
24
|
);
|
|
25
25
|
};
|
|
26
|
-
const LedgerAccounts = (
|
|
26
|
+
const LedgerAccounts = () => {
|
|
27
|
+
const { pushContent, popContent } = useContext(ModalContext);
|
|
27
28
|
const ledgerProvider = usePlugin(ledgerProviderId);
|
|
28
29
|
const ledgerAccounts = useStateObservable(ledgerProvider.accounts$);
|
|
29
30
|
const setAccount = useSetSelectedAccount();
|
|
30
|
-
useEffect(() => {
|
|
31
|
-
if (ledgerAccounts.length === 0) {
|
|
32
|
-
setContent(
|
|
33
|
-
/* @__PURE__ */ jsx(
|
|
34
|
-
ImportAccounts,
|
|
35
|
-
{
|
|
36
|
-
onClose: (accounts) => setContent(
|
|
37
|
-
accounts.length ? /* @__PURE__ */ jsx(LedgerAccounts, { setContent }) : null
|
|
38
|
-
)
|
|
39
|
-
}
|
|
40
|
-
)
|
|
41
|
-
);
|
|
42
|
-
}
|
|
43
|
-
}, [ledgerAccounts, setContent]);
|
|
44
31
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
45
32
|
ledgerAccounts.length ? /* @__PURE__ */ jsxs("div", { children: [
|
|
46
33
|
/* @__PURE__ */ jsx("h3", { className: "font-medium text-muted-foreground", children: "Added addresses" }),
|
|
@@ -76,39 +63,21 @@ const LedgerAccounts = ({ setContent }) => {
|
|
|
76
63
|
},
|
|
77
64
|
`${acc.address}-${acc.deviceId}-${acc.index}`
|
|
78
65
|
)) })
|
|
79
|
-
] }) :
|
|
80
|
-
/* @__PURE__ */
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
Button,
|
|
95
|
-
{
|
|
96
|
-
type: "button",
|
|
97
|
-
onClick: () => setContent(
|
|
98
|
-
/* @__PURE__ */ jsx(
|
|
99
|
-
ImportAccounts,
|
|
100
|
-
{
|
|
101
|
-
onClose: () => setContent(/* @__PURE__ */ jsx(LedgerAccounts, { setContent }))
|
|
102
|
-
}
|
|
103
|
-
)
|
|
104
|
-
),
|
|
105
|
-
children: [
|
|
106
|
-
/* @__PURE__ */ jsx(Usb, {}),
|
|
107
|
-
"Import accounts"
|
|
108
|
-
]
|
|
109
|
-
}
|
|
110
|
-
)
|
|
111
|
-
] })
|
|
66
|
+
] }) : /* @__PURE__ */ jsx("div", { className: "text-sm text-muted-foreground text-center", children: "No accounts imported" }),
|
|
67
|
+
/* @__PURE__ */ jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxs(
|
|
68
|
+
Button,
|
|
69
|
+
{
|
|
70
|
+
type: "button",
|
|
71
|
+
onClick: () => pushContent({
|
|
72
|
+
title: "Import Ledger Accounts",
|
|
73
|
+
element: /* @__PURE__ */ jsx(ImportAccounts, { onClose: popContent })
|
|
74
|
+
}),
|
|
75
|
+
children: [
|
|
76
|
+
/* @__PURE__ */ jsx(Usb, {}),
|
|
77
|
+
"Import accounts"
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
) })
|
|
112
81
|
] });
|
|
113
82
|
};
|
|
114
83
|
const PAGE_SIZE = 5;
|
|
@@ -137,12 +106,15 @@ const pageAccounts$ = state(
|
|
|
137
106
|
return { ...value };
|
|
138
107
|
}),
|
|
139
108
|
startWith({ ...value }),
|
|
140
|
-
catchError((ex) =>
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
109
|
+
catchError((ex) => {
|
|
110
|
+
console.error(ex);
|
|
111
|
+
return [
|
|
112
|
+
{
|
|
113
|
+
...value,
|
|
114
|
+
error: ex.message
|
|
115
|
+
}
|
|
116
|
+
];
|
|
117
|
+
})
|
|
146
118
|
);
|
|
147
119
|
})
|
|
148
120
|
),
|
|
@@ -151,9 +123,7 @@ const pageAccounts$ = state(
|
|
|
151
123
|
error: null
|
|
152
124
|
}
|
|
153
125
|
);
|
|
154
|
-
const ImportAccounts = ({
|
|
155
|
-
onClose
|
|
156
|
-
}) => {
|
|
126
|
+
const ImportAccounts = ({ onClose }) => {
|
|
157
127
|
const { id } = usePolkaHubContext();
|
|
158
128
|
const ledgerProvider = usePlugin(ledgerProviderId);
|
|
159
129
|
const ledgerAccounts = useStateObservable(ledgerProvider.accounts$);
|
|
@@ -161,11 +131,18 @@ const ImportAccounts = ({
|
|
|
161
131
|
const { accounts, error } = useStateObservable(pageAccounts$(id));
|
|
162
132
|
const allLoading = accounts.every((v) => v == null);
|
|
163
133
|
const allLoaded = accounts.every((v) => v != null);
|
|
134
|
+
const PLACEHOLDER_HEIGHT = 232;
|
|
164
135
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
165
|
-
error ? /* @__PURE__ */ jsxs("div", { children: [
|
|
166
|
-
"
|
|
167
|
-
|
|
168
|
-
|
|
136
|
+
error ? /* @__PURE__ */ jsxs("div", { className: "space-y-2", style: { height: PLACEHOLDER_HEIGHT }, children: [
|
|
137
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
138
|
+
/* @__PURE__ */ jsx(TriangleAlert, { className: "text-destructive" }),
|
|
139
|
+
/* @__PURE__ */ jsxs("p", { children: [
|
|
140
|
+
"Error: ",
|
|
141
|
+
error
|
|
142
|
+
] })
|
|
143
|
+
] }),
|
|
144
|
+
/* @__PURE__ */ jsx(Button, { type: "button", onClick: () => setPage(page), children: "Retry" })
|
|
145
|
+
] }) : allLoading ? /* @__PURE__ */ jsx(CardPlaceholder, { height: PLACEHOLDER_HEIGHT }) : /* @__PURE__ */ jsx("ul", { className: "space-y-2", children: accounts.map((acc, i) => /* @__PURE__ */ jsx("li", { className: "flex gap-2 items-center", children: acc ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
169
146
|
/* @__PURE__ */ jsxs("div", { className: "text-xs text-muted-foreground tabular-nums", children: [
|
|
170
147
|
acc.index,
|
|
171
148
|
"."
|
|
@@ -188,29 +165,37 @@ const ImportAccounts = ({
|
|
|
188
165
|
/* @__PURE__ */ jsx(AddressIdentity, { addr: acc.address }),
|
|
189
166
|
/* @__PURE__ */ jsx("div", { className: "grow" }),
|
|
190
167
|
/* @__PURE__ */ jsx(AddressBalance, { addr: acc.address })
|
|
191
|
-
] }) : /* @__PURE__ */ jsx("div", { className: "bg-muted w-full rounded shadow animate-pulse h-
|
|
168
|
+
] }) : /* @__PURE__ */ jsx("div", { className: "bg-muted w-full rounded shadow animate-pulse h-10" }) }, i)) }),
|
|
192
169
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
193
|
-
/* @__PURE__ */ jsxs(
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
170
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
171
|
+
/* @__PURE__ */ jsxs(
|
|
172
|
+
Button,
|
|
173
|
+
{
|
|
174
|
+
onClick: () => setPage(page - 1),
|
|
175
|
+
variant: "secondary",
|
|
176
|
+
type: "button",
|
|
177
|
+
disabled: !allLoaded || page == 0,
|
|
178
|
+
children: [
|
|
179
|
+
/* @__PURE__ */ jsx(ChevronLeft, {}),
|
|
180
|
+
"Prev"
|
|
181
|
+
]
|
|
182
|
+
}
|
|
183
|
+
),
|
|
184
|
+
/* @__PURE__ */ jsxs(
|
|
185
|
+
Button,
|
|
186
|
+
{
|
|
187
|
+
onClick: () => setPage(page + 1),
|
|
188
|
+
variant: "secondary",
|
|
189
|
+
type: "button",
|
|
190
|
+
disabled: !allLoaded,
|
|
191
|
+
children: [
|
|
192
|
+
"Next",
|
|
193
|
+
/* @__PURE__ */ jsx(ChevronRight, {})
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
)
|
|
197
|
+
] }),
|
|
198
|
+
/* @__PURE__ */ jsx(Button, { onClick: onClose, type: "button", children: "Done" })
|
|
214
199
|
] })
|
|
215
200
|
] });
|
|
216
201
|
};
|
package/dist/ManageLedger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManageLedger.js","sources":["../src/ManageLedger.tsx"],"sourcesContent":["import {\n AddressBalance,\n AddressIdentity,\n ModalContext,\n plugin$,\n usePlugin,\n usePolkaHubContext,\n} from \"@polkahub/context\";\nimport { useSetSelectedAccount } from \"@polkahub/select-account\";\nimport {\n Button,\n CardPlaceholder,\n Checkbox,\n SourceButton,\n} from \"@polkahub/ui-components\";\nimport { state, useStateObservable } from \"@react-rxjs/core\";\nimport { createSignal } from \"@react-rxjs/utils\";\nimport { ChevronLeft, Trash2, Usb } from \"lucide-react\";\nimport { FC, ReactElement, useContext, useEffect } from \"react\";\nimport {\n catchError,\n concatMap,\n debounceTime,\n filter,\n map,\n Observable,\n startWith,\n switchMap,\n take,\n} from \"rxjs\";\nimport ledgerImg from \"./assets/ledger.webp\";\nimport {\n LedgerAccount,\n LedgerAccountInfo,\n LedgerProvider,\n ledgerProviderId,\n} from \"./provider\";\n\nexport const ManageLedger = () => {\n const { setContent } = useContext(ModalContext)!;\n const ledgerProvider = usePlugin<LedgerProvider>(ledgerProviderId);\n\n return (\n <SourceButton\n label=\"Ledger\"\n onClick={() => setContent(<LedgerAccounts setContent={setContent} />)}\n disabled={!ledgerProvider}\n >\n <img src={ledgerImg} alt=\"Ledger\" className=\"h-10 rounded\" />\n </SourceButton>\n );\n};\n\nconst LedgerAccounts: FC<{\n setContent: (element: ReactElement | null) => void;\n}> = ({ setContent }) => {\n const ledgerProvider = usePlugin<LedgerProvider>(ledgerProviderId)!;\n const ledgerAccounts = useStateObservable(ledgerProvider.accounts$);\n const setAccount = useSetSelectedAccount();\n\n useEffect(() => {\n if (ledgerAccounts.length === 0) {\n setContent(\n <ImportAccounts\n onClose={(accounts) =>\n setContent(\n accounts.length ? (\n <LedgerAccounts setContent={setContent} />\n ) : null\n )\n }\n />\n );\n }\n }, [ledgerAccounts, setContent]);\n\n return (\n <div className=\"space-y-4\">\n {ledgerAccounts.length ? (\n <div>\n <h3 className=\"font-medium text-muted-foreground\">Added addresses</h3>\n <ul className=\"space-y-2\">\n {ledgerAccounts.map((acc) => (\n <li\n key={`${acc.address}-${acc.deviceId}-${acc.index}`}\n className=\"flex gap-2 items-center\"\n >\n <Button\n variant=\"outline\"\n className=\"text-destructive\"\n type=\"button\"\n onClick={() => ledgerProvider.removeAccount(acc)}\n >\n <Trash2 />\n </Button>\n <AddressIdentity addr={acc.address} />\n <div className=\"grow\" />\n <AddressBalance addr={acc.address} />\n {setAccount && (\n <Button\n variant=\"secondary\"\n onClick={() => {\n setAccount(acc);\n }}\n >\n Select\n </Button>\n )}\n </li>\n ))}\n </ul>\n </div>\n ) : null}\n <div className=\"flex items-center justify-between flex-wrap-reverse gap-2\">\n <Button\n onClick={() => setContent(null)}\n variant=\"secondary\"\n type=\"button\"\n >\n <ChevronLeft />\n Back\n </Button>\n <Button\n type=\"button\"\n onClick={() =>\n setContent(\n <ImportAccounts\n onClose={() =>\n setContent(<LedgerAccounts setContent={setContent} />)\n }\n />\n )\n }\n >\n <Usb />\n Import accounts\n </Button>\n </div>\n </div>\n );\n};\n\nconst PAGE_SIZE = 5;\n\nconst [pageChange$, setPage] = createSignal<number>();\nconst page$ = state(pageChange$, 0);\ntype PageAccounts = {\n accounts: Array<LedgerAccountInfo | null>;\n error: string | null;\n};\nconst pageAccounts$ = state(\n (ctxId: string) =>\n page$.pipe(\n // React might mess it up with a double re-render.\n debounceTime(200),\n map((page) =>\n new Array(PAGE_SIZE).fill(0).map((_, i) => page * PAGE_SIZE + i)\n ),\n concatMap((idxs): Observable<PageAccounts> => {\n const value: PageAccounts = {\n accounts: idxs.map(() => null),\n error: null,\n };\n\n return plugin$<LedgerProvider>(ctxId, ledgerProviderId).pipe(\n filter((v) => v != null),\n take(1),\n switchMap((ledgerProvider) =>\n ledgerProvider.getLedgerAccounts$(idxs)\n ),\n map((account, i) => {\n value.accounts[i] = account;\n\n return { ...value };\n }),\n startWith({ ...value }),\n catchError((ex) => [\n {\n ...value,\n error: ex.message,\n },\n ])\n );\n })\n ),\n {\n accounts: new Array(PAGE_SIZE).fill(null),\n error: null,\n } as PageAccounts\n);\n\nconst ImportAccounts: FC<{ onClose: (accounts: LedgerAccount[]) => void }> = ({\n onClose,\n}) => {\n const { id } = usePolkaHubContext();\n const ledgerProvider = usePlugin<LedgerProvider>(ledgerProviderId)!;\n const ledgerAccounts = useStateObservable(ledgerProvider.accounts$);\n const page = useStateObservable(page$);\n const { accounts, error } = useStateObservable(pageAccounts$(id));\n\n const allLoading = accounts.every((v) => v == null);\n const allLoaded = accounts.every((v) => v != null);\n\n return (\n <div className=\"space-y-2\">\n {error ? (\n <div>Error: {error}</div>\n ) : allLoading ? (\n <CardPlaceholder height={152} />\n ) : (\n <ul className=\"space-y-2\">\n {accounts.map((acc, i) => (\n <li key={i} className=\"flex gap-2 items-center\">\n {acc ? (\n <>\n <div className=\"text-xs text-muted-foreground tabular-nums\">\n {acc.index}.\n </div>\n <Checkbox\n checked={ledgerAccounts.some(\n (v) =>\n v.deviceId === acc.deviceId &&\n v.index === acc.index &&\n v.address === acc.address\n )}\n onCheckedChange={(chk) => {\n if (chk) {\n ledgerProvider.addAccount(acc);\n } else {\n ledgerProvider.removeAccount(acc);\n }\n }}\n />\n <AddressIdentity addr={acc.address} />\n <div className=\"grow\" />\n <AddressBalance addr={acc.address} />\n </>\n ) : (\n <div className=\"bg-muted w-full rounded shadow animate-pulse h-6\" />\n )}\n </li>\n ))}\n </ul>\n )}\n <div className=\"flex items-center justify-between\">\n <Button\n onClick={() => onClose(ledgerAccounts)}\n variant=\"secondary\"\n type=\"button\"\n >\n <ChevronLeft />\n Back\n </Button>\n {allLoaded ? (\n <Button\n onClick={() => setPage(page + 1)}\n variant=\"secondary\"\n type=\"button\"\n >\n Next Page\n </Button>\n ) : null}\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ManageLedger.js","sources":["../src/ManageLedger.tsx"],"sourcesContent":["import {\n AddressBalance,\n AddressIdentity,\n ModalContext,\n plugin$,\n usePlugin,\n usePolkaHubContext,\n} from \"@polkahub/context\";\nimport { useSetSelectedAccount } from \"@polkahub/select-account\";\nimport {\n Button,\n CardPlaceholder,\n Checkbox,\n SourceButton,\n} from \"@polkahub/ui-components\";\nimport { state, useStateObservable } from \"@react-rxjs/core\";\nimport { createSignal } from \"@react-rxjs/utils\";\nimport {\n ChevronLeft,\n ChevronRight,\n Trash2,\n TriangleAlert,\n Usb,\n} from \"lucide-react\";\nimport { FC, useContext } from \"react\";\nimport {\n catchError,\n concatMap,\n debounceTime,\n filter,\n map,\n Observable,\n startWith,\n switchMap,\n take,\n} from \"rxjs\";\nimport ledgerImg from \"./assets/ledger.webp\";\nimport {\n LedgerAccountInfo,\n LedgerProvider,\n ledgerProviderId,\n} from \"./provider\";\n\nexport const ManageLedger = () => {\n const { pushContent } = useContext(ModalContext)!;\n const ledgerProvider = usePlugin<LedgerProvider>(ledgerProviderId);\n\n return (\n <SourceButton\n label=\"Ledger\"\n onClick={() =>\n pushContent({ title: \"Ledger Accounts\", element: <LedgerAccounts /> })\n }\n disabled={!ledgerProvider}\n >\n <img src={ledgerImg} alt=\"Ledger\" className=\"h-10 rounded\" />\n </SourceButton>\n );\n};\n\nconst LedgerAccounts: FC = () => {\n const { pushContent, popContent } = useContext(ModalContext)!;\n const ledgerProvider = usePlugin<LedgerProvider>(ledgerProviderId)!;\n const ledgerAccounts = useStateObservable(ledgerProvider.accounts$);\n const setAccount = useSetSelectedAccount();\n\n return (\n <div className=\"space-y-4\">\n {ledgerAccounts.length ? (\n <div>\n <h3 className=\"font-medium text-muted-foreground\">Added addresses</h3>\n <ul className=\"space-y-2\">\n {ledgerAccounts.map((acc) => (\n <li\n key={`${acc.address}-${acc.deviceId}-${acc.index}`}\n className=\"flex gap-2 items-center\"\n >\n <Button\n variant=\"outline\"\n className=\"text-destructive\"\n type=\"button\"\n onClick={() => ledgerProvider.removeAccount(acc)}\n >\n <Trash2 />\n </Button>\n <AddressIdentity addr={acc.address} />\n <div className=\"grow\" />\n <AddressBalance addr={acc.address} />\n {setAccount && (\n <Button\n variant=\"secondary\"\n onClick={() => {\n setAccount(acc);\n }}\n >\n Select\n </Button>\n )}\n </li>\n ))}\n </ul>\n </div>\n ) : (\n <div className=\"text-sm text-muted-foreground text-center\">\n No accounts imported\n </div>\n )}\n <div className=\"flex justify-end\">\n <Button\n type=\"button\"\n onClick={() =>\n pushContent({\n title: \"Import Ledger Accounts\",\n element: <ImportAccounts onClose={popContent} />,\n })\n }\n >\n <Usb />\n Import accounts\n </Button>\n </div>\n </div>\n );\n};\n\nconst PAGE_SIZE = 5;\n\nconst [pageChange$, setPage] = createSignal<number>();\nconst page$ = state(pageChange$, 0);\ntype PageAccounts = {\n accounts: Array<LedgerAccountInfo | null>;\n error: string | null;\n};\nconst pageAccounts$ = state(\n (ctxId: string) =>\n page$.pipe(\n // React might mess it up with a double re-render.\n debounceTime(200),\n map((page) =>\n new Array(PAGE_SIZE).fill(0).map((_, i) => page * PAGE_SIZE + i)\n ),\n concatMap((idxs): Observable<PageAccounts> => {\n const value: PageAccounts = {\n accounts: idxs.map(() => null),\n error: null,\n };\n\n return plugin$<LedgerProvider>(ctxId, ledgerProviderId).pipe(\n filter((v) => v != null),\n take(1),\n switchMap((ledgerProvider) =>\n ledgerProvider.getLedgerAccounts$(idxs)\n ),\n map((account, i) => {\n value.accounts[i] = account;\n\n return { ...value };\n }),\n startWith({ ...value }),\n catchError((ex) => {\n console.error(ex);\n return [\n {\n ...value,\n error: ex.message,\n },\n ];\n })\n );\n })\n ),\n {\n accounts: new Array(PAGE_SIZE).fill(null),\n error: null,\n } as PageAccounts\n);\n\nconst ImportAccounts: FC<{ onClose: () => void }> = ({ onClose }) => {\n const { id } = usePolkaHubContext();\n const ledgerProvider = usePlugin<LedgerProvider>(ledgerProviderId)!;\n const ledgerAccounts = useStateObservable(ledgerProvider.accounts$);\n const page = useStateObservable(page$);\n const { accounts, error } = useStateObservable(pageAccounts$(id));\n\n const allLoading = accounts.every((v) => v == null);\n const allLoaded = accounts.every((v) => v != null);\n\n const PLACEHOLDER_HEIGHT = 232;\n\n return (\n <div className=\"space-y-2\">\n {error ? (\n <div className=\"space-y-2\" style={{ height: PLACEHOLDER_HEIGHT }}>\n <div className=\"flex items-center gap-1\">\n <TriangleAlert className=\"text-destructive\" />\n <p>Error: {error}</p>\n </div>\n <Button type=\"button\" onClick={() => setPage(page)}>\n Retry\n </Button>\n </div>\n ) : allLoading ? (\n <CardPlaceholder height={PLACEHOLDER_HEIGHT} />\n ) : (\n <ul className=\"space-y-2\">\n {accounts.map((acc, i) => (\n <li key={i} className=\"flex gap-2 items-center\">\n {acc ? (\n <>\n <div className=\"text-xs text-muted-foreground tabular-nums\">\n {acc.index}.\n </div>\n <Checkbox\n checked={ledgerAccounts.some(\n (v) =>\n v.deviceId === acc.deviceId &&\n v.index === acc.index &&\n v.address === acc.address\n )}\n onCheckedChange={(chk) => {\n if (chk) {\n ledgerProvider.addAccount(acc);\n } else {\n ledgerProvider.removeAccount(acc);\n }\n }}\n />\n <AddressIdentity addr={acc.address} />\n <div className=\"grow\" />\n <AddressBalance addr={acc.address} />\n </>\n ) : (\n <div className=\"bg-muted w-full rounded shadow animate-pulse h-10\" />\n )}\n </li>\n ))}\n </ul>\n )}\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Button\n onClick={() => setPage(page - 1)}\n variant=\"secondary\"\n type=\"button\"\n disabled={!allLoaded || page == 0}\n >\n <ChevronLeft />\n Prev\n </Button>\n <Button\n onClick={() => setPage(page + 1)}\n variant=\"secondary\"\n type=\"button\"\n disabled={!allLoaded}\n >\n Next\n <ChevronRight />\n </Button>\n </div>\n <Button onClick={onClose} type=\"button\">\n Done\n </Button>\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polkahub/ledger",
|
|
3
|
-
"version": "0.1.0-pre.
|
|
3
|
+
"version": "0.1.0-pre.6",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -27,13 +27,14 @@
|
|
|
27
27
|
"@polkadot-api/ledger-signer": "^0.2.12",
|
|
28
28
|
"@react-rxjs/core": "^0.10.8",
|
|
29
29
|
"@react-rxjs/utils": "^0.9.7",
|
|
30
|
+
"buffer": "^6.0.3",
|
|
30
31
|
"lucide-react": "^0.548.0",
|
|
31
32
|
"polkadot-api": "^1.20.0",
|
|
32
33
|
"rxjs": "^7.8.2",
|
|
33
|
-
"@polkahub/context": "0.1.0-pre.
|
|
34
|
-
"@polkahub/
|
|
35
|
-
"@polkahub/
|
|
36
|
-
"@polkahub/
|
|
34
|
+
"@polkahub/context": "0.1.0-pre.5",
|
|
35
|
+
"@polkahub/select-account": "0.1.0-pre.5",
|
|
36
|
+
"@polkahub/plugin": "0.1.0-pre.5",
|
|
37
|
+
"@polkahub/ui-components": "0.1.0-pre.5"
|
|
37
38
|
},
|
|
38
39
|
"peerDependencies": {
|
|
39
40
|
"@types/react": "^19.2.2",
|