Skip to content

Commit 367edeb

Browse files
authored
Merge pull request #89 from passageidentity/PSG-5785
PSG-5785: refreshAuthToken and getValidToken functions are updated
2 parents cfe9598 + 07c0980 commit 367edeb

9 files changed

+38
-19
lines changed

android/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ android {
3838
dependencies {
3939
testImplementation 'org.jetbrains.kotlin:kotlin-test'
4040
testImplementation 'org.mockito:mockito-core:5.0.0'
41-
implementation 'id.passage.android:passage:2.0.1'
41+
implementation 'id.passage.android:passage:2.0.2'
4242
implementation 'com.google.code.gson:gson:2.10.1'
4343
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1'
4444
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1'
45-
implementation 'androidx.annotation:annotation:1.8.2'
45+
implementation 'androidx.annotation:annotation:1.9.1'
4646
}
4747

4848
testOptions {

android/src/main/kotlin/id/passage/passage_flutter/PassageFlutter.kt

+13-5
Original file line numberDiff line numberDiff line change
@@ -229,9 +229,15 @@ internal class PassageFlutter(private val activity: Activity, appId: String) {
229229
// endregion
230230

231231
// region TOKEN METHODS
232-
fun getAuthToken(result: MethodChannel.Result) {
233-
val token = passage.tokenStore.authToken
234-
result.success(token)
232+
fun getValidAuthToken(result: MethodChannel.Result) {
233+
CoroutineScope(Dispatchers.IO).launch {
234+
try {
235+
val newToken = passage.tokenStore.getValidAuthToken()
236+
result.success(newToken)
237+
} catch (e: Exception) {
238+
result.error(PassageFlutterError.TOKEN_ERROR.name, e.message, e.toString())
239+
}
240+
}
235241
}
236242

237243
fun isAuthTokenValid(call: MethodCall, result: MethodChannel.Result) {
@@ -243,8 +249,10 @@ internal class PassageFlutter(private val activity: Activity, appId: String) {
243249
fun refreshAuthToken(result: MethodChannel.Result) {
244250
CoroutineScope(Dispatchers.IO).launch {
245251
try {
246-
val newToken = passage.tokenStore.getValidAuthToken()
247-
result.success(newToken)
252+
val refreshToken = passage.tokenStore.refreshToken ?: ""
253+
val authResult = passage.tokenStore.refreshAuthToken(refreshToken)
254+
val jsonString = Gson().toJson(authResult)
255+
result.success(jsonString)
248256
} catch (e: Exception) {
249257
result.error(PassageFlutterError.TOKEN_ERROR.name, e.message, e.toString())
250258
}

android/src/main/kotlin/id/passage/passage_flutter/PassageFlutterPlugin.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class PassageFlutterPlugin: FlutterPlugin, MethodCallHandler, ActivityAware {
5454
"getMagicLinkStatus" -> passageFlutter?.getMagicLinkStatus(call, result)
5555
"authorizeWith" -> passageFlutter?.authorizeWith(call, result)
5656
"finishSocialAuthentication" -> passageFlutter?.finishSocialAuthentication(call, result)
57-
"getAuthToken" -> passageFlutter?.getAuthToken(result)
57+
"getValidAuthToken" -> passageFlutter?.getValidAuthToken(result)
5858
"isAuthTokenValid" -> passageFlutter?.isAuthTokenValid(call, result)
5959
"refreshAuthToken" -> passageFlutter?.refreshAuthToken(result)
6060
"getAppInfo" -> passageFlutter?.getAppInfo(result)

ios/Classes/PassageFlutter.swift

+15-4
Original file line numberDiff line numberDiff line change
@@ -273,9 +273,20 @@ internal class PassageFlutter {
273273

274274
// MARK: - Token Methods
275275

276-
internal func getAuthToken(result: @escaping FlutterResult) {
277-
let token = passage.tokenStore.authToken
278-
result(token)
276+
internal func getValidAuthToken(result: @escaping FlutterResult) {
277+
Task {
278+
do {
279+
let token = try await passage.tokenStore.getValidAuthToken()
280+
result(token)
281+
} catch {
282+
let error = FlutterError(
283+
code: PassageFlutterError.TOKEN_ERROR.rawValue,
284+
message: error.localizedDescription,
285+
details: nil
286+
)
287+
result(error)
288+
}
289+
}
279290
}
280291

281292
internal func isAuthTokenValid(arguments: Any?, result: @escaping FlutterResult) {
@@ -292,7 +303,7 @@ internal class PassageFlutter {
292303
Task {
293304
do {
294305
let authResult = try await passage.tokenStore.refreshTokens()
295-
result(authResult.authToken)
306+
result(convertToJsonString(codable: authResult))
296307
} catch {
297308
let error = FlutterError(
298309
code: PassageFlutterError.TOKEN_ERROR.rawValue,

ios/Classes/PassageFlutterPlugin.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ public class PassageFlutterPlugin: NSObject, FlutterPlugin {
5151
passageFlutter?.getMagicLinkStatus(arguments: call.arguments, result: result)
5252
case "authorizeWith":
5353
passageFlutter?.authorizeWith(arguments: call.arguments, result: result)
54-
case "getAuthToken":
55-
passageFlutter?.getAuthToken(result: result)
54+
case "getValidAuthToken":
55+
passageFlutter?.getValidAuthToken(result: result)
5656
case "isAuthTokenValid":
5757
passageFlutter?.isAuthTokenValid(arguments: call.arguments, result: result)
5858
case "refreshAuthToken":

lib/passage_flutter_platform/passage_flutter_method_channel.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -193,10 +193,10 @@ class MethodChannelPassageFlutter extends PassageFlutterPlatform {
193193
// TOKEN METHODS
194194

195195
@override
196-
Future<String> getAuthToken() async {
196+
Future<String> getValidAuthToken() async {
197197
try {
198198
final authToken =
199-
await methodChannel.invokeMethod<String>('getAuthToken');
199+
await methodChannel.invokeMethod<String>('getValidAuthToken');
200200
return authToken!;
201201
} catch (e) {
202202
throw PassageError.fromObject(object: e);

lib/passage_flutter_platform/passage_flutter_platform_interface.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ abstract class PassageFlutterPlatform extends PlatformInterface {
105105

106106
// TOKEN METHODS
107107

108-
Future<String> getAuthToken() {
108+
Future<String> getValidAuthToken() {
109109
throw UnimplementedError('getAuthToken() has not been implemented.');
110110
}
111111

lib/passage_flutter_web.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ class PassageFlutterWeb extends PassageFlutterPlatform {
218218
// TOKEN METHODS
219219

220220
@override
221-
Future<String> getAuthToken() async {
221+
Future<String> getValidAuthToken() async {
222222
try {
223223
final resultPromise = passage.session.getAuthToken();
224224
final String authToken = await js_util.promiseToFuture(resultPromise);

lib/passage_token_store.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class PassageTokenStore {
1010
/// A `Future<String?>` representing the current Passage user's auth token,
1111
/// or `null` if no token has been stored.
1212
Future<String> getValidAuthToken() {
13-
return PassageFlutterPlatform.instance.getAuthToken();
13+
return PassageFlutterPlatform.instance.getValidAuthToken();
1414
}
1515

1616
/// Checks if the auth token for the currently authenticated user is valid.

0 commit comments

Comments
 (0)