@ckb-ccc/connector-react 0.0.12-alpha.7 → 0.0.12

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 CHANGED
@@ -1,5 +1,14 @@
1
1
  # @ckb-ccc/connector-react
2
2
 
3
+ ## 0.0.12
4
+
5
+ ### Patch Changes
6
+
7
+ - [`591e779`](https://github.com/ckb-ecofund/ccc/commit/591e7794ce3d07ceaad55b7a80d2277fe0aa9fe7) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat: custom SignersController
8
+
9
+ - Updated dependencies [[`6bee006`](https://github.com/ckb-ecofund/ccc/commit/6bee006fbcb96986c65ca4d2d896fca21db2503b), [`591e779`](https://github.com/ckb-ecofund/ccc/commit/591e7794ce3d07ceaad55b7a80d2277fe0aa9fe7)]:
10
+ - @ckb-ccc/connector@0.0.12
11
+
3
12
  ## 0.0.12-alpha.7
4
13
 
5
14
  ### Patch Changes
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <a href="https://ckbccc-demo.vercel.app/">
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>
@@ -15,7 +15,7 @@
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
17
  <img alt="GitHub deployments" src="https://img.shields.io/github/deployments/ckb-ecofund/ccc/production" />
18
- <a href="https://ckbccc-demo.vercel.app/"><img
18
+ <a href="https://app.ckbccc.com/"><img
19
19
  alt="Demo" src="https://img.shields.io/website?url=https%3A%2F%2Fckbccc-demo.vercel.app%2F&label=Demo"
20
20
  /></a>
21
21
  </p>
@@ -33,13 +33,13 @@
33
33
  ## Preview
34
34
 
35
35
  <p align="center">
36
- <a href="https://ckbccc-demo.vercel.app/">
36
+ <a href="https://app.ckbccc.com/">
37
37
  <img src="https://raw.githubusercontent.com/ckb-ecofund/ccc/master/assets/preview.png" width="30%" />
38
38
  </a>
39
39
  </p>
40
40
 
41
- This project is still under active development, and we are looking forward to your feedback. [Try its demo now here](https://ckbccc-demo.vercel.app/). It showcases how to use CCC for some basic scenarios in CKB.
41
+ 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
42
 
43
43
  <h3 align="center">
44
- Read more about CCC on its <a href="https://github.com/ckb-ecofund/ccc">GitHub Repo</a>.
44
+ 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
45
  </h3>
@@ -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,KAMN,MAAM,OAAO,CAAC;AAef,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,cAAc,EACd,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,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,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC;CAC7C,qBAsEA;AAED,wBAAgB,MAAM;;;;;;;EAQrB"}
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"}
@@ -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
- export function Provider({ children, connectorProps, name, icon, signerFilter, defaultClient, preferredNetworks, }) {
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, signerFilter: signerFilter, ref: setRef, onWillUpdate: () => setFlag((f) => f + 1), onClose: () => setIsOpen(false), preferredNetworks: preferredNetworks, ...connectorProps,
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.12-alpha.7",
3
+ "version": "0.0.12",
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.12-alpha.7"
39
+ "@ckb-ccc/connector": "0.0.12"
40
40
  },
41
41
  "scripts": {
42
42
  "build": "rimraf ./dist && tsc",
@@ -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
- signerFilter={signerFilter}
124
+ signersController={
125
+ signersController ?? defautlSignersController.current
126
+ }
86
127
  ref={setRef}
87
128
  onWillUpdate={() => setFlag((f) => f + 1)}
88
129
  onClose={() => setIsOpen(false)}
package/typedoc.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "$schema": "https://typedoc.org/schema.json",
3
+ "entryPoints": ["./src/index.ts", "./src/advanced.ts"],
4
+ "extends": ["../../typedoc.base.json"],
5
+ "name": "@ckb-ccc connector-react"
6
+ }