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
JavaScript
;
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;