UNPKG

@perawallet/connect

Version:

JavaScript SDK for integrating Pera Wallet to web applications.

102 lines (81 loc) 3.08 kB
import PeraRedirectIcon from "../../asset/icon/PeraRedirectIcon.svg"; import {generatePeraWalletAppDeepLink} from "../../util/peraWalletUtils"; import { PERA_WALLET_REDIRECT_MODAL_ID, removeModalWrapperFromDOM } from "../peraWalletConnectModalUtils"; import styles from "./_pera-wallet-redirect-modal.scss"; const peraWalletRedirectModalTemplate = document.createElement("template"); peraWalletRedirectModalTemplate.innerHTML = ` <div class="pera-wallet-modal pera-wallet-modal--mobile"> <div class="pera-wallet-modal__body"> <pera-wallet-modal-header modal-id="${PERA_WALLET_REDIRECT_MODAL_ID}"></pera-wallet-modal-header/> <div class="pera-wallet-redirect-modal"> <div class="pera-wallet-redirect-modal__content"> <img src="${PeraRedirectIcon}" /> <h1 class="pera-wallet-redirect-modal__content__title"> Can't Launch Pera </h1> <p class="pera-wallet-redirect-modal__content__description"> We couldn't redirect you to Pera Wallet automatically. Please try again. </p> <p class="pera-wallet-redirect-modal__content__install-pera-text"> Don't have Pera Wallet installed yet? <br /> <a id="pera-wallet-redirect-modal-download-pera-link" class="pera-wallet-redirect-modal__content__install-pera-text__link" href="https://perawallet.app/download/" rel="noopener noreferrer" target="_blank"> Tap here to install. </a> </p> </div> <a id="pera-wallet-redirect-modal-launch-pera-link" class="pera-wallet-redirect-modal__launch-pera-wallet-button" rel="noopener noreferrer" target="_blank"> Launch Pera Wallet </a> </div> </div> </div> `; export class PeraWalletRedirectModal extends HTMLElement { constructor() { super(); this.attachShadow({mode: "open"}); if (this.shadowRoot) { const styleSheet = document.createElement("style"); styleSheet.textContent = styles; this.shadowRoot.append( peraWalletRedirectModalTemplate.content.cloneNode(true), styleSheet ); const downloadPeraLink = this.shadowRoot?.getElementById( "pera-wallet-redirect-modal-download-pera-link" ); downloadPeraLink?.addEventListener("click", () => { this.onClose(); }); const launchPeraLink = this.shadowRoot?.getElementById( "pera-wallet-redirect-modal-launch-pera-link" ); launchPeraLink?.addEventListener("click", () => { this.onClose(); window.open(generatePeraWalletAppDeepLink(), "_blank"); }); } } connectedCallback() { const peraWalletDeepLink = window.open(generatePeraWalletAppDeepLink(), "_blank"); if (peraWalletDeepLink && !peraWalletDeepLink.closed) { this.onClose(); } } onClose() { removeModalWrapperFromDOM(PERA_WALLET_REDIRECT_MODAL_ID); } }