Skip to content
Snippets Groups Projects
Commit ce49c2e4 authored by Kamal Bramwell's avatar Kamal Bramwell
Browse files

Merge branch 'FE-957_stuck_verifying' into internal_build

parents b08d4625 54323da4
No related branches found
No related tags found
2 merge requests!84Version 2.92 build 629,!77v2.9 b627
...@@ -21,6 +21,9 @@ interface RequestsDao { ...@@ -21,6 +21,9 @@ interface RequestsDao {
@Query("SELECT * FROM Requests WHERE requestId IN (SELECT userId FROM Contacts)") @Query("SELECT * FROM Requests WHERE requestId IN (SELECT userId FROM Contacts)")
fun getContactRequests(): Flow<List<RequestData>> fun getContactRequests(): Flow<List<RequestData>>
@Query("SELECT * FROM Requests WHERE requestId IN (SELECT userId FROM Contacts)")
fun getContactRequestsOnce(): List<RequestData>
@Query("SELECT * FROM Requests WHERE requestId IN (SELECT groupId FROM Groups)") @Query("SELECT * FROM Requests WHERE requestId IN (SELECT groupId FROM Groups)")
fun getGroupInvitations(): Flow<List<RequestData>> fun getGroupInvitations(): Flow<List<RequestData>>
......
...@@ -8,6 +8,7 @@ import kotlinx.coroutines.flow.Flow ...@@ -8,6 +8,7 @@ import kotlinx.coroutines.flow.Flow
interface LocalRequestsDataSource { interface LocalRequestsDataSource {
val unreadCount: Flow<Int> val unreadCount: Flow<Int>
suspend fun getContactRequestsOnce(): List<RequestData>
suspend fun getContactRequests(): Flow<List<RequestData>> suspend fun getContactRequests(): Flow<List<RequestData>>
suspend fun getGroupInvitations(): Flow<List<RequestData>> suspend fun getGroupInvitations(): Flow<List<RequestData>>
suspend fun getRequest(requestId: ByteArray): RequestData? suspend fun getRequest(requestId: ByteArray): RequestData?
......
...@@ -52,6 +52,9 @@ class RequestsDatabase @Inject constructor( ...@@ -52,6 +52,9 @@ class RequestsDatabase @Inject constructor(
} }
} }
override suspend fun getContactRequestsOnce(): List<RequestData> =
requestsDao.getContactRequestsOnce()
override suspend fun getContactRequests(): Flow<List<RequestData>> = override suspend fun getContactRequests(): Flow<List<RequestData>> =
requestsDao.getContactRequests() requestsDao.getContactRequests()
.stateIn(scope, SharingStarted.Eagerly, listOf()) .stateIn(scope, SharingStarted.Eagerly, listOf())
......
...@@ -10,6 +10,8 @@ import io.xxlabs.messenger.requests.bindings.VerificationResult ...@@ -10,6 +10,8 @@ import io.xxlabs.messenger.requests.bindings.VerificationResult
import io.xxlabs.messenger.requests.data.LocalRequestsDataSource import io.xxlabs.messenger.requests.data.LocalRequestsDataSource
import io.xxlabs.messenger.requests.data.RequestDataSource import io.xxlabs.messenger.requests.data.RequestDataSource
import io.xxlabs.messenger.requests.model.ContactRequest import io.xxlabs.messenger.requests.model.ContactRequest
import io.xxlabs.messenger.support.appContext
import io.xxlabs.messenger.support.extensions.toast
import io.xxlabs.messenger.support.util.value import io.xxlabs.messenger.support.util.value
import kotlinx.coroutines.* import kotlinx.coroutines.*
import kotlinx.coroutines.flow.* import kotlinx.coroutines.flow.*
...@@ -121,8 +123,15 @@ class ContactRequestsRepository @Inject constructor( ...@@ -121,8 +123,15 @@ class ContactRequestsRepository @Inject constructor(
override fun failUnverifiedRequests() { override fun failUnverifiedRequests() {
scope.launch { scope.launch {
getRequests().take(1).collect { requests -> localDataSource.getContactRequestsOnce().let { requestDataList ->
requests.filter { requestDataList.mapNotNull { requestData ->
val contactData = daoRepository
.getContactByUserId(requestData.requestId)
.value()
contactData?.let {
ContactRequestData(it, requestData.unread)
}
}.filter {
it.requestStatus == VERIFYING it.requestStatus == VERIFYING
}.forEach { }.forEach {
update(it, VERIFICATION_FAIL) update(it, VERIFICATION_FAIL)
......
...@@ -27,7 +27,6 @@ import io.xxlabs.messenger.repository.client.ClientRepository ...@@ -27,7 +27,6 @@ import io.xxlabs.messenger.repository.client.ClientRepository
import io.xxlabs.messenger.requests.data.contact.ContactRequestData import io.xxlabs.messenger.requests.data.contact.ContactRequestData
import io.xxlabs.messenger.requests.data.contact.ContactRequestsRepository import io.xxlabs.messenger.requests.data.contact.ContactRequestsRepository
import io.xxlabs.messenger.requests.data.contact.RequestMigrator import io.xxlabs.messenger.requests.data.contact.RequestMigrator
import io.xxlabs.messenger.requests.data.group.InvitationMigrator
import io.xxlabs.messenger.support.extensions.combineWith import io.xxlabs.messenger.support.extensions.combineWith
import io.xxlabs.messenger.support.extensions.toBase64String import io.xxlabs.messenger.support.extensions.toBase64String
import io.xxlabs.messenger.support.isMockVersion import io.xxlabs.messenger.support.isMockVersion
...@@ -77,6 +76,11 @@ class ContactsViewModel @Inject constructor( ...@@ -77,6 +76,11 @@ class ContactsViewModel @Inject constructor(
init { init {
Timber.v("isAuthCallbackRegistered: ${isAuthCallbackRegistered()}") Timber.v("isAuthCallbackRegistered: ${isAuthCallbackRegistered()}")
migrateOldRequests() migrateOldRequests()
// The app has presumably had a fresh launch.
// Fail requests that haven't verified yet, so they may be retried manually by user.
failVerifyingRequests()
if (BuildConfig.DEBUG) listContacts() if (BuildConfig.DEBUG) listContacts()
} }
...@@ -97,10 +101,6 @@ class ContactsViewModel @Inject constructor( ...@@ -97,10 +101,6 @@ class ContactsViewModel @Inject constructor(
fun registerAuthCallback() { fun registerAuthCallback() {
Timber.v("[MAIN] Registering auth callback...") Timber.v("[MAIN] Registering auth callback...")
if (!isAuthCallbackRegistered()) { if (!isAuthCallbackRegistered()) {
// The app has presumably had a fresh launch.
// Fail requests that haven't verified yet, so they may be retried manually by user.
failVerifyingRequests()
Timber.v("[MAIN] nor initialized, initializing network callback...") Timber.v("[MAIN] nor initialized, initializing network callback...")
subscriptions.add( subscriptions.add(
repo.registerAuthCallback( repo.registerAuthCallback(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment