diff options
author | Fabio Berger <me@fabioberger.com> | 2018-11-16 21:52:20 +0800 |
---|---|---|
committer | Fabio Berger <me@fabioberger.com> | 2018-11-16 21:52:20 +0800 |
commit | 25d0b1e6e58987d0f00a5034158c2c514cf476d6 (patch) | |
tree | 412ef07e713fd928b856aca2fc603e182adcd1d3 /packages/instant/src/util/env.ts | |
parent | e36fc4e6aef414c5d3507c59d82e03e92fbc93fb (diff) | |
parent | cabb7432b9a6d4a5bb8da6fc7fe4522d24e4ece5 (diff) | |
download | dexon-sol-tools-25d0b1e6e58987d0f00a5034158c2c514cf476d6.tar dexon-sol-tools-25d0b1e6e58987d0f00a5034158c2c514cf476d6.tar.gz dexon-sol-tools-25d0b1e6e58987d0f00a5034158c2c514cf476d6.tar.bz2 dexon-sol-tools-25d0b1e6e58987d0f00a5034158c2c514cf476d6.tar.lz dexon-sol-tools-25d0b1e6e58987d0f00a5034158c2c514cf476d6.tar.xz dexon-sol-tools-25d0b1e6e58987d0f00a5034158c2c514cf476d6.tar.zst dexon-sol-tools-25d0b1e6e58987d0f00a5034158c2c514cf476d6.zip |
Merge branch 'development' into launchKitLanding
* development: (110 commits)
fix: fix exceeds block gas limit error
chore(instant): fix lint error
fix: remove unused vars
Send in affiliate info as option
Have heartbeat update not trigger errors
fix: remove redundant handler
feat: make onUnlockWalletClick different based on ON
chore: remove wallet panel content for mobile
feat: use blue for wallet prompt on mobile
feat: use stable version of bowser
fix: add http to external url string
feat: make onUnlockWalletClick different based on ON
chore: remove wallet panel content for mobile
feat: use blue for wallet prompt on mobile
feat: use stable version of bowser
feat: expose webpack-dev-server content to local network
fix(website): remove node env definition from webpack
fix(website): currentProvider called on undefined
chore: update yarn lock
feat: use capital values for enums
...
Diffstat (limited to 'packages/instant/src/util/env.ts')
-rw-r--r-- | packages/instant/src/util/env.ts | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/packages/instant/src/util/env.ts b/packages/instant/src/util/env.ts new file mode 100644 index 000000000..4a32f9cb1 --- /dev/null +++ b/packages/instant/src/util/env.ts @@ -0,0 +1,65 @@ +import * as bowser from 'bowser'; +import { Provider } from 'ethereum-types'; +import * as _ from 'lodash'; + +import { PROVIDER_TYPE_TO_NAME } from '../constants'; +import { Browser, OperatingSystem, ProviderType } from '../types'; + +export const envUtil = { + getBrowser(): Browser { + if (bowser.chrome) { + return Browser.Chrome; + } else if (bowser.firefox) { + return Browser.Firefox; + } else if (bowser.opera) { + return Browser.Opera; + } else if (bowser.msedge) { + return Browser.Edge; + } else if (bowser.safari) { + return Browser.Safari; + } else { + return Browser.Other; + } + }, + isMobileOperatingSystem(): boolean { + return bowser.mobile; + }, + getOperatingSystem(): OperatingSystem { + if (bowser.android) { + return OperatingSystem.Android; + } else if (bowser.ios) { + return OperatingSystem.iOS; + } else if (bowser.mac) { + return OperatingSystem.Mac; + } else if (bowser.windows) { + return OperatingSystem.Windows; + } else if (bowser.windowsphone) { + return OperatingSystem.WindowsPhone; + } else if (bowser.linux) { + return OperatingSystem.Linux; + } else { + return OperatingSystem.Other; + } + }, + getProviderType(provider: Provider): ProviderType | undefined { + if (provider.constructor.name === 'EthereumProvider') { + return ProviderType.Mist; + } else if ((provider as any).isParity) { + return ProviderType.Parity; + } else if ((provider as any).isMetaMask) { + return ProviderType.MetaMask; + } else if (!_.isUndefined(_.get(window, 'SOFA'))) { + return ProviderType.CoinbaseWallet; + } else if (!_.isUndefined(_.get(window, '__CIPHER__'))) { + return ProviderType.Cipher; + } + return; + }, + getProviderName(provider: Provider): string { + const providerTypeIfExists = envUtil.getProviderType(provider); + if (_.isUndefined(providerTypeIfExists)) { + return provider.constructor.name; + } + return PROVIDER_TYPE_TO_NAME[providerTypeIfExists]; + }, +}; |