@perawallet/connect
Version:
JavaScript SDK for integrating Pera Wallet to web applications.
58 lines (46 loc) • 1.36 kB
text/typescript
import Bowser from "bowser";
import {PeraWalletFlowType} from "../peraWalletTypes";
function isNavigatorAvailable() {
return typeof navigator !== "undefined";
}
function isAndroid() {
return isNavigatorAvailable() && /Android/i.test(navigator.userAgent);
}
function isIOS() {
return isNavigatorAvailable() && /iPhone|iPad|iPod/i.test(navigator.userAgent);
}
function isMobile() {
return isNavigatorAvailable() && /iPhone|iPod|Android/i.test(navigator.userAgent);
}
/**
* Detects the browser name
* @returns {BrowserName} Browser name
*/
function detectBrowser() {
if (!isNavigatorAvailable()) {
return null;
}
const {userAgent} = navigator;
let browserName: string;
if (userAgent.match(/DuckDuckGo/i)) {
browserName = "DuckDuckGo";
} else if (userAgent.match(/OPX/i)) {
browserName = "Opera GX";
}
// @ts-ignore brave object exists on Brave
else if (navigator.brave) {
browserName = "Brave";
} else {
browserName = Bowser.getParser(navigator.userAgent).getBrowserName();
}
return browserName;
}
/**
* Returns the flow type based on the browser
*
* @returns {PeraWalletFlowType} EMBEDDED | NEW_TAB
*/
function peraWalletFlowType(): PeraWalletFlowType {
return detectBrowser() === "Chrome" ? "EMBEDDED" : "NEW_TAB";
}
export {isAndroid, isIOS, isMobile, detectBrowser, peraWalletFlowType};