UNPKG

ic-auth

Version:

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

55 lines (54 loc) 2.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PlugWallet = void 0; const react_1 = require("react"); const principal_1 = require("@dfinity/principal"); const helloIDL = require("../interfaces/hello"); const plug_png_1 = require("../assets/logos/plug.png"); require("../assets/index.css"); function PlugWallet(props) { const changeProvider = props.changeProvider; const [plugButtonText, setPlugButtonText] = (0, react_1.useState)("Plug"); const [loggedIn, setLoggedIn] = (0, react_1.useState)(false); const buttonState = (0, react_1.useRef)(null); const plugStatus = (0, react_1.useRef)(null); const manageLogin = async () => { await window.ic.plug.requestConnect(); const theUserPrincipal = principal_1.Principal.from(await window.ic.plug.agent.getPrincipal()).toText(); changeProvider(theUserPrincipal); plugStatus.current.style.backgroundColor = "#42ff0f"; setPlugButtonText("Connected!"); buttonState.current.disabled = true; }; const plugLogin = async () => { const hasLoggedIn = await window.ic.plug.isConnected(); if (!hasLoggedIn) { await manageLogin(); } else { await window.ic.plug.createAgent(); const theUserPrincipal = principal_1.Principal.from(await window.ic.plug.agent.getPrincipal()).toText(); changeProvider(theUserPrincipal); plugStatus.current.style.backgroundColor = "#42ff0f"; setPlugButtonText("Connected!"); setLoggedIn(true); buttonState.current.disabled = true; } }; const createPlugActor = async () => { const actor = await window.ic.plug.createActor({ interfaceFactory: helloIDL.idlFactory, canisterId: "oyjva-2yaaa-aaaam-qbaya-cai" }); return actor; }; const testPlug = async () => { await plugLogin(); const actor = await createPlugActor(); 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 ? testPlug : undefined, id: 'plugMenu' }, react_1.default.createElement("img", { src: plug_png_1.default }), react_1.default.createElement("p", null, plugButtonText), react_1.default.createElement("div", { ref: plugStatus, className: 'statusBubble', id: 'statusBubble' })))); } exports.PlugWallet = PlugWallet;