Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions FronteggRN.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ Pod::Spec.new do |s|
# See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.
if respond_to?(:install_modules_dependencies, true)
install_modules_dependencies(s)
s.dependency "FronteggSwift", "1.2.34"
s.dependency "FronteggSwift", "1.2.75"
else
s.dependency "React-Core"
s.dependency "FronteggSwift", "1.2.34"
s.dependency "FronteggSwift", "1.2.75"

# Don't install the dependencies when we run `pod install` in the old architecture.
if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
Expand Down
9 changes: 6 additions & 3 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,13 @@ android {
}

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}

kotlinOptions {
jvmTarget = "11"
}
}

repositories {
Expand All @@ -77,7 +80,7 @@ dependencies {
implementation "androidx.browser:browser:1.8.0"
implementation 'io.reactivex.rxjava3:rxkotlin:3.0.1'
implementation 'com.google.code.gson:gson:2.10.1'
implementation 'com.frontegg.sdk:android:1.2.33'
implementation 'com.frontegg.sdk:android:1.3.16'
}

if (isNewArchitectureEnabled()) {
Expand Down
74 changes: 33 additions & 41 deletions android/src/main/java/com/frontegg/reactnative/FronteggRNModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ import com.facebook.react.bridge.ReactMethod
import com.facebook.react.bridge.WritableMap
import com.facebook.react.common.LifecycleState
import com.facebook.react.modules.core.DeviceEventManagerModule
import com.frontegg.android.FronteggApp
import com.frontegg.android.FronteggAuth
import com.frontegg.android.fronteggAuth
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.disposables.Disposable

Expand All @@ -20,23 +19,16 @@ class FronteggRNModule(val reactContext: ReactApplicationContext) :
ReactContextBaseJavaModule(reactContext) {
private val fronteggConstants: FronteggConstants
private var disposable: Disposable? = null

private val auth get() = reactContext.applicationContext.fronteggAuth

override fun getName(): String {
return NAME
}

init {
fronteggConstants = reactContext.fronteggConstants



FronteggApp.init(
fronteggConstants.baseUrl,
fronteggConstants.clientId,
reactContext.applicationContext,
applicationId = fronteggConstants.applicationId,
useAssetsLinks = fronteggConstants.useAssetsLinks,
useChromeCustomTabs = fronteggConstants.useChromeCustomTabs,
)
// SDK 1.3+ auto-initializes from BuildConfig when first accessing context.fronteggAuth
}

private fun sendEvent(
Expand All @@ -58,14 +50,14 @@ class FronteggRNModule(val reactContext: ReactApplicationContext) :
this.disposable!!.dispose()
}
this.disposable = Observable.mergeArray(
FronteggAuth.instance.accessToken.observable,
FronteggAuth.instance.refreshToken.observable,
FronteggAuth.instance.refreshingToken.observable,
FronteggAuth.instance.user.observable,
FronteggAuth.instance.isAuthenticated.observable,
FronteggAuth.instance.isLoading.observable,
FronteggAuth.instance.initializing.observable,
FronteggAuth.instance.showLoader.observable,
auth.accessToken.observable,
auth.refreshToken.observable,
auth.refreshingToken.observable,
auth.user.observable,
auth.isAuthenticated.observable,
auth.isLoading.observable,
auth.initializing.observable,
auth.showLoader.observable,
).subscribe {
notifyChanges()
}
Expand All @@ -85,14 +77,14 @@ class FronteggRNModule(val reactContext: ReactApplicationContext) :
return
}
handler.removeCallbacks(eventRunnable)
val accessToken = FronteggAuth.instance.accessToken.value
val refreshToken = FronteggAuth.instance.refreshToken.value
val refreshingToken = FronteggAuth.instance.refreshingToken.value
val user = FronteggAuth.instance.user.value
val isAuthenticated = FronteggAuth.instance.isAuthenticated.value
val isLoading = FronteggAuth.instance.isLoading.value
val initializing = FronteggAuth.instance.initializing.value
val showLoader = FronteggAuth.instance.showLoader.value
val accessToken = auth.accessToken.value
val refreshToken = auth.refreshToken.value
val refreshingToken = auth.refreshingToken.value
val user = auth.user.value
val isAuthenticated = auth.isAuthenticated.value
val isLoading = auth.isLoading.value
val initializing = auth.initializing.value
val showLoader = auth.showLoader.value

val params = Arguments.createMap().apply {

Expand All @@ -112,7 +104,7 @@ class FronteggRNModule(val reactContext: ReactApplicationContext) :

@ReactMethod
fun logout() {
FronteggAuth.instance.logout()
auth.logout()
}

@ReactMethod
Expand All @@ -128,37 +120,37 @@ class FronteggRNModule(val reactContext: ReactApplicationContext) :
@ReactMethod
fun login(loginHint: String?, promise: Promise) {
val activity = currentActivity
FronteggAuth.instance.login(activity!!, loginHint) {
auth.login(activity!!, loginHint) {
promise.resolve("")
}
}

@ReactMethod
fun switchTenant(tenantId: String, promise: Promise) {
FronteggAuth.instance.switchTenant(tenantId) {
auth.switchTenant(tenantId) {
promise.resolve(tenantId)
}
}

@ReactMethod
fun directLoginAction(type: String, data: String, ephemeralSession: Boolean, promise: Promise) {
val activity = currentActivity
FronteggAuth.instance.directLoginAction(activity!!, type, data)
auth.directLoginAction(activity!!, type, data)
promise.resolve(true)
}

@ReactMethod
fun refreshToken(promise: Promise) {
FronteggAuth.instance.refreshTokenIfNeeded()
auth.refreshTokenIfNeeded()
promise.resolve("")
}

@ReactMethod
fun loginWithPasskeys(promise: Promise) {
val activity = currentActivity
FronteggAuth.instance.loginWithPasskeys(activity!!) {
if (it != null) {
promise.reject(it)
auth.loginWithPasskeys(activity!!) { error ->
if (error != null) {
promise.reject(error)
} else {
promise.resolve("")
}
Expand All @@ -168,7 +160,7 @@ class FronteggRNModule(val reactContext: ReactApplicationContext) :
@ReactMethod
fun requestAuthorize(refreshToken: String, deviceTokenCookie: String?, promise: Promise) {
try {
FronteggAuth.instance.requestAuthorize(refreshToken, deviceTokenCookie) { result ->
auth.requestAuthorize(refreshToken, deviceTokenCookie) { result ->
result.fold(
onSuccess = { user ->
promise.resolve(user.toReadableMap())
Expand All @@ -188,9 +180,9 @@ class FronteggRNModule(val reactContext: ReactApplicationContext) :
@ReactMethod
fun registerPasskeys(promise: Promise) {
val activity = currentActivity
FronteggAuth.instance.registerPasskeys(activity!!) {
if (it != null) {
promise.reject(it)
auth.registerPasskeys(activity!!) { error ->
if (error != null) {
promise.reject(error)
} else {
promise.resolve("")
}
Expand Down
2 changes: 1 addition & 1 deletion example/android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ android {
dependencies {
// The version of react-native is set by the React Native Gradle Plugin
implementation("com.facebook.react:react-android")

implementation 'com.frontegg.sdk:android:1.3.16'
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}")
debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
exclude group:'com.squareup.okhttp3', module:'okhttp'
Expand Down
Loading
Loading