Skip to content

Commit 0683420

Browse files
committed
feat: add torus auth method
License: MIT Signed-off-by: Vaibhav Saini <vasa@towardsblockchain.com>
1 parent 821d337 commit 0683420

File tree

6 files changed

+280
-0
lines changed

6 files changed

+280
-0
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
},
4242
"dependencies": {
4343
"@portis/web3": "^2.0.0-beta.42",
44+
"@toruslabs/torus-embed": "^0.2.11",
4445
"@walletconnect/web3-provider": "^1.0.0-beta.36",
4546
"authereum": "^0.0.4-beta.26",
4647
"bignumber.js": "^9.0.0",

rollup.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ export default {
5555
'fortmatic',
5656
'squarelink',
5757
'authereum',
58+
'@toruslabs/torus-embed',
5859
'lodash.debounce',
5960
'regenerator-runtime/runtime'
6061
]

src/interfaces.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,20 @@ export interface WalletConnectOptions {
135135
svg?: string
136136
}
137137

138+
export interface TorusOptions {
139+
networkId: number
140+
chainId?: number
141+
loginMethod?: 'google' | 'facebook' | 'twitch' | 'reddit' | 'discord'
142+
buildEnv?: 'production' | 'development' | 'staging' | 'testing'
143+
showTorusButton?: boolean
144+
buttonPosition?: 'top-left' | 'top-right' | 'bottom-right' | 'bottom-left'
145+
enableLogging?: boolean
146+
preferred?: boolean
147+
label?: string
148+
iconSrc?: string
149+
svg?: string
150+
}
151+
138152
export interface WalletInit {
139153
walletName: string
140154
preferred?: boolean

src/modules/select/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const defaultWalletNames = [
77
'coinbase',
88
'trust',
99
'authereum',
10+
'torus',
1011
'opera',
1112
'operaTouch'
1213
]
@@ -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 'torus':
72+
return import('./wallets/torus')
7073
default:
7174
return
7275
}

src/modules/select/wallets/torus.ts

Lines changed: 257 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,257 @@
1+
import Torus from '@toruslabs/torus-embed'
2+
import { networkName } from '../../../utilities'
3+
import { TorusOptions, WalletModule, Helpers } from '../../../interfaces'
4+
5+
//import torusIcon from '../wallet-icons/icon-torus.png'
6+
7+
const torusIcon = `<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="500px" height="500px" viewBox="0 0 500 500" enable-background="new 0 0 500 500" xml:space="preserve"> <image id="image0" width="500" height="500" x="0" y="0"
8+
href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAMAAAD8CC+4AAAMQWlDQ1BpY2MAAEiJlVcHVFPJGp5b
9+
UklogQhICb2JUqRLCaFFEJAq2AhJIKHEmBBE7MiigmsXEVBXdFXERdcCiB11rYtidy0PRVSUdbFg
10+
Q+VNCui655139s+Zud/955/vL5l77wwAOjU8qTQX1QUgT5Ivi48IYU1ITWOROgECfxRgBax5fLmU
11+
HRcXDaAMXr8RBIC3N5Q9AFddlFzg34meQCjnQ5o4iDMEcn4exPsBwEv4Ulk+AEQfqLeekS9V4kkQ
12+
G8hggBBLlThLjUuUOEONK1U2ifEciHcBQKbxeLIsALSboZ5VwM+CPNq3IHaVCMQSAHTIEAfyRTwB
13+
xJEQj8jLm6bE0A44ZHzDk/U3zowhTh4vawirc1EJOVQsl+byZv7Lcvx/yctVDPqwg40mkkXGK3OG
14+
dbuVMy1KiWkQ90gyYmIh1of4vVigsocYpYoUkUlqe9SUL+fAmgEmxK4CXmgUxKYQh0tyY6I1+oxM
15+
cTgXYrhC0EJxPjdRM3exUB6WoOGskU2Ljx3EmTIOWzO3gSdT+VXan1LkJLE1/LdEQu4g/5siUWKK
16+
OmaMWiBOjoFYG2KmPCchSm2D2RSJODGDNjJFvDJ+G4j9hJKIEDU/NiVTFh6vsZflyQfzxRaLxNwY
17+
Da7KFyVGanh28Xmq+I0gbhZK2EmDPEL5hOjBXATC0DB17thloSRJky/WIc0PidfMfSXNjdPY41Rh
18+
boRSbwWxqbwgQTMXD8yHC1LNj8dI8+MS1XHiGdm8sXHqePBCEA04IBSwgAK2DDANZANxW09TD7xT
19+
j4QDHpCBLCAELhrN4IwU1YgE9gmgCPwJkRDIh+aFqEaFoADqPw9p1b0LyFSNFqhm5IDHEOeBKJAL
20+
7xWqWZIhb8ngEdSI/+GdD2PNhU059k8dG2qiNRrFIC9LZ9CSGEYMJUYSw4mOuAkeiPvj0bAPhs0d
21+
98F9B6P9ak94TGgnPCRcJ3QQbk8VF8u+y4cFxoEO6CFck3PGtznjdpDVEw/BAyA/5MaZuAlwwUdD
22+
T2w8CPr2hFqOJnJl9t9z/y2Hb6qusaO4UlDKMEowxeH7mdpO2p5DLMqaflshdawZQ3XlDI1875/z
23+
TaUF8Br1vSW2GNuHncFOYOeww1gTYGHHsGbsInZEiYdW0SPVKhr0Fq+KJwfyiP/hj6fxqayk3LXe
24+
tdv1k3osX1iofD8CzjTpTJk4S5TPYsM3v5DFlfBHjmC5u7r5AqD8jqhfU6+Zqu8Dwjz/VbdwEQAB
25+
dQMDA4e+6qK6ANj3FwDUe1919tnwdSAC4OxavkJWoNbhyo4AqEAHPlHGwBxYAweYjzvwAv4gGISB
26+
sSAWJIJUMAVWWQTXswzMALPBAlAKysEKsBZUgU1gC9gBfgF7QRM4DE6A38AFcBlcB3fg6ukCz0Ev
27+
eAv6EQQhIXSEgRgjFogt4oy4Iz5IIBKGRCPxSCqSjmQhEkSBzEYWIuXIKqQK2YzUIb8iB5ETyDmk
28+
HbmNPEC6kVfIRxRDaagBaobaoaNQH5SNRqGJ6GQ0C52OFqEl6DK0Eq1Fd6GN6An0Anod7UCfo30Y
29+
wLQwJmaJuWA+GAeLxdKwTEyGzcXKsAqsFmvAWuD/fBXrwHqwDzgRZ+As3AWu4Eg8Cefj0/G5+FK8
30+
Ct+BN+Kn8Kv4A7wX/0KgE0wJzgQ/ApcwgZBFmEEoJVQQthEOEE7Dp6mL8JZIJDKJ9kRv+DSmErOJ
31+
s4hLiRuIu4nHie3ETmIfiUQyJjmTAkixJB4pn1RKWk/aRTpGukLqIr0na5EtyO7kcHIaWUIuJleQ
32+
d5KPkq+Qn5D7KboUW4ofJZYioMykLKdspbRQLlG6KP1UPao9NYCaSM2mLqBWUhuop6l3qa+1tLSs
33+
tHy1xmuJteZrVWrt0Tqr9UDrA02f5kTj0CbRFLRltO2047TbtNd0Ot2OHkxPo+fTl9Hr6Cfp9+nv
34+
tRnaI7W52gLtedrV2o3aV7Rf6FB0bHXYOlN0inQqdPbpXNLp0aXo2ulydHm6c3WrdQ/q3tTt02Po
35+
uenF6uXpLdXbqXdO76k+Sd9OP0xfoF+iv0X/pH4nA2NYMzgMPmMhYyvjNKPLgGhgb8A1yDYoN/jF
36+
oM2g11DfcLRhsmGhYbXhEcMOJsa0Y3KZuczlzL3MG8yPw8yGsYcJhy0Z1jDsyrB3RsONgo2ERmVG
37+
u42uG300ZhmHGecYrzRuMr5ngps4mYw3mWGy0eS0Sc9wg+H+w/nDy4bvHf6HKWrqZBpvOst0i+lF
38+
0z4zc7MIM6nZerOTZj3mTPNg82zzNeZHzbstGBaBFmKLNRbHLJ6xDFlsVi6rknWK1WtpahlpqbDc
39+
bNlm2W9lb5VkVWy12+qeNdXaxzrTeo11q3WvjYXNOJvZNvU2f9hSbH1sRbbrbM/YvrOzt0uxW2TX
40+
ZPfU3siea19kX29/14HuEOQw3aHW4Zoj0dHHMcdxg+NlJ9TJ00nkVO10yRl19nIWO29wbh9BGOE7
41+
QjKidsRNF5oL26XApd7lwUjmyOiRxSObRr4YZTMqbdTKUWdGfXH1dM113ep6x03fbaxbsVuL2yt3
42+
J3e+e7X7NQ+6R7jHPI9mj5ejnUcLR28cfcuT4TnOc5Fnq+dnL28vmVeDV7e3jXe6d433TR8Dnzif
43+
pT5nfQm+Ib7zfA/7fvDz8sv32+v3l7+Lf47/Tv+nY+zHCMdsHdMZYBXAC9gc0BHICkwP/CmwI8gy
44+
iBdUG/Qw2DpYELwt+AnbkZ3N3sV+EeIaIgs5EPKO48eZwzkeioVGhJaFtoXphyWFVYXdD7cKzwqv
45+
D++N8IyYFXE8khAZFbky8ibXjMvn1nF7x3qPnTP2VBQtKiGqKuphtFO0LLplHDpu7LjV4+7G2MZI
46+
YppiQSw3dnXsvTj7uOlxh8YTx8eNrx7/ON4tfnb8mQRGwtSEnQlvE0MSlyfeSXJIUiS1JuskT0qu
47+
S36XEpqyKqVjwqgJcyZcSDVJFac2p5HSktO2pfVNDJu4dmLXJM9JpZNuTLafXDj53BSTKblTjkzV
48+
mcqbui+dkJ6SvjP9Ey+WV8vry+Bm1GT08jn8dfzngmDBGkG3MEC4SvgkMyBzVebTrICs1VndoiBR
49+
hahHzBFXiV9mR2Zvyn6XE5uzPWcgNyV3dx45Lz3voERfkiM5Nc18WuG0dqmztFTaMd1v+trpvbIo
50+
2TY5Ip8sb843gBv2iwoHxQ+KBwWBBdUF72ckz9hXqFcoKbw402nmkplPisKLfp6Fz+LPap1tOXvB
51+
7Adz2HM2z0XmZsxtnWc9r2Re1/yI+TsWUBfkLPi92LV4VfGbhSkLW0rMSuaXdP4Q8UN9qXaprPTm
52+
Iv9Fmxbji8WL25Z4LFm/5EuZoOx8uWt5Rfmnpfyl5390+7Hyx4Flmcvalnst37iCuEKy4sbKoJU7
53+
VumtKlrVuXrc6sY1rDVla96snbr2XMXoik3rqOsU6zoqoyub19usX7H+U5Wo6np1SPXuGtOaJTXv
54+
Ngg2XNkYvLFhk9mm8k0ffxL/dGtzxObGWrvaii3ELQVbHm9N3nrmZ5+f67aZbCvf9nm7ZHvHjvgd
55+
p+q86+p2mu5cXo/WK+q7d03adfmX0F+aG1waNu9m7i7fA/Yo9jz7Nf3XG3uj9rbu89nXsN92f80B
56+
xoGyRqRxZmNvk6ipozm1uf3g2IOtLf4tBw6NPLT9sOXh6iOGR5YfpR4tOTpwrOhY33Hp8Z4TWSc6
57+
W6e23jk54eS1U+NPtZ2OOn32t/DfTp5hnzl2NuDs4XN+5w6e9znfdMHrQuNFz4sHfvf8/UCbV1vj
58+
Je9LzZd9L7e0j2k/eiXoyomroVd/u8a9duF6zPX2G0k3bt2cdLPjluDW09u5t1/+UfBH/535dwl3
59+
y+7p3qu4b3q/9j+O/9nd4dVx5EHog4sPEx7e6eR3Pn8kf/Spq+Qx/XHFE4sndU/dnx7uDu++/Gzi
60+
s67n0uf9PaV/6v1Z88Lhxf6/gv+62Duht+ul7OXAq6WvjV9vfzP6TWtfXN/9t3lv+9+VvTd+v+OD
61+
z4czH1M+Pumf8Yn0qfKz4+eWL1Ff7g7kDQxIeTKeaiuAwYZmZgLwajsA9FQAGJfh/mGi+pynEkR9
62+
NlUh8L+w+iyoEi8AGuBFuV3nHAdgD2x2wZB7PgDKrXpiMEA9PIaaRuSZHu5qLho88RDeDwy8NgOA
63+
1ALAZ9nAQP+GgYHPW2GwtwE4Pl19vlQKEZ4NfgpWoutGSZPBd/JfZxSAO16j6r8AAAAgY0hSTQAA
64+
eiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAcVQTFRF////jbn6c6n4ZKD4XZz3
65+
e6757PP+0OP9udT8o8f7lb76hrX5fbD5eq75d6z5hLT5kLv6n8T7s9H7yd784+7+/P3/U5b3Y6D4
66+
+/3/0uT9qcv7grL5Xp34WJn3ncP6xtz88/j+9fn/wNn8iLf5W5v3VJf3ea35rs776/P+/v//j7v6
67+
e6/5v9j8+Pv/vNb8b6f4X534psn77/b+Z6L48vf+y9/9bKX4+vz/aqT4uNT8Wpv3lr/69/r/a6T4
68+
2+n9Vpj3utX8w9r8mMD6/f7/rc37eK35m8L6tdL8yt/9msH65e/++Pr/3er9bab49vn/ZaH41eX9
69+
nML6bqb44u3+VZf3stD7f7H53Or9q8z7jrr6Yp/4sdD7gLH5dav5VJb37fT+5vD+r877frD5ocb7
70+
rMz7irj6Wpr3/v7/a6X45/D+0eP9ocX7t9P8qcr7ttP8wtr80OL9n8X7aaT4qsv79vr/9Pj+caj4
71+
7/X+irf61+f9pcj7nsT67vX++fv/YZ/4z+L9xNv8kr36aKP43+z+kbz6mcH68fb+osb70+T9V5j3
72+
jLn6yN78pMf7YJ74lL766PH+tNH84ez+yN38ZqL44e3+vtf82ej9LiPXZgAAAAFiS0dEAIgFHUgA
73+
AAAJcEhZcwAAD2EAAA9hAag/p2kAAAAHdElNRQfjDBUAFCYCkNuIAAAOW3pUWHRSYXcgcHJvZmls
74+
ZSB0eXBlIGljYwAAWIWtmWeS5Dquhf9rFW8JNKDBcmgjZv8beB9kKk1Xz8yNmKxmK0XRgDAHB8rj
75+
X2Mc/8cnqubD2WfryL644vJwwZ9deeZVpIQUpEgILtWkqQXnyoo89ndT53joQjyyz7HE4sQnl5wM
76+
d3++7//yOXfd7Ho8N/aZMcwfyf7h5/hnw73PklOJOV636e7P4chi3XleD7qcV6nCgV0J5brPsV4T
77+
QiwFzbmnP92SezlQ56nG60F5dpZc3vur/PR/jNf6vpBgmUvU3K4dqsOKaCvcK6/+SORKRv5yS7Tm
78+
3R/dkRen1rzO++2eB4vhlcWuCVuehQYGmnk//feCLtQj/02i8ndJ8y+SHueD8ueDD+u8PlWQ3/wu
79+
mwvr68E/NP/fP//7hVDhKOn7KCHfX0auJUhN4br1l5L9rLnnLT2FZ6FLmX4NrBhkyb4nXBP9rlhW
80+
Xhvc/cE1NkhskI6PHYIfFsISb4dz/pIoRFO+F5F+918bB8lsPNh4HJ8TMGzOKllue9zxHAoSFRFN
81+
Px5+9ddqtpWU4rPQLaoOvHnjP/u7P2d0FMV/btyW+f+bsp8dhqDwntLPhPsIKJW9RR98ehbaUtAS
82+
rls+lR1dI5Y0ZVl3/3WN+Gxkg/ijo2uhGM6FkHT9uVAoKYV0A024JI2x5ZSXge7HCWJa55Hzj/mf
83+
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" />
176+
</svg>`
177+
178+
function torus(options: TorusOptions): WalletModule {
179+
const {
180+
networkId,
181+
chainId,
182+
preferred,
183+
label,
184+
iconSrc,
185+
svg,
186+
buildEnv,
187+
buttonPosition,
188+
enableLogging,
189+
loginMethod,
190+
showTorusButton
191+
} = options
192+
193+
return {
194+
name: label || 'Torus',
195+
svg: svg || torusIcon,
196+
iconSrc,
197+
wallet: async (helpers: Helpers) => {
198+
const instance = new Torus({
199+
buttonPosition: buttonPosition // default: bottom-left
200+
})
201+
202+
await instance.init({
203+
buildEnv: buildEnv, // default: production
204+
enableLogging: enableLogging, // default: false
205+
network: {
206+
host: networkName(networkId), // default: mainnet
207+
chainId: chainId, // default: 1
208+
networkName: `${networkName(networkId)} Network` // default: Main Ethereum Network
209+
},
210+
showTorusButton: showTorusButton // default: true
211+
})
212+
213+
const provider = instance.provider
214+
215+
const { BigNumber } = helpers
216+
217+
return {
218+
provider,
219+
instance,
220+
interface: {
221+
name: 'Torus',
222+
connect: async () => {
223+
let result = await instance.login({ verifier: loginMethod })
224+
return Promise.resolve({ message: result[0] })
225+
},
226+
disconnect: () => instance.logout(),
227+
address: {
228+
get: () => Promise.resolve(instance.web3.eth.accounts[0])
229+
},
230+
network: {
231+
get: () => Promise.resolve(Number(instance.web3.version.network))
232+
},
233+
balance: {
234+
get: () =>
235+
new Promise(async (resolve, reject) => {
236+
instance.web3.eth.getBalance(
237+
instance.web3.eth.accounts[0],
238+
(err: any, data: any) => {
239+
if (err) {
240+
reject(`Error while checking Balance: ${err}`)
241+
} else {
242+
resolve(BigNumber(data.c[0]).toString())
243+
}
244+
}
245+
)
246+
})
247+
}
248+
}
249+
}
250+
},
251+
desktop: true,
252+
mobile: true,
253+
preferred
254+
}
255+
}
256+
257+
export default torus

src/utilities.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,10 @@ export function getProviderName(provider: any): string | undefined {
148148
return 'Toshi'
149149
}
150150

151+
if (provider.isTorus) {
152+
return 'Torus'
153+
}
154+
151155
if (provider.isCipher) {
152156
return 'Cipher'
153157
}

0 commit comments

Comments
 (0)