Skip to content

Commit 7005be4

Browse files
authored
Push: Unregister firebase id if previously registered elsewhere (#2954)
1 parent 36f9be6 commit 7005be4

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

play-services-basement/src/main/java/org/microg/gms/gcm/GcmConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ public final class GcmConstants {
8787

8888
public static final String ERROR_SERVICE_NOT_AVAILABLE = "SERVICE_NOT_AVAILABLE";
8989

90+
public static final String ERROR_INVALID_FID = "Invalid argument for the given fid";
91+
9092
public static final String INSTANCE_ID_SCOPE_GCM = "GCM";
9193

9294
public static final String GCMID_INSTANCE_ID = "google.com/iid";

play-services-core/src/main/kotlin/org/microg/gms/gcm/PushRegisterService.kt

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,21 @@ private suspend fun ensureAppRegistrationAllowed(context: Context, database: Gcm
7878
}
7979

8080
suspend fun completeRegisterRequest(context: Context, database: GcmDatabase, request: RegisterRequest, requestId: String? = null): Bundle = suspendCoroutine { continuation ->
81-
PushRegisterManager.completeRegisterRequest(context, database, requestId, request) { continuation.resume(it) }
81+
PushRegisterManager.completeRegisterRequest(context, database, requestId, request) {
82+
val errorMsg = it.getString(EXTRA_ERROR)
83+
Log.w(TAG, "completeRegisterRequest error: $errorMsg")
84+
if (errorMsg == PushRegisterManager.attachRequestId(ERROR_INVALID_FID, requestId) && !request.delete) {
85+
Log.d(TAG, "completeRegisterRequest register error, You need to call delete first before you can re-register")
86+
request.delete = true
87+
request.response
88+
request.delete = false
89+
PushRegisterManager.completeRegisterRequest(context, database, requestId, request) { result ->
90+
continuation.resume(result)
91+
}
92+
} else {
93+
continuation.resume(it)
94+
}
95+
}
8296
}
8397

8498
private val Intent.requestId: String?

0 commit comments

Comments
 (0)