Skip to content

Commit 38b52aa

Browse files
Merge pull request #13 from torusresearch/feat/more-params
feat: additional params
2 parents 57963fd + 0fe9b81 commit 38b52aa

File tree

8 files changed

+134
-77
lines changed

8 files changed

+134
-77
lines changed

OpenLoginReactNativeSDKDemo2/.prettierrc.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
module.exports = {
22
bracketSpacing: false,
3-
jsxBracketSameLine: true,
43
singleQuote: true,
54
trailingComma: 'all',
65
arrowParens: 'avoid',

OpenLoginReactNativeSDKDemo2/App.js

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@ import React, {useState} from 'react';
22

33
import {StyleSheet, View, Text, Button} from 'react-native';
44
import OpenloginReactNativeSdk, {
5-
LoginResponse,
65
LoginProvider,
76
OpenloginNetwork,
87
} from 'openlogin-react-native-sdk';
98

109
export default function App() {
11-
const [result, setResult] = useState('');
10+
const [loginResult, setLoginResult] = useState('');
1211

1312
React.useEffect(() => {
1413
OpenloginReactNativeSdk.init({
@@ -30,7 +29,7 @@ export default function App() {
3029
OpenloginReactNativeSdk.login({
3130
provider: LoginProvider.GOOGLE,
3231
})
33-
.then(result => setResult(JSON.stringify(result)))
32+
.then(result => setLoginResult(JSON.stringify(result)))
3433
.catch(err => console.log(`error: ${err}`))
3534
}
3635
/>
@@ -42,7 +41,23 @@ export default function App() {
4241
OpenloginReactNativeSdk.login({
4342
provider: LoginProvider.APPLE,
4443
})
45-
.then(result => setResult(JSON.stringify(result)))
44+
.then(result => setLoginResult(JSON.stringify(result)))
45+
.catch(err => console.log(`error: ${err}`))
46+
}
47+
/>
48+
</View>
49+
<View style={styles.box}>
50+
<Button
51+
title="Login with Email"
52+
onPress={() =>
53+
OpenloginReactNativeSdk.login({
54+
provider: LoginProvider.EMAIL_PASSWORDLESS,
55+
relogin: true,
56+
extraLoginOptions: {
57+
login_hint: '[email protected]',
58+
},
59+
})
60+
.then(result => setLoginResult(JSON.stringify(result)))
4661
.catch(err => console.log(`error: ${err}`))
4762
}
4863
/>
@@ -51,8 +66,8 @@ export default function App() {
5166
<Button
5267
title="Login with OpenLogin"
5368
onPress={() =>
54-
OpenloginReactNativeSdk.login({})
55-
.then(result => setResult(JSON.stringify(result)))
69+
OpenloginReactNativeSdk.login({extraLoginOptions: {}})
70+
.then(result => setLoginResult(JSON.stringify(result)))
5671
.catch(err => console.log(`error: ${err}`))
5772
}
5873
/>
@@ -61,15 +76,13 @@ export default function App() {
6176
<Button
6277
title="Logout"
6378
onPress={() =>
64-
OpenloginReactNativeSdk.logout({
65-
provider: LoginProvider.GOOGLE,
66-
})
67-
.then(result => setResult(''))
79+
OpenloginReactNativeSdk.logout({})
80+
.then(result => setLoginResult(''))
6881
.catch(err => console.log(`error: ${err}`))
6982
}
7083
/>
7184
</View>
72-
<Text style={styles.text}>Result: {result}</Text>
85+
<Text style={styles.text}>Result: {loginResult}</Text>
7386
</View>
7487
);
7588
}

OpenLoginReactNativeSDKDemo2/ios/Podfile.lock

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,9 @@ PODS:
7474
- glog (0.3.5)
7575
- libevent (2.1.12)
7676
- OpenLogin (1.0.0)
77-
- openlogin-react-native-sdk (0.1.0):
78-
- OpenLogin (= 1.0.0)
77+
- openlogin-react-native-sdk (1.0.0):
7978
- React-Core
79+
- Web3Auth (= 3.1.0)
8080
- OpenSSL-Universal (1.1.180)
8181
- RCT-Folly (2021.06.28.00-v2):
8282
- boost
@@ -341,6 +341,7 @@ PODS:
341341
- React-jsi (= 0.66.3)
342342
- React-logger (= 0.66.3)
343343
- React-perflogger (= 0.66.3)
344+
- Web3Auth (3.1.0)
344345
- Yoga (1.14.0)
345346
- YogaKit (1.18.1):
346347
- Yoga (~> 1.14)
@@ -418,6 +419,7 @@ SPEC REPOS:
418419
- libevent
419420
- OpenLogin
420421
- OpenSSL-Universal
422+
- Web3Auth
421423
- YogaKit
422424

423425
EXTERNAL SOURCES:
@@ -503,7 +505,7 @@ SPEC CHECKSUMS:
503505
glog: 5337263514dd6f09803962437687240c5dc39aa4
504506
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
505507
OpenLogin: 055c3108e8ada81a1e833c2c59188faed302e32b
506-
openlogin-react-native-sdk: 935885e0e368de62ecb08c9ca92f0a5e2ca953ba
508+
openlogin-react-native-sdk: 59392576b4b481f39bc83063b0a81173f35bd627
507509
OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b
508510
RCT-Folly: a21c126816d8025b547704b777a2ba552f3d9fa9
509511
RCTRequired: 59d2b744d8c2bf2d9bc7032a9f654809adcf7d50
@@ -529,6 +531,7 @@ SPEC CHECKSUMS:
529531
React-RCTVibration: 50cfe7049167cfc7e83ac5542c6fff0c76791a9b
530532
React-runtimeexecutor: bbbdb3d8fcf327c6e2249ee71b6ef1764b7dc266
531533
ReactCommon: 9bac022ab71596f2b0fde1268272543184c63971
534+
Web3Auth: 81df9a25d1ca80b10ac1f0447713297fc9b3aa48
532535
Yoga: 32a18c0e845e185f4a2a66ec76e1fd1f958f22fa
533536
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
534537

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ dependencies {
127127
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
128128
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9")
129129
implementation 'net.sourceforge.streamsupport:streamsupport-cfuture:1.7.4'
130-
implementation 'com.github.torusresearch:openlogin-android-sdk:1.0.1'
130+
implementation 'org.torusresearch:web3auth-android-sdk:2.1.1'
131131
}
132132

133133
configurations.all {

android/src/main/java/com/openloginreactnativesdk/OpenloginReactNativeSdkModule.kt

Lines changed: 64 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,14 @@ import android.app.Activity
99
import android.content.Intent
1010
import android.net.Uri
1111
import com.facebook.react.bridge.*
12-
import com.openlogin.core.OpenLogin
12+
import com.web3auth.core.Web3Auth
1313
import java.lang.Exception
1414
import java.util.*
1515
import com.facebook.react.bridge.WritableMap
1616

1717
import com.facebook.react.bridge.ReactContext
1818
import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter
19-
import com.openlogin.core.types.LoginParams
20-
import com.openlogin.core.types.OpenLoginOptions
21-
import com.openlogin.core.types.OpenLoginResponse
19+
import com.web3auth.core.types.*
2220
import kotlinx.coroutines.CoroutineScope
2321
import kotlinx.coroutines.Dispatchers
2422
import kotlinx.coroutines.launch
@@ -27,24 +25,25 @@ import java8.util.concurrent.CompletableFuture
2725
// Quick note on allowing RN Modules to receive Activity Events
2826
// https://stackoverflow.com/questions/45744013/onnewintent-is-not-called-on-reactcontextbasejavamodule-react-native
2927

30-
class OpenloginReactNativeSdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
28+
class OpenloginReactNativeSdkModule(reactContext: ReactApplicationContext) :
29+
ReactContextBaseJavaModule(reactContext) {
3130

3231
override fun getName(): String {
3332
return "OpenloginReactNativeSdk"
3433
}
3534

36-
private lateinit var openlogin: OpenLogin
35+
private lateinit var openlogin: Web3Auth
3736

3837
@ReactMethod
3938
fun init(params: ReadableMap, promise: Promise) = try {
4039
val clientId = params.getString("clientId") as String
4140
val network = params.getString("network") as String
4241
val redirectUrl = params.getString("redirectUrl")
43-
openlogin = OpenLogin(
44-
OpenLoginOptions(
42+
openlogin = Web3Auth(
43+
Web3AuthOptions(
4544
context = currentActivity!!,
4645
clientId = clientId,
47-
network = OpenLogin.Network.valueOf(network.toUpperCase(Locale.ROOT)),
46+
network = Web3Auth.Network.valueOf(network.toUpperCase(Locale.ROOT)),
4847
redirectUrl = Uri.parse(redirectUrl ?: "${reactApplicationContext!!.packageName}://auth")
4948
)
5049
)
@@ -55,7 +54,7 @@ class OpenloginReactNativeSdkModule(reactContext: ReactApplicationContext) : Rea
5554
override fun onActivityResult(p0: Activity?, p1: Int, p2: Int, p3: Intent?) {}
5655

5756
override fun onNewIntent(p0: Intent?) {
58-
openlogin.setResultUrl(p0?.data)
57+
openlogin.setResultUrl(p0?.data)
5958
}
6059
})
6160
promise.resolve(null)
@@ -69,7 +68,23 @@ class OpenloginReactNativeSdkModule(reactContext: ReactApplicationContext) : Rea
6968

7069
CoroutineScope(Dispatchers.Default).launch {
7170
try {
72-
val loginCF = openlogin.login(LoginParams(getOpenLoginProvider(provider)))
71+
val loginParams = LoginParams(
72+
loginProvider = getWeb3AuthProvider(provider),
73+
relogin = if (!params.hasKey("relogin")) null else params.getBoolean("relogin"),
74+
dappShare = if (!params.hasKey("dappShare")) null else params.getString("dappShare"),
75+
redirectUrl = if (!params.hasKey("redirectUrl")) null else Uri.parse(params.getString("redirectUrl")),
76+
appState = if (!params.hasKey("appState")) null else params.getString("appState"),
77+
extraLoginOptions = ExtraLoginOptions(
78+
login_hint = if (params.hasKey("extraLoginOptions") || params.getMap("extraLoginOptions")
79+
?.hasKey("login_hint") == null || params.getMap("extraLoginOptions")
80+
?.hasKey("login_hint") == true
81+
) params.getMap("extraLoginOptions")?.getString("login_hint") else null
82+
83+
)
84+
)
85+
val loginCF = openlogin.login(
86+
loginParams,
87+
)
7388
loginCF.join()
7489
loginCF.whenComplete { result, error ->
7590
launch(Dispatchers.Main) {
@@ -78,6 +93,7 @@ class OpenloginReactNativeSdkModule(reactContext: ReactApplicationContext) : Rea
7893
} else {
7994
val map = Arguments.createMap()
8095
map.putString("privKey", result.privKey)
96+
map.putString("ed25519PrivKey", result.ed25519PrivKey)
8197
val userInfoMap = Arguments.createMap()
8298
userInfoMap.putString("email", result.userInfo?.email)
8399
userInfoMap.putString("name", result.userInfo?.name)
@@ -86,6 +102,7 @@ class OpenloginReactNativeSdkModule(reactContext: ReactApplicationContext) : Rea
86102
userInfoMap.putString("verifier", result.userInfo?.verifier)
87103
userInfoMap.putString("verifierId", result.userInfo?.verifierId)
88104
userInfoMap.putString("typeOfLogin", result.userInfo?.typeOfLogin)
105+
userInfoMap.putString("dappShare", result.userInfo?.dappShare)
89106
map.putMap("userInfo", userInfoMap)
90107
promise.resolve(map)
91108
}
@@ -97,47 +114,47 @@ class OpenloginReactNativeSdkModule(reactContext: ReactApplicationContext) : Rea
97114
}
98115
}
99116

100-
@ReactMethod
101-
fun logout(params: ReadableMap, promise: Promise) {
102-
CoroutineScope(Dispatchers.Default).launch {
103-
try {
104-
val logoutCF = openlogin.logout()
105-
logoutCF.join()
106-
logoutCF.whenComplete { _, error ->
107-
launch(Dispatchers.Main) {
108-
if (error != null) {
109-
promise.reject(error)
110-
} else {
111-
promise.resolve(null)
112-
}
113-
}
117+
@ReactMethod
118+
fun logout(params: ReadableMap, promise: Promise) {
119+
CoroutineScope(Dispatchers.Default).launch {
120+
try {
121+
val logoutCF = openlogin.logout()
122+
logoutCF.join()
123+
logoutCF.whenComplete { _, error ->
124+
launch(Dispatchers.Main) {
125+
if (error != null) {
126+
promise.reject(error)
127+
} else {
128+
promise.resolve(null)
114129
}
115-
} catch (e: Exception) {
116-
launch(Dispatchers.Main) { promise.reject(e) }
117130
}
118131
}
132+
} catch (e: Exception) {
133+
launch(Dispatchers.Main) { promise.reject(e) }
119134
}
135+
}
136+
}
120137

121-
fun getOpenLoginProvider(provider: String?): OpenLogin.Provider {
122-
return when (provider) {
123-
"google" -> OpenLogin.Provider.GOOGLE
124-
"facebook" -> OpenLogin.Provider.FACEBOOK
125-
"reddit" -> OpenLogin.Provider.REDDIT
126-
"discord" -> OpenLogin.Provider.DISCORD
127-
"twitch" -> OpenLogin.Provider.TWITCH
128-
"apple" -> OpenLogin.Provider.APPLE
129-
"line" -> OpenLogin.Provider.LINE
130-
"github" -> OpenLogin.Provider.GITHUB
131-
"kakao" -> OpenLogin.Provider.KAKAO
132-
"linkedin" -> OpenLogin.Provider.LINKEDIN
133-
"twitter" -> OpenLogin.Provider.TWITTER
134-
"weibo" -> OpenLogin.Provider.WEIBO
135-
"wechat" -> OpenLogin.Provider.WECHAT
136-
"email_passwordless" -> OpenLogin.Provider.EMAIL_PASSWORDLESS
137-
138-
else -> OpenLogin.Provider.GOOGLE
139-
}
140-
}
138+
fun getWeb3AuthProvider(provider: String?): Provider {
139+
return when (provider) {
140+
"google" -> Provider.GOOGLE
141+
"facebook" -> Provider.FACEBOOK
142+
"reddit" -> Provider.REDDIT
143+
"discord" -> Provider.DISCORD
144+
"twitch" -> Provider.TWITCH
145+
"apple" -> Provider.APPLE
146+
"line" -> Provider.LINE
147+
"github" -> Provider.GITHUB
148+
"kakao" -> Provider.KAKAO
149+
"linkedin" -> Provider.LINKEDIN
150+
"twitter" -> Provider.TWITTER
151+
"weibo" -> Provider.WEIBO
152+
"wechat" -> Provider.WECHAT
153+
"email_passwordless" -> Provider.EMAIL_PASSWORDLESS
154+
155+
else -> Provider.GOOGLE
156+
}
157+
}
141158

142159
}
143160

ios/OpenloginReactNativeSdk.swift

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import OpenLogin
1+
import Web3Auth
22

33
@available(iOS 13.0, *)
44
@objc(OpenloginReactNativeSdk)
55
class OpenloginReactNativeSdk: NSObject {
66

7-
private var openlogin: OpenLogin?
7+
private var openlogin: Web3Auth?
88

99
@objc(init:withResolver:withRejecter:)
1010
func `init`(params: [String:String], resolve: RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) -> Void {
@@ -16,19 +16,32 @@ class OpenloginReactNativeSdk: NSObject {
1616
reject("ArgumentError", "invalid clientId or network", nil)
1717
return
1818
}
19-
openlogin = OpenLogin(OLInitParams(clientId: clientId, network: network))
19+
openlogin = Web3Auth(W3AInitParams(clientId: clientId, network: network))
2020
resolve(nil)
2121
}
2222

2323
@objc(login:withResolver:withRejecter:)
24-
func login(params: [String: String], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
25-
let provider = getOpenLoginProvider(params["provider"])
24+
func login(params: [String: Any], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
25+
let provider = getWeb3AuthProvider(params["provider"] as? String)
26+
let relogin = params["relogin"] as? Bool
27+
let dappShare = params["dappShare"] as? String
28+
let redirectUrl = params["redirectUrl"] as? String
29+
let appState = params["appState"] as? String
30+
let login_hint = (params["extraLoginOptions"] as? [String: Any?])?["login_hint"] as? String
2631
if let ol = openlogin {
27-
ol.login(OLLoginParams(provider: provider)) {
32+
ol.login(W3ALoginParams(
33+
loginProvider: provider,
34+
relogin: relogin,
35+
dappShare: dappShare,
36+
extraLoginOptions: login_hint == nil ? nil : ExtraLoginOptions(display: nil, prompt: nil, max_age: nil, ui_locales: nil, id_token_hint: nil, login_hint: login_hint, acr_values: nil, scope: nil, audience: nil, connection: nil, domain: nil, client_id: nil, redirect_uri: nil, leeway: nil, verifierIdField: nil, isVerifierIdCaseSensitive: nil),
37+
redirectUrl: redirectUrl,
38+
appState: appState
39+
)) {
2840
switch $0 {
2941
case .success(let result):
3042
let m: [String: Any] = [
3143
"privKey": result.privKey,
44+
"ed25519PrivKey": result.ed25519PrivKey,
3245
"userInfo": [
3346
"name": result.userInfo.name,
3447
"profileImage": result.userInfo.profileImage,
@@ -56,13 +69,13 @@ class OpenloginReactNativeSdk: NSObject {
5669

5770
}
5871

59-
func getOpenLoginProvider(_ str: String?) -> OpenLoginProvider?{
72+
func getWeb3AuthProvider(_ str: String?) -> Web3AuthProvider?{
6073
guard
6174
let unwrappedStr = str
6275
else {
6376
return nil
6477
}
65-
let mapping: [String: OpenLoginProvider] = [
78+
let mapping: [String: Web3AuthProvider] = [
6679
"google": .GOOGLE,
6780
"facebook": .FACEBOOK,
6881
"reddit": .REDDIT,

openlogin-react-native-sdk.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@ Pod::Spec.new do |s|
1616
s.source_files = "ios/**/*.{h,m,mm,swift}"
1717

1818
s.dependency "React-Core"
19-
s.dependency "OpenLogin", '1.0.0'
19+
s.dependency "Web3Auth", '3.1.0'
2020
end

0 commit comments

Comments
 (0)