UNPKG

ic-auth

Version:

A simple to use, modular package for integrating Internet Computer authentication providers into your app.

55 lines (54 loc) 2.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Bitfinity = void 0; const react_1 = require("react"); const principal_1 = require("@dfinity/principal"); const helloIDL = require("../interfaces/hello"); const infinity_png_1 = require("../assets/logos/infinity.png"); require("../assets/index.css"); function Bitfinity(props) { const changeProvider = props.changeProvider; const [infinityButtonText, setInfinityButtonText] = (0, react_1.useState)("Bitfinity"); const [loggedIn, setLoggedIn] = (0, react_1.useState)(false); const buttonState = (0, react_1.useRef)(null); const infinityStatus = (0, react_1.useRef)(null); const manageLogin = async () => { await window.ic.infinityWallet.requestConnect(); const theUserPrincipal = principal_1.Principal.from(await window.ic.infinityWallet.getPrincipal()).toText(); changeProvider(theUserPrincipal); infinityStatus.current.style.backgroundColor = "#42ff0f"; setInfinityButtonText("Connected!"); setLoggedIn(true); buttonState.current.disabled = true; }; const infinityLogin = async () => { const hasLoggedIn = await window.ic.infinityWallet.isConnected(); if (!hasLoggedIn) { await manageLogin(); } else { const theUserPrincipal = principal_1.Principal.from(await window.ic.infinityWallet.getPrincipal()).toText(); changeProvider(theUserPrincipal); infinityStatus.current.style.backgroundColor = "#42ff0f"; setInfinityButtonText("Connected!"); setLoggedIn(true); buttonState.current.disabled = true; } }; const createInfinityActor = async () => { const actor = await window.ic.infinityWallet.createActor({ interfaceFactory: helloIDL.idlFactory, canisterId: "oyjva-2yaaa-aaaam-qbaya-cai" }); return actor; }; const testInfinity = async () => { await infinityLogin(); const actor = await createInfinityActor(); const result = await actor.hello_world(); console.log(result); }; return (react_1.default.createElement("div", { className: "walletContainer" }, react_1.default.createElement("button", { ref: buttonState, onClick: !loggedIn ? testInfinity : undefined, id: 'infinityMenu' }, react_1.default.createElement("img", { src: infinity_png_1.default }), react_1.default.createElement("p", null, infinityButtonText), react_1.default.createElement("div", { ref: infinityStatus, className: 'statusBubble', id: 'statusBubble' })))); } exports.Bitfinity = Bitfinity;