@ckb-ccc/connector-react 0.0.12-alpha.7 → 0.0.13-alpha.0
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/CHANGELOG.md +16 -0
- package/README.md +10 -7
- package/dist/hooks/useCcc.d.ts +2 -1
- package/dist/hooks/useCcc.d.ts.map +1 -1
- package/dist/hooks/useCcc.js +24 -3
- package/package.json +2 -2
- package/src/hooks/useCcc.tsx +42 -1
- package/typedoc.json +6 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @ckb-ccc/connector-react
|
|
2
2
|
|
|
3
|
+
## 0.0.13-alpha.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies []:
|
|
8
|
+
- @ckb-ccc/connector@0.0.13-alpha.0
|
|
9
|
+
|
|
10
|
+
## 0.0.12
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- [`591e779`](https://github.com/ckb-ecofund/ccc/commit/591e7794ce3d07ceaad55b7a80d2277fe0aa9fe7) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat: custom SignersController
|
|
15
|
+
|
|
16
|
+
- Updated dependencies [[`6bee006`](https://github.com/ckb-ecofund/ccc/commit/6bee006fbcb96986c65ca4d2d896fca21db2503b), [`591e779`](https://github.com/ckb-ecofund/ccc/commit/591e7794ce3d07ceaad55b7a80d2277fe0aa9fe7)]:
|
|
17
|
+
- @ckb-ccc/connector@0.0.12
|
|
18
|
+
|
|
3
19
|
## 0.0.12-alpha.7
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<a href="https://ckbccc
|
|
2
|
+
<a href="https://app.ckbccc.com/">
|
|
3
3
|
<img alt="Logo" src="https://raw.githubusercontent.com/ckb-ecofund/ccc/master/assets/logo.svg" width="20%" />
|
|
4
4
|
</a>
|
|
5
5
|
</p>
|
|
@@ -14,9 +14,12 @@
|
|
|
14
14
|
/></a>
|
|
15
15
|
<img alt="GitHub commit activity" src="https://img.shields.io/github/commit-activity/m/ckb-ecofund/ccc" />
|
|
16
16
|
<img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/ckb-ecofund/ccc/master" />
|
|
17
|
-
<img alt="GitHub
|
|
18
|
-
<a href="https://ckbccc
|
|
19
|
-
alt="
|
|
17
|
+
<img alt="GitHub branch check runs" src="https://img.shields.io/github/check-runs/ckb-ecofund/ccc/master" />
|
|
18
|
+
<a href="https://app.ckbccc.com/"><img
|
|
19
|
+
alt="App" src="https://img.shields.io/website?url=https%3A%2F%2Fapp.ckbccc.com%2F&label=App"
|
|
20
|
+
/></a>
|
|
21
|
+
<a href="https://docs.ckbccc.com/"><img
|
|
22
|
+
alt="Docs" src="https://img.shields.io/website?url=https%3A%2F%2Fdocs.ckbccc.com%2F&label=Docs"
|
|
20
23
|
/></a>
|
|
21
24
|
</p>
|
|
22
25
|
|
|
@@ -33,13 +36,13 @@
|
|
|
33
36
|
## Preview
|
|
34
37
|
|
|
35
38
|
<p align="center">
|
|
36
|
-
<a href="https://ckbccc
|
|
39
|
+
<a href="https://app.ckbccc.com/">
|
|
37
40
|
<img src="https://raw.githubusercontent.com/ckb-ecofund/ccc/master/assets/preview.png" width="30%" />
|
|
38
41
|
</a>
|
|
39
42
|
</p>
|
|
40
43
|
|
|
41
|
-
This project is still under active development, and we are looking forward to your feedback. [Try its demo now here](https://ckbccc
|
|
44
|
+
This project is still under active development, and we are looking forward to your feedback. [Try its demo now here](https://app.ckbccc.com/). It showcases how to use CCC for some basic scenarios in CKB.
|
|
42
45
|
|
|
43
46
|
<h3 align="center">
|
|
44
|
-
Read more about CCC on
|
|
47
|
+
Read more about CCC on <a href="https://docs.ckbccc.com">our website</a> or <a href="https://github.com/ckb-ecofund/ccc">GitHub Repo</a>.
|
|
45
48
|
</h3>
|
package/dist/hooks/useCcc.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { ccc } from "@ckb-ccc/connector";
|
|
2
2
|
import React from "react";
|
|
3
|
-
export declare function Provider({ children, connectorProps, name, icon, signerFilter, defaultClient, preferredNetworks, }: {
|
|
3
|
+
export declare function Provider({ children, connectorProps, name, icon, signerFilter, signersController, defaultClient, preferredNetworks, }: {
|
|
4
4
|
children: React.ReactNode;
|
|
5
5
|
connectorProps?: React.HTMLAttributes<{}>;
|
|
6
6
|
name?: string;
|
|
7
7
|
icon?: string;
|
|
8
8
|
signerFilter?: (signerInfo: ccc.SignerInfo, wallet: ccc.Wallet) => Promise<boolean>;
|
|
9
|
+
signersController?: ccc.SignersController;
|
|
9
10
|
defaultClient?: ccc.Client;
|
|
10
11
|
preferredNetworks?: ccc.NetworkPreference[];
|
|
11
12
|
}): React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCcc.d.ts","sourceRoot":"","sources":["../../src/hooks/useCcc.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"useCcc.d.ts","sourceRoot":"","sources":["../../src/hooks/useCcc.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,KAON,MAAM,OAAO,CAAC;AAuCf,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,cAAc,EACd,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,CACb,UAAU,EAAE,GAAG,CAAC,UAAU,EAC1B,MAAM,EAAE,GAAG,CAAC,MAAM,KACf,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,iBAAiB,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC;IAC1C,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC;CAC7C,qBAoFA;AAED,wBAAgB,MAAM;;;;;;;EAQrB"}
|
package/dist/hooks/useCcc.js
CHANGED
|
@@ -1,11 +1,24 @@
|
|
|
1
1
|
import { ccc } from "@ckb-ccc/connector";
|
|
2
|
-
import React, { createContext, useCallback, useEffect, useMemo, useState, } from "react";
|
|
2
|
+
import React, { createContext, useCallback, useEffect, useMemo, useRef, useState, } from "react";
|
|
3
3
|
import { Connector } from "../components/index.js";
|
|
4
4
|
const CCC_CONTEXT = createContext(undefined);
|
|
5
|
-
|
|
5
|
+
class SignersControllerWithFilter extends ccc.SignersController {
|
|
6
|
+
constructor(filter) {
|
|
7
|
+
super();
|
|
8
|
+
this.filter = filter;
|
|
9
|
+
}
|
|
10
|
+
async addSigner(walletName, icon, signerInfo, context) {
|
|
11
|
+
if (!(await this.filter?.(signerInfo, { name: walletName, icon }))) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
return super.addSigner(walletName, icon, signerInfo, context);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function Provider({ children, connectorProps, name, icon, signerFilter, signersController, defaultClient, preferredNetworks, }) {
|
|
6
18
|
const [ref, setRef] = useState(null);
|
|
7
19
|
const [isOpen, setIsOpen] = useState(false);
|
|
8
20
|
const [_, setFlag] = useState(0);
|
|
21
|
+
const defautlSignersController = useRef(undefined);
|
|
9
22
|
const client = useMemo(() => ref?.client ?? new ccc.ClientPublicTestnet(), [ref?.client]);
|
|
10
23
|
const open = useCallback(() => {
|
|
11
24
|
setIsOpen(true);
|
|
@@ -18,6 +31,14 @@ export function Provider({ children, connectorProps, name, icon, signerFilter, d
|
|
|
18
31
|
setClient(defaultClient);
|
|
19
32
|
}
|
|
20
33
|
}, [setClient]);
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
if (!defautlSignersController.current) {
|
|
36
|
+
defautlSignersController.current = new SignersControllerWithFilter(signerFilter);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
defautlSignersController.current.filter = signerFilter;
|
|
40
|
+
}
|
|
41
|
+
}, [signerFilter]);
|
|
21
42
|
return (React.createElement(CCC_CONTEXT.Provider, { value: {
|
|
22
43
|
open,
|
|
23
44
|
disconnect,
|
|
@@ -26,7 +47,7 @@ export function Provider({ children, connectorProps, name, icon, signerFilter, d
|
|
|
26
47
|
wallet: ref?.wallet,
|
|
27
48
|
signerInfo: ref?.signer,
|
|
28
49
|
} },
|
|
29
|
-
React.createElement(Connector, { name: name, icon: icon,
|
|
50
|
+
React.createElement(Connector, { name: name, icon: icon, signersController: signersController ?? defautlSignersController.current, ref: setRef, onWillUpdate: () => setFlag((f) => f + 1), onClose: () => setIsOpen(false), preferredNetworks: preferredNetworks, ...connectorProps,
|
|
30
51
|
style: {
|
|
31
52
|
...connectorProps?.style,
|
|
32
53
|
zIndex: connectorProps?.style?.zIndex ?? 999,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ckb-ccc/connector-react",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.13-alpha.0",
|
|
4
4
|
"description": "CCC - CKBer's Codebase. Common Chains Connector UI Component for React",
|
|
5
5
|
"author": "Hanssen0 <hanssen0@hanssen0.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@lit/react": "^1.0.5",
|
|
38
38
|
"react": "^18",
|
|
39
|
-
"@ckb-ccc/connector": "0.0.
|
|
39
|
+
"@ckb-ccc/connector": "0.0.13-alpha.0"
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|
|
42
42
|
"build": "rimraf ./dist && tsc",
|
package/src/hooks/useCcc.tsx
CHANGED
|
@@ -4,6 +4,7 @@ import React, {
|
|
|
4
4
|
useCallback,
|
|
5
5
|
useEffect,
|
|
6
6
|
useMemo,
|
|
7
|
+
useRef,
|
|
7
8
|
useState,
|
|
8
9
|
} from "react";
|
|
9
10
|
import { Connector } from "../components/index.js";
|
|
@@ -20,12 +21,37 @@ const CCC_CONTEXT = createContext<
|
|
|
20
21
|
| undefined
|
|
21
22
|
>(undefined);
|
|
22
23
|
|
|
24
|
+
class SignersControllerWithFilter extends ccc.SignersController {
|
|
25
|
+
constructor(
|
|
26
|
+
public filter?: (
|
|
27
|
+
signerInfo: ccc.SignerInfo,
|
|
28
|
+
wallet: ccc.Wallet,
|
|
29
|
+
) => Promise<boolean>,
|
|
30
|
+
) {
|
|
31
|
+
super();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async addSigner(
|
|
35
|
+
walletName: string,
|
|
36
|
+
icon: string,
|
|
37
|
+
signerInfo: ccc.SignerInfo,
|
|
38
|
+
context: ccc.SignersControllerRefreshContext,
|
|
39
|
+
) {
|
|
40
|
+
if (!(await this.filter?.(signerInfo, { name: walletName, icon }))) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return super.addSigner(walletName, icon, signerInfo, context);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
23
48
|
export function Provider({
|
|
24
49
|
children,
|
|
25
50
|
connectorProps,
|
|
26
51
|
name,
|
|
27
52
|
icon,
|
|
28
53
|
signerFilter,
|
|
54
|
+
signersController,
|
|
29
55
|
defaultClient,
|
|
30
56
|
preferredNetworks,
|
|
31
57
|
}: {
|
|
@@ -37,12 +63,16 @@ export function Provider({
|
|
|
37
63
|
signerInfo: ccc.SignerInfo,
|
|
38
64
|
wallet: ccc.Wallet,
|
|
39
65
|
) => Promise<boolean>;
|
|
66
|
+
signersController?: ccc.SignersController;
|
|
40
67
|
defaultClient?: ccc.Client;
|
|
41
68
|
preferredNetworks?: ccc.NetworkPreference[];
|
|
42
69
|
}) {
|
|
43
70
|
const [ref, setRef] = useState<ccc.WebComponentConnector | null>(null);
|
|
44
71
|
const [isOpen, setIsOpen] = useState(false);
|
|
45
72
|
const [_, setFlag] = useState(0);
|
|
73
|
+
const defautlSignersController = useRef<
|
|
74
|
+
SignersControllerWithFilter | undefined
|
|
75
|
+
>(undefined);
|
|
46
76
|
|
|
47
77
|
const client = useMemo(
|
|
48
78
|
() => ref?.client ?? new ccc.ClientPublicTestnet(),
|
|
@@ -66,6 +96,15 @@ export function Provider({
|
|
|
66
96
|
setClient(defaultClient);
|
|
67
97
|
}
|
|
68
98
|
}, [setClient]);
|
|
99
|
+
useEffect(() => {
|
|
100
|
+
if (!defautlSignersController.current) {
|
|
101
|
+
defautlSignersController.current = new SignersControllerWithFilter(
|
|
102
|
+
signerFilter,
|
|
103
|
+
);
|
|
104
|
+
} else {
|
|
105
|
+
defautlSignersController.current.filter = signerFilter;
|
|
106
|
+
}
|
|
107
|
+
}, [signerFilter]);
|
|
69
108
|
|
|
70
109
|
return (
|
|
71
110
|
<CCC_CONTEXT.Provider
|
|
@@ -82,7 +121,9 @@ export function Provider({
|
|
|
82
121
|
<Connector
|
|
83
122
|
name={name}
|
|
84
123
|
icon={icon}
|
|
85
|
-
|
|
124
|
+
signersController={
|
|
125
|
+
signersController ?? defautlSignersController.current
|
|
126
|
+
}
|
|
86
127
|
ref={setRef}
|
|
87
128
|
onWillUpdate={() => setFlag((f) => f + 1)}
|
|
88
129
|
onClose={() => setIsOpen(false)}
|