Skip to content

Commit ef652e6

Browse files
committed
Merge branch 'develop' into feature/wallet-url
2 parents dbf14a3 + 1640b29 commit ef652e6

File tree

5 files changed

+62
-41
lines changed

5 files changed

+62
-41
lines changed

src/interfaces.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -223,9 +223,3 @@ export interface AppState {
223223
export interface CancelablePromise extends Promise<any> {
224224
cancel: () => void
225225
}
226-
227-
export interface QueryablePromise extends CancelablePromise {
228-
isFulfilled: () => boolean
229-
isResolved: () => boolean
230-
isRejected: () => boolean
231-
}

src/modules/select/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ const defaultWalletNames = [
88
'trust',
99
'authereum',
1010
'opera',
11-
'operaTouch'
11+
'operaTouch',
12+
'status'
1213
]
1314

1415
function select(
@@ -67,6 +68,8 @@ function getModule(name: string): Promise<any> | undefined {
6768
return import('./wallets/opera')
6869
case 'operaTouch':
6970
return import('./wallets/opera-touch')
71+
case 'status':
72+
return import('./wallets/status')
7073
default:
7174
return
7275
}

src/modules/select/wallets/status.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import { extensionInstallMessage } from '../content'
2+
import { WalletModule, Helpers } from '../../../interfaces'
3+
4+
const statusIcon = `
5+
<svg width="109" height="109" viewBox="0 0 109 109" fill="none" xmlns="http://www.w3.org/2000/svg">
6+
<path fill-rule="evenodd" clip-rule="evenodd" d="M54.7 0C24.7 0 0.400024 24.3 0.400024 54.3C0.400024 84.3 24.7 108.6 54.7 108.6C84.7 108.6 109 84.3 109 54.3C108.9 24.3 84.6 0 54.7 0ZM47.3 77.6C40.4 78 33.4 74 33.1 67.5C32.7 61.1 37.9 56.8 46.5 56.4C49.7 56.2 52.3 56.5 54.8 56.7C57.4 57 60 57.2 63.1 57C64.6 56.9 66.2 56.7 67.8 56.4C67 67.4 58.6 77 47.3 77.6ZM65.3 52.3C61.9 52.5 59.2 52.2 56.5 51.9C53.8 51.6 51 51.3 47.7 51.5C46.1 51.6 44.4 51.8 42.8 52.2C43.8 40.2 52.6 29.7 64.5 29.1C71.8 28.7 79.1 33.1 79.5 40.2C79.9 47.2 74.4 51.8 65.3 52.3Z" fill="#4360DF"/>
7+
</svg>
8+
`
9+
10+
function status(
11+
options: {
12+
preferred?: boolean
13+
label?: string
14+
iconSrc?: string
15+
svg?: string
16+
} = {}
17+
): WalletModule {
18+
const { preferred, label, iconSrc, svg } = options
19+
20+
return {
21+
name: label || 'Status',
22+
iconSrc: iconSrc,
23+
iconSrcSet: iconSrc,
24+
svg: svg || statusIcon,
25+
wallet: async (helpers: Helpers) => {
26+
const { getProviderName, createModernProviderInterface } = helpers
27+
28+
const provider = (window as any).ethereum
29+
30+
return {
31+
provider,
32+
interface:
33+
provider && getProviderName(provider) === 'Status'
34+
? createModernProviderInterface(provider)
35+
: null
36+
}
37+
},
38+
link: 'https://status.im/',
39+
installMessage: extensionInstallMessage,
40+
mobile: true,
41+
preferred
42+
}
43+
}
44+
45+
export default status

src/stores.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { getBlocknative } from './services'
22
import { writable, derived, get } from 'svelte/store'
33
import debounce from 'lodash.debounce'
4-
import { wait, makeQueryablePromise, makeCancelable } from './utilities'
4+
import { wait, makeCancelable } from './utilities'
55
import { validateWalletInterface, validateType } from './validation'
66
import {
77
WritableStore,
@@ -10,7 +10,7 @@ import {
1010
WalletStateSliceStore,
1111
StateSyncer,
1212
BalanceStore,
13-
QueryablePromise
13+
CancelablePromise
1414
} from './interfaces'
1515

1616
export const app: WritableStore = writable({
@@ -28,7 +28,7 @@ export const app: WritableStore = writable({
2828
})
2929

3030
export const balanceSyncStatus: {
31-
syncing: null | QueryablePromise
31+
syncing: null | CancelablePromise
3232
error: string
3333
} = {
3434
syncing: null,
@@ -49,7 +49,8 @@ export const wallet: WritableStore = writable({
4949
provider: null,
5050
connect: null,
5151
instance: null,
52-
url: null
52+
url: null,
53+
loading: null
5354
})
5455

5556
export const state = derived(
@@ -148,7 +149,7 @@ function createWalletStateSliceStore(options: {
148149
get()
149150
.then(set)
150151
.catch((err: any) => {
151-
throw new Error(
152+
console.warn(
152153
`Error getting ${parameter} from state syncer: ${err}`
153154
)
154155
})

src/utilities.ts

Lines changed: 7 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import bowser from 'bowser'
22
import BigNumber from 'bignumber.js'
33

4-
import { WalletInterface, QueryablePromise } from './interfaces'
4+
import { WalletInterface } from './interfaces'
55

66
export function getNetwork(provider: any): Promise<number | any> {
77
return new Promise((resolve, reject) => {
@@ -156,6 +156,10 @@ export function getProviderName(provider: any): string | undefined {
156156
return 'Opera'
157157
}
158158

159+
if (provider.isStatus) {
160+
return 'Status'
161+
}
162+
159163
if (provider.host && provider.host.indexOf('localhost') !== -1) {
160164
return 'localhost'
161165
}
@@ -167,7 +171,7 @@ export function getDeviceInfo() {
167171
const { type } = browser.getPlatform()
168172

169173
return {
170-
isMobile: type !== 'desktop',
174+
isMobile: type ? type !== 'desktop' : window.innerWidth < 600,
171175
os: name
172176
}
173177
}
@@ -220,38 +224,12 @@ export function makeCancelable(promise: any) {
220224
})
221225

222226
wrappedPromise.cancel = () => {
223-
rejectFn('poop')
227+
rejectFn('canceled')
224228
}
225229

226230
return wrappedPromise
227231
}
228232

229-
export function makeQueryablePromise(promise: any): QueryablePromise {
230-
let isResolved = false
231-
let isRejected = false
232-
233-
promise.then(function(v: any) {
234-
isResolved = true
235-
return v
236-
})
237-
238-
promise.catch(() => {
239-
console.log('caught 2')
240-
isRejected = true
241-
})
242-
243-
promise.isFulfilled = function() {
244-
return isResolved || isRejected
245-
}
246-
promise.isResolved = function() {
247-
return isResolved
248-
}
249-
promise.isRejected = function() {
250-
return isRejected
251-
}
252-
return promise
253-
}
254-
255233
export function isPromise(val: any): val is Promise<any> {
256234
if ((val as Promise<any>) instanceof Promise) {
257235
return true

0 commit comments

Comments
 (0)