From 17d5aff9ddcd0a82ec647ae0bd30e75e88f79868 Mon Sep 17 00:00:00 2001 From: freebeartogoodhome <801dan@protonmail.com> Date: Fri, 22 May 2026 23:04:33 -0600 Subject: [PATCH 1/2] fix Android login issues --- android/app/src/main/AndroidManifest.xml | 6 ++++++ .../src/main/kotlin/org/lichess/mobileV2/MainActivity.kt | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 4b528f8c0..68605c2c6 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -164,5 +164,11 @@ + + + + + + diff --git a/android/app/src/main/kotlin/org/lichess/mobileV2/MainActivity.kt b/android/app/src/main/kotlin/org/lichess/mobileV2/MainActivity.kt index d14dc4ac7..c5dee5a8d 100644 --- a/android/app/src/main/kotlin/org/lichess/mobileV2/MainActivity.kt +++ b/android/app/src/main/kotlin/org/lichess/mobileV2/MainActivity.kt @@ -20,6 +20,12 @@ class MainActivity: FlutterActivity() { super.onCreate(savedInstanceState) } +override fun onNewIntent(intent: android.content.Intent) { + super.onNewIntent(intent) + // Pass the new intent carrying the OAuth token back into the activity context + setIntent(intent) + } + override fun configureFlutterEngine(flutterEngine: FlutterEngine) { super.configureFlutterEngine(flutterEngine) MethodChannel(flutterEngine.dartExecutor.binaryMessenger, GESTURES_CHANNEL).setMethodCallHandler { From 6135f5e9a94f45d9311f3c2a83aba2da92cdeff9 Mon Sep 17 00:00:00 2001 From: Vincent Velociter Date: Tue, 26 May 2026 12:05:52 +0200 Subject: [PATCH 2/2] Add explanations about OAuth redirect handling --- android/app/src/main/AndroidManifest.xml | 14 ++++++++------ .../kotlin/org/lichess/mobileV2/MainActivity.kt | 11 ++++++++--- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 68605c2c6..6625fb711 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -154,17 +154,19 @@ android:name="flutterEmbedding" android:value="2" /> - + + - + diff --git a/android/app/src/main/kotlin/org/lichess/mobileV2/MainActivity.kt b/android/app/src/main/kotlin/org/lichess/mobileV2/MainActivity.kt index c5dee5a8d..3c2487660 100644 --- a/android/app/src/main/kotlin/org/lichess/mobileV2/MainActivity.kt +++ b/android/app/src/main/kotlin/org/lichess/mobileV2/MainActivity.kt @@ -2,6 +2,7 @@ package org.lichess.mobileV2 import android.app.ActivityManager import android.content.Context +import android.content.Intent import android.graphics.Rect import android.os.Bundle import android.util.Log @@ -20,10 +21,14 @@ class MainActivity: FlutterActivity() { super.onCreate(savedInstanceState) } -override fun onNewIntent(intent: android.content.Intent) { - super.onNewIntent(intent) - // Pass the new intent carrying the OAuth token back into the activity context + // The OAuth redirect (org.lichess.mobile://login-callback) is delivered here, not in onCreate, + // because OAuthCallbackActivity forwards it to this already-running singleTop instance. Flutter's + // default handling leaves getIntent() pointing at the stale launch intent, so app_links would read + // the wrong URI and the login flow would never receive the callback. setIntent() updates the + // activity's current intent to the one carrying the OAuth code so app_links surfaces it correctly. + override fun onNewIntent(intent: Intent) { setIntent(intent) + super.onNewIntent(intent) } override fun configureFlutterEngine(flutterEngine: FlutterEngine) {