Skip to content
Merged
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 android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ android {
dependencies {
testImplementation 'org.jetbrains.kotlin:kotlin-test'
testImplementation 'org.mockito:mockito-core:5.0.0'
implementation 'id.passage.android:passage:2.0.1'
implementation 'id.passage.android:passage:2.0.2'
implementation 'com.google.code.gson:gson:2.10.1'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1'
implementation 'androidx.annotation:annotation:1.8.2'
implementation 'androidx.annotation:annotation:1.9.1'
}

testOptions {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -229,9 +229,15 @@ internal class PassageFlutter(private val activity: Activity, appId: String) {
// endregion

// region TOKEN METHODS
fun getAuthToken(result: MethodChannel.Result) {
val token = passage.tokenStore.authToken
result.success(token)
fun getValidAuthToken(result: MethodChannel.Result) {
CoroutineScope(Dispatchers.IO).launch {
try {
val newToken = passage.tokenStore.getValidAuthToken()
result.success(newToken)
} catch (e: Exception) {
result.error(PassageFlutterError.TOKEN_ERROR.name, e.message, e.toString())
}
}
}

fun isAuthTokenValid(call: MethodCall, result: MethodChannel.Result) {
Expand All @@ -243,8 +249,10 @@ internal class PassageFlutter(private val activity: Activity, appId: String) {
fun refreshAuthToken(result: MethodChannel.Result) {
CoroutineScope(Dispatchers.IO).launch {
try {
val newToken = passage.tokenStore.getValidAuthToken()
result.success(newToken)
val refreshToken = passage.tokenStore.refreshToken ?: ""
val authResult = passage.tokenStore.refreshAuthToken(refreshToken)
val jsonString = Gson().toJson(authResult)
result.success(jsonString)
} catch (e: Exception) {
result.error(PassageFlutterError.TOKEN_ERROR.name, e.message, e.toString())
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ class PassageFlutterPlugin: FlutterPlugin, MethodCallHandler, ActivityAware {
"getMagicLinkStatus" -> passageFlutter?.getMagicLinkStatus(call, result)
"authorizeWith" -> passageFlutter?.authorizeWith(call, result)
"finishSocialAuthentication" -> passageFlutter?.finishSocialAuthentication(call, result)
"getAuthToken" -> passageFlutter?.getAuthToken(result)
"getValidAuthToken" -> passageFlutter?.getValidAuthToken(result)
"isAuthTokenValid" -> passageFlutter?.isAuthTokenValid(call, result)
"refreshAuthToken" -> passageFlutter?.refreshAuthToken(result)
"getAppInfo" -> passageFlutter?.getAppInfo(result)
Expand Down
19 changes: 15 additions & 4 deletions ios/Classes/PassageFlutter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -273,9 +273,20 @@ internal class PassageFlutter {

// MARK: - Token Methods

internal func getAuthToken(result: @escaping FlutterResult) {
let token = passage.tokenStore.authToken
result(token)
internal func getValidAuthToken(result: @escaping FlutterResult) {
Task {
do {
let token = try await passage.tokenStore.getValidAuthToken()
result(token)
} catch {
let error = FlutterError(
code: PassageFlutterError.TOKEN_ERROR.rawValue,
message: error.localizedDescription,
details: nil
)
result(error)
}
}
}

internal func isAuthTokenValid(arguments: Any?, result: @escaping FlutterResult) {
Expand All @@ -292,7 +303,7 @@ internal class PassageFlutter {
Task {
do {
let authResult = try await passage.tokenStore.refreshTokens()
result(authResult.authToken)
result(convertToJsonString(codable: authResult))
} catch {
let error = FlutterError(
code: PassageFlutterError.TOKEN_ERROR.rawValue,
Expand Down
4 changes: 2 additions & 2 deletions ios/Classes/PassageFlutterPlugin.swift
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ public class PassageFlutterPlugin: NSObject, FlutterPlugin {
passageFlutter?.getMagicLinkStatus(arguments: call.arguments, result: result)
case "authorizeWith":
passageFlutter?.authorizeWith(arguments: call.arguments, result: result)
case "getAuthToken":
passageFlutter?.getAuthToken(result: result)
case "getValidAuthToken":
passageFlutter?.getValidAuthToken(result: result)
case "isAuthTokenValid":
passageFlutter?.isAuthTokenValid(arguments: call.arguments, result: result)
case "refreshAuthToken":
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -193,10 +193,10 @@ class MethodChannelPassageFlutter extends PassageFlutterPlatform {
// TOKEN METHODS

@override
Future<String> getAuthToken() async {
Future<String> getValidAuthToken() async {
try {
final authToken =
await methodChannel.invokeMethod<String>('getAuthToken');
await methodChannel.invokeMethod<String>('getValidAuthToken');
return authToken!;
} catch (e) {
throw PassageError.fromObject(object: e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ abstract class PassageFlutterPlatform extends PlatformInterface {

// TOKEN METHODS

Future<String> getAuthToken() {
Future<String> getValidAuthToken() {
throw UnimplementedError('getAuthToken() has not been implemented.');
}

Expand Down
2 changes: 1 addition & 1 deletion lib/passage_flutter_web.dart
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ class PassageFlutterWeb extends PassageFlutterPlatform {
// TOKEN METHODS

@override
Future<String> getAuthToken() async {
Future<String> getValidAuthToken() async {
try {
final resultPromise = passage.session.getAuthToken();
final String authToken = await js_util.promiseToFuture(resultPromise);
Expand Down
2 changes: 1 addition & 1 deletion lib/passage_token_store.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class PassageTokenStore {
/// A `Future<String?>` representing the current Passage user's auth token,
/// or `null` if no token has been stored.
Future<String> getValidAuthToken() {
return PassageFlutterPlatform.instance.getAuthToken();
return PassageFlutterPlatform.instance.getValidAuthToken();
}

/// Checks if the auth token for the currently authenticated user is valid.
Expand Down
Loading