@keplr-wallet/wc-qrcode-modal 0.12.21 → 0.12.22-rc.0

Sign up to get free protection for your applications and to get access to all the features.
package/build/index.d.ts CHANGED
@@ -1,7 +1,12 @@
1
1
  import { ModalUIOptions } from "./modal";
2
- export declare class KeplrQRCodeModalV1 {
2
+ import SignClient from "@walletconnect/sign-client";
3
+ import { ProposalTypes } from "@walletconnect/types";
4
+ import SessionProperties = ProposalTypes.SessionProperties;
5
+ export declare class KeplrQRCodeModalV2 {
6
+ readonly signClient: SignClient;
3
7
  protected readonly uiOptions?: ModalUIOptions | undefined;
4
- constructor(uiOptions?: ModalUIOptions | undefined);
8
+ constructor(signClient: SignClient, uiOptions?: ModalUIOptions | undefined);
9
+ connect(chainIds: string[]): Promise<SessionProperties | undefined>;
5
10
  open(uri: string, cb: any): void;
6
11
  close(): void;
7
12
  }
package/build/index.js CHANGED
@@ -1,19 +1,65 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
13
  };
5
14
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.KeplrQRCodeModalV1 = void 0;
15
+ exports.KeplrQRCodeModalV2 = void 0;
7
16
  const react_1 = __importDefault(require("react"));
8
17
  const react_dom_1 = __importDefault(require("react-dom"));
9
18
  const modal_1 = require("./modal");
10
- class KeplrQRCodeModalV1 {
11
- constructor(uiOptions) {
19
+ class KeplrQRCodeModalV2 {
20
+ constructor(signClient, uiOptions) {
21
+ this.signClient = signClient;
12
22
  this.uiOptions = uiOptions;
13
23
  }
24
+ connect(chainIds) {
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ const { uri, approval } = yield this.signClient.connect({
27
+ requiredNamespaces: {
28
+ cosmos: {
29
+ methods: [
30
+ "cosmos_getAccounts",
31
+ "cosmos_signDirect",
32
+ "cosmos_signAmino",
33
+ "keplr_getKey",
34
+ "keplr_signAmino",
35
+ "keplr_signDirect",
36
+ "keplr_signArbitrary",
37
+ "keplr_enable",
38
+ ],
39
+ chains: [...chainIds.map((chainId) => `cosmos:${chainId}`)],
40
+ events: ["accountsChanged", "chainChanged", "keplr_accountsChanged"],
41
+ },
42
+ },
43
+ });
44
+ if (!uri) {
45
+ throw new Error("No uri");
46
+ }
47
+ try {
48
+ this.open(uri, () => { });
49
+ const session = yield approval();
50
+ return session.sessionProperties;
51
+ }
52
+ catch (e) {
53
+ console.error(e);
54
+ }
55
+ finally {
56
+ this.close();
57
+ }
58
+ });
59
+ }
14
60
  open(uri, cb) {
15
61
  const wrapper = document.createElement("div");
16
- wrapper.setAttribute("id", "keplr-qrcode-modal-v1");
62
+ wrapper.setAttribute("id", "keplr-qrcode-modal-v2");
17
63
  document.body.appendChild(wrapper);
18
64
  react_dom_1.default.render(react_1.default.createElement(modal_1.Modal, { uri: uri, close: () => {
19
65
  this.close();
@@ -21,11 +67,11 @@ class KeplrQRCodeModalV1 {
21
67
  }, uiOptions: this.uiOptions }), wrapper);
22
68
  }
23
69
  close() {
24
- const wrapper = document.getElementById("keplr-qrcode-modal-v1");
70
+ const wrapper = document.getElementById("keplr-qrcode-modal-v2");
25
71
  if (wrapper) {
26
72
  document.body.removeChild(wrapper);
27
73
  }
28
74
  }
29
75
  }
30
- exports.KeplrQRCodeModalV1 = KeplrQRCodeModalV1;
76
+ exports.KeplrQRCodeModalV2 = KeplrQRCodeModalV2;
31
77
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,0DAAiC;AACjC,mCAAgD;AAEhD,MAAa,kBAAkB;IAC7B,YAA+B,SAA0B;QAA1B,cAAS,GAAT,SAAS,CAAiB;IAAG,CAAC;IAE7D,IAAI,CAAC,GAAW,EAAE,EAAO;QACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;QACpD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEnC,mBAAQ,CAAC,MAAM,CACb,8BAAC,aAAK,IACJ,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,GAAG,EAAE;gBACV,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,EAAE,EAAE,CAAC;YACP,CAAC,EACD,SAAS,EAAE,IAAI,CAAC,SAAS,GACzB,EACF,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;QACjE,IAAI,OAAO,EAAE;YACX,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SACpC;IACH,CAAC;CACF;AA3BD,gDA2BC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,0DAAiC;AACjC,mCAAgD;AAKhD,MAAa,kBAAkB;IAC7B,YACkB,UAAsB,EACnB,SAA0B;QAD7B,eAAU,GAAV,UAAU,CAAY;QACnB,cAAS,GAAT,SAAS,CAAiB;IAC5C,CAAC;IAEE,OAAO,CAAC,QAAkB;;YAC9B,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBACtD,kBAAkB,EAAE;oBAClB,MAAM,EAAE;wBACN,OAAO,EAAE;4BACP,oBAAoB;4BACpB,mBAAmB;4BACnB,kBAAkB;4BAClB,cAAc;4BACd,iBAAiB;4BACjB,kBAAkB;4BAClB,qBAAqB;4BACrB,cAAc;yBACf;wBACD,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;wBAC3D,MAAM,EAAE,CAAC,iBAAiB,EAAE,cAAc,EAAE,uBAAuB,CAAC;qBACrE;iBACF;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,EAAE;gBACR,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;aAC3B;YAED,IAAI;gBACF,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACzB,MAAM,OAAO,GAAG,MAAM,QAAQ,EAAE,CAAC;gBACjC,OAAO,OAAO,CAAC,iBAAiB,CAAC;aAClC;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAClB;oBAAS;gBACR,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;QACH,CAAC;KAAA;IAED,IAAI,CAAC,GAAW,EAAE,EAAO;QACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;QACpD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEnC,mBAAQ,CAAC,MAAM,CACb,8BAAC,aAAK,IACJ,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,GAAG,EAAE;gBACV,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,EAAE,EAAE,CAAC;YACP,CAAC,EACD,SAAS,EAAE,IAAI,CAAC,SAAS,GACzB,EACF,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;QACjE,IAAI,OAAO,EAAE;YACX,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SACpC;IACH,CAAC;CACF;AAjED,gDAiEC"}
package/build/modal.js CHANGED
@@ -28,31 +28,32 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.Modal = void 0;
30
30
  const react_1 = __importStar(require("react"));
31
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
32
- // @ts-ignore
33
31
  const qrcode_react_1 = __importDefault(require("qrcode.react"));
34
- const browser_utils_1 = require("@walletconnect/browser-utils");
32
+ const util_1 = require("./util");
35
33
  const Modal = ({ uiOptions, uri, close }) => {
36
34
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
37
- const [checkMobile] = (0, react_1.useState)(() => (0, browser_utils_1.isMobile)());
38
- const [checkAndroid] = (0, react_1.useState)(() => (0, browser_utils_1.isAndroid)());
35
+ const [checkMobile] = (0, react_1.useState)(() => (0, util_1.isMobile)());
36
+ const [checkAndroid] = (0, react_1.useState)(() => (0, util_1.isAndroid)());
37
+ const saveMobileLinkInfo = (info) => {
38
+ localStorage.setItem("wallet-connect-v2-mobile-link", JSON.stringify(info));
39
+ };
39
40
  const navigateToAppURL = (0, react_1.useMemo)(() => {
40
41
  if (checkMobile) {
41
42
  if (checkAndroid) {
42
43
  // Save the mobile link.
43
- (0, browser_utils_1.saveMobileLinkInfo)({
44
+ saveMobileLinkInfo({
44
45
  name: "Keplr",
45
- href: "intent://wcV1#Intent;package=com.chainapsis.keplr;scheme=keplrwallet;end;",
46
+ href: "intent://wcV2#Intent;package=com.chainapsis.keplr;scheme=keplrwallet;end;",
46
47
  });
47
- return `intent://wcV1?${uri}#Intent;package=com.chainapsis.keplr;scheme=keplrwallet;end;`;
48
+ return `intent://wcV2?${uri}#Intent;package=com.chainapsis.keplr;scheme=keplrwallet;end;`;
48
49
  }
49
50
  else {
50
51
  // Save the mobile link.
51
- (0, browser_utils_1.saveMobileLinkInfo)({
52
+ saveMobileLinkInfo({
52
53
  name: "Keplr",
53
- href: "keplrwallet://wcV1",
54
+ href: `keplrwallet://wcV2`,
54
55
  });
55
- return `keplrwallet://wcV1?${uri}`;
56
+ return `keplrwallet://wcV2?${uri}`;
56
57
  }
57
58
  }
58
59
  }, [checkAndroid, checkMobile, uri]);
@@ -1 +1 @@
1
- {"version":3,"file":"modal.js","sourceRoot":"","sources":["../src/modal.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAMe;AACf,6DAA6D;AAC7D,aAAa;AACb,gEAAkC;AAClC,gEAIsC;AAiC/B,MAAM,KAAK,GAKb,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;;IACjC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CAAC,IAAA,wBAAQ,GAAE,CAAC,CAAC;IACjD,MAAM,CAAC,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CAAC,IAAA,yBAAS,GAAE,CAAC,CAAC;IAEnD,MAAM,gBAAgB,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QACpC,IAAI,WAAW,EAAE;YACf,IAAI,YAAY,EAAE;gBAChB,wBAAwB;gBACxB,IAAA,kCAAkB,EAAC;oBACjB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,2EAA2E;iBAClF,CAAC,CAAC;gBAEH,OAAO,iBAAiB,GAAG,8DAA8D,CAAC;aAC3F;iBAAM;gBACL,wBAAwB;gBACxB,IAAA,kCAAkB,EAAC;oBACjB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,oBAAoB;iBAC3B,CAAC,CAAC;gBAEH,OAAO,sBAAsB,GAAG,EAAE,CAAC;aACpC;SACF;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;IAErC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,2CAA2C;QAC3C,IAAI,gBAAgB,EAAE;YACpB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,gBAAgB,CAAC;SACzC;IACH,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,OAAO,CACL,8BAAC,eAAK,CAAC,QAAQ;QACb,uCACE,SAAS,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,0CAAE,SAAS,EACzC,KAAK,kCACA,CAAC,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,0CAAE,mBAAmB;gBAC1C,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACE,QAAQ,EAAE,OAAO;oBACjB,GAAG,EAAE,CAAC;oBACN,MAAM,EAAE,CAAC;oBACT,IAAI,EAAE,CAAC;oBACP,KAAK,EAAE,CAAC;oBACR,eAAe,EAAE,iBAAiB;oBAElC,OAAO,EAAE,MAAM;oBACf,cAAc,EAAE,QAAQ;oBACxB,UAAU,EAAE,QAAQ;iBACrB,CAAC,GACH,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,0CAAE,KAAK,GAE/B,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,CAAC,CAAC,eAAe,EAAE,CAAC;gBAEpB,KAAK,EAAE,CAAC;YACV,CAAC;YAED,uCACE,SAAS,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,cAAc,0CAAE,SAAS,EAC/C,KAAK,kCACA,CAAC,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,cAAc,0CAAE,mBAAmB;oBAChD,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC;wBACE,OAAO,EAAE,EAAE;wBACX,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,SAAS;qBAC3B,CAAC,GACH,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,cAAc,0CAAE,KAAK,GAErC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACb,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,CAAC,CAAC,eAAe,EAAE,CAAC;gBACtB,CAAC,IAEA,CAAC,WAAW,CAAC,CAAC,CAAC,CACd,8BAAC,eAAK,CAAC,QAAQ;gBACb,sCACE,SAAS,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,0CAAE,SAAS,EAC5C,KAAK,kCACA,CAAC,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,0CAAE,mBAAmB;wBAC7C,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC;4BACE,QAAQ,EAAE,EAAE;4BACZ,MAAM,EAAE,CAAC;4BACT,YAAY,EAAE,EAAE;yBACjB,CAAC,GACH,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,0CAAE,KAAK,oBAI/B;gBACL,uCACE,SAAS,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,eAAe,0CAAE,SAAS,EAChD,KAAK,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,eAAe,0CAAE,KAAK;oBAExC,8BAAC,sBAAM,IAAC,IAAI,EAAE,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,KAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAI,CACtD,CACS,CAClB,CAAC,CAAC,CAAC,CACF,8BAAC,eAAK,CAAC,QAAQ;gBACb,sCACE,SAAS,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,0CAAE,SAAS,EAC5C,KAAK,kCACA,CAAC,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,0CAAE,mBAAmB;wBAC7C,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC;4BACE,QAAQ,EAAE,EAAE;4BACZ,MAAM,EAAE,CAAC;4BACT,YAAY,EAAE,EAAE;yBACjB,CAAC,GACH,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,0CAAE,KAAK,gBAI/B;gBACL,uCACE,SAAS,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,kBAAkB,0CAAE,SAAS,EACnD,KAAK,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,kBAAkB,0CAAE,KAAK;oBAE3C,0CACE,SAAS,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,0CAAE,SAAS,EAC1C,KAAK,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,0CAAE,KAAK,EAClC,OAAO,EAAE,GAAG,EAAE;4BACZ,IAAI,gBAAgB,EAAE;gCACpB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,gBAAgB,CAAC;6BACzC;wBACH,CAAC,eAGM,CACL,CACS,CAClB,CACG,CACF,CACS,CAClB,CAAC;AACJ,CAAC,CAAC;AAlJW,QAAA,KAAK,SAkJhB"}
1
+ {"version":3,"file":"modal.js","sourceRoot":"","sources":["../src/modal.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function isAndroid(): boolean;
2
+ export declare function isMobile(): boolean;
package/build/util.js ADDED
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isMobile = exports.isAndroid = void 0;
4
+ const detect_browser_1 = require("detect-browser");
5
+ function detectEnv(userAgent) {
6
+ return (0, detect_browser_1.detect)(userAgent);
7
+ }
8
+ function detectOS() {
9
+ const env = detectEnv();
10
+ return env && env.os ? env.os : undefined;
11
+ }
12
+ function isAndroid() {
13
+ const os = detectOS();
14
+ return os ? os.toLowerCase().includes("android") : false;
15
+ }
16
+ exports.isAndroid = isAndroid;
17
+ function isIOS() {
18
+ const os = detectOS();
19
+ return os
20
+ ? os.toLowerCase().includes("ios") ||
21
+ (os.toLowerCase().includes("mac") && navigator.maxTouchPoints > 1)
22
+ : false;
23
+ }
24
+ function isMobile() {
25
+ const os = detectOS();
26
+ return os ? isAndroid() || isIOS() : false;
27
+ }
28
+ exports.isMobile = isMobile;
29
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;AAAA,mDAOwB;AAExB,SAAS,SAAS,CAChB,SAAkB;IAQlB,OAAO,IAAA,uBAAM,EAAC,SAAS,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,QAAQ;IACf,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,OAAO,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5C,CAAC;AAED,SAAgB,SAAS;IACvB,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3D,CAAC;AAHD,8BAGC;AAED,SAAS,KAAK;IACZ,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,OAAO,EAAE;QACP,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC9B,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC;QACtE,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC;AAED,SAAgB,QAAQ;IACtB,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7C,CAAC;AAHD,4BAGC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keplr-wallet/wc-qrcode-modal",
3
- "version": "0.12.21",
3
+ "version": "0.12.22-rc.0",
4
4
  "main": "build/index.js",
5
5
  "author": "chainapsis",
6
6
  "license": "Apache-2.0",
@@ -15,13 +15,14 @@
15
15
  "lint-fix": "eslint --fix \"src/**/*\" && prettier --write \"src/**/*\""
16
16
  },
17
17
  "dependencies": {
18
- "@walletconnect/browser-utils": "^1.6.5",
19
- "@walletconnect/types": "^1.6.5",
20
- "qrcode.react": "^1.0.1"
18
+ "detect-browser": "^5.3.0",
19
+ "qrcode.react": "^3.1.0"
21
20
  },
22
21
  "peerDependencies": {
22
+ "@walletconnect/sign-client": "^2",
23
+ "@walletconnect/types": "^2",
23
24
  "react": "^16.8.0 || ^17 || ^18",
24
25
  "react-dom": "^16.8.0 || ^17 || ^18"
25
26
  },
26
- "gitHead": "95ba471dd911d866428817167abf574d5e70ae34"
27
+ "gitHead": "983c1890b6147bab0b843157644ae645a50a973c"
27
28
  }
package/src/index.tsx CHANGED
@@ -1,13 +1,54 @@
1
1
  import React from "react";
2
2
  import ReactDom from "react-dom";
3
3
  import { Modal, ModalUIOptions } from "./modal";
4
+ import SignClient from "@walletconnect/sign-client";
5
+ import { ProposalTypes } from "@walletconnect/types";
6
+ import SessionProperties = ProposalTypes.SessionProperties;
4
7
 
5
- export class KeplrQRCodeModalV1 {
6
- constructor(protected readonly uiOptions?: ModalUIOptions) {}
8
+ export class KeplrQRCodeModalV2 {
9
+ constructor(
10
+ public readonly signClient: SignClient,
11
+ protected readonly uiOptions?: ModalUIOptions
12
+ ) {}
13
+
14
+ async connect(chainIds: string[]): Promise<SessionProperties | undefined> {
15
+ const { uri, approval } = await this.signClient.connect({
16
+ requiredNamespaces: {
17
+ cosmos: {
18
+ methods: [
19
+ "cosmos_getAccounts",
20
+ "cosmos_signDirect",
21
+ "cosmos_signAmino",
22
+ "keplr_getKey",
23
+ "keplr_signAmino",
24
+ "keplr_signDirect",
25
+ "keplr_signArbitrary",
26
+ "keplr_enable",
27
+ ],
28
+ chains: [...chainIds.map((chainId) => `cosmos:${chainId}`)],
29
+ events: ["accountsChanged", "chainChanged", "keplr_accountsChanged"],
30
+ },
31
+ },
32
+ });
33
+
34
+ if (!uri) {
35
+ throw new Error("No uri");
36
+ }
37
+
38
+ try {
39
+ this.open(uri, () => {});
40
+ const session = await approval();
41
+ return session.sessionProperties;
42
+ } catch (e) {
43
+ console.error(e);
44
+ } finally {
45
+ this.close();
46
+ }
47
+ }
7
48
 
8
49
  open(uri: string, cb: any) {
9
50
  const wrapper = document.createElement("div");
10
- wrapper.setAttribute("id", "keplr-qrcode-modal-v1");
51
+ wrapper.setAttribute("id", "keplr-qrcode-modal-v2");
11
52
  document.body.appendChild(wrapper);
12
53
 
13
54
  ReactDom.render(
@@ -24,7 +65,7 @@ export class KeplrQRCodeModalV1 {
24
65
  }
25
66
 
26
67
  close() {
27
- const wrapper = document.getElementById("keplr-qrcode-modal-v1");
68
+ const wrapper = document.getElementById("keplr-qrcode-modal-v2");
28
69
  if (wrapper) {
29
70
  document.body.removeChild(wrapper);
30
71
  }
package/src/modal.tsx CHANGED
@@ -5,14 +5,8 @@ import React, {
5
5
  useMemo,
6
6
  useState,
7
7
  } from "react";
8
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
9
- // @ts-ignore
10
8
  import QRCode from "qrcode.react";
11
- import {
12
- isMobile,
13
- isAndroid,
14
- saveMobileLinkInfo,
15
- } from "@walletconnect/browser-utils";
9
+ import { isAndroid, isMobile } from "./util";
16
10
 
17
11
  export type ModalUIOptions = {
18
12
  backdrop?: {
@@ -54,24 +48,28 @@ export const Modal: FunctionComponent<{
54
48
  const [checkMobile] = useState(() => isMobile());
55
49
  const [checkAndroid] = useState(() => isAndroid());
56
50
 
51
+ const saveMobileLinkInfo = (info: { name: string; href: string }) => {
52
+ localStorage.setItem("wallet-connect-v2-mobile-link", JSON.stringify(info));
53
+ };
54
+
57
55
  const navigateToAppURL = useMemo(() => {
58
56
  if (checkMobile) {
59
57
  if (checkAndroid) {
60
58
  // Save the mobile link.
61
59
  saveMobileLinkInfo({
62
60
  name: "Keplr",
63
- href: "intent://wcV1#Intent;package=com.chainapsis.keplr;scheme=keplrwallet;end;",
61
+ href: "intent://wcV2#Intent;package=com.chainapsis.keplr;scheme=keplrwallet;end;",
64
62
  });
65
63
 
66
- return `intent://wcV1?${uri}#Intent;package=com.chainapsis.keplr;scheme=keplrwallet;end;`;
64
+ return `intent://wcV2?${uri}#Intent;package=com.chainapsis.keplr;scheme=keplrwallet;end;`;
67
65
  } else {
68
66
  // Save the mobile link.
69
67
  saveMobileLinkInfo({
70
68
  name: "Keplr",
71
- href: "keplrwallet://wcV1",
69
+ href: `keplrwallet://wcV2`,
72
70
  });
73
71
 
74
- return `keplrwallet://wcV1?${uri}`;
72
+ return `keplrwallet://wcV2?${uri}`;
75
73
  }
76
74
  }
77
75
  }, [checkAndroid, checkMobile, uri]);
package/src/util.ts ADDED
@@ -0,0 +1,43 @@
1
+ import {
2
+ detect,
3
+ BrowserInfo,
4
+ BotInfo,
5
+ NodeInfo,
6
+ SearchBotDeviceInfo,
7
+ ReactNativeInfo,
8
+ } from "detect-browser";
9
+
10
+ function detectEnv(
11
+ userAgent?: string
12
+ ):
13
+ | BrowserInfo
14
+ | BotInfo
15
+ | NodeInfo
16
+ | SearchBotDeviceInfo
17
+ | ReactNativeInfo
18
+ | null {
19
+ return detect(userAgent);
20
+ }
21
+
22
+ function detectOS() {
23
+ const env = detectEnv();
24
+ return env && env.os ? env.os : undefined;
25
+ }
26
+
27
+ export function isAndroid(): boolean {
28
+ const os = detectOS();
29
+ return os ? os.toLowerCase().includes("android") : false;
30
+ }
31
+
32
+ function isIOS(): boolean {
33
+ const os = detectOS();
34
+ return os
35
+ ? os.toLowerCase().includes("ios") ||
36
+ (os.toLowerCase().includes("mac") && navigator.maxTouchPoints > 1)
37
+ : false;
38
+ }
39
+
40
+ export function isMobile(): boolean {
41
+ const os = detectOS();
42
+ return os ? isAndroid() || isIOS() : false;
43
+ }