diff --git a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt index 7028255f8..47d50d8b5 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt @@ -48,6 +48,7 @@ import io.reactivex.SingleObserver import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers +import kotlinx.coroutines.Job import kotlinx.coroutines.launch import javax.inject.Inject @@ -60,6 +61,7 @@ class MainActivity : BaseActivity(), ActionBarProvider { @Inject lateinit var userManager: UserManager + private var job: Job? = null @Inject lateinit var userGroupsOrCirclesRepository: UserGroupsCirclesRepository @@ -92,6 +94,11 @@ class MainActivity : BaseActivity(), ActionBarProvider { handleIntent(intent) + job = lifecycleScope.launch { + val initialized = userGroupsOrCirclesRepository.initialize() + Log.d("MainActivity", "$initialized") + } + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) } @@ -144,6 +151,11 @@ class MainActivity : BaseActivity(), ActionBarProvider { super.onStop() } + override fun onDestroy() { + super.onDestroy() + job?.cancel() + } + private fun openConversationList() { val intent = Intent(this, ConversationsListActivity::class.java) intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) @@ -152,10 +164,7 @@ class MainActivity : BaseActivity(), ActionBarProvider { } private fun handleActionFromContact(intent: Intent) { - lifecycleScope.launch { - val initialized = userGroupsOrCirclesRepository.initialize() - Log.d("MainActivity", "$initialized") - } + if (intent.action == Intent.ACTION_VIEW && intent.data != null) { val cursor = contentResolver.query(intent.data!!, null, null, null, null) diff --git a/app/src/main/java/com/nextcloud/talk/dagger/modules/RepositoryModule.kt b/app/src/main/java/com/nextcloud/talk/dagger/modules/RepositoryModule.kt index e9486ca53..2f0528177 100644 --- a/app/src/main/java/com/nextcloud/talk/dagger/modules/RepositoryModule.kt +++ b/app/src/main/java/com/nextcloud/talk/dagger/modules/RepositoryModule.kt @@ -193,8 +193,8 @@ class RepositoryModule { fun provideUserGroupsCirclesRepository( userCirclesOrGroupsDao: UserCirclesOrGroupsDao, ncApiCoroutines: NcApiCoroutines, - userProvider: CurrentUserProviderNew + currentUserProvider: CurrentUserProviderNew ): UserGroupsCirclesRepository { - return UserGroupsCirclesRepository(userCirclesOrGroupsDao, ncApiCoroutines, userProvider) + return UserGroupsCirclesRepository(userCirclesOrGroupsDao, ncApiCoroutines, currentUserProvider) } } diff --git a/app/src/main/java/com/nextcloud/talk/data/database/dao/UserCirclesOrGroupsDao.kt b/app/src/main/java/com/nextcloud/talk/data/database/dao/UserCirclesOrGroupsDao.kt index 1122f62de..9ef26f110 100644 --- a/app/src/main/java/com/nextcloud/talk/data/database/dao/UserCirclesOrGroupsDao.kt +++ b/app/src/main/java/com/nextcloud/talk/data/database/dao/UserCirclesOrGroupsDao.kt @@ -18,7 +18,7 @@ import com.nextcloud.talk.data.database.model.UserGroupsEntity interface UserCirclesOrGroupsDao { @Query("SELECT groups FROM user_groups") - fun getUserGroups(): List + fun getUserGroups():List @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun insertUserGroups(groups:List) @@ -29,4 +29,10 @@ interface UserCirclesOrGroupsDao { @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun insertUserCircles(circles: List) + @Query("DELETE FROM user_groups") + suspend fun deleteAllUserGroups() + + @Query("DELETE FROM user_circles") + suspend fun deleteAllUserCircles() + } diff --git a/app/src/main/java/com/nextcloud/talk/data/database/model/UserGroupsCirclesRepository.kt b/app/src/main/java/com/nextcloud/talk/data/database/model/UserGroupsCirclesRepository.kt index e3ee96c2c..85485158a 100644 --- a/app/src/main/java/com/nextcloud/talk/data/database/model/UserGroupsCirclesRepository.kt +++ b/app/src/main/java/com/nextcloud/talk/data/database/model/UserGroupsCirclesRepository.kt @@ -30,6 +30,7 @@ class UserGroupsCirclesRepository @Inject constructor( coroutineScope { launch { + userCirclesOrGroupsDao.deleteAllUserGroups() val response = ncApiCoroutines.getUserGroups( credentials, ApiUtils.getUrlForUserGroups( @@ -38,7 +39,7 @@ class UserGroupsCirclesRepository @Inject constructor( ) ) val groups = response.ocs?.data?.groups?: emptyList() - + Log.d("UserDataRepo","$groups") userCirclesOrGroupsDao.insertUserGroups( groups.map{ UserGroupsEntity(it) @@ -47,12 +48,13 @@ class UserGroupsCirclesRepository @Inject constructor( } launch { - + userCirclesOrGroupsDao.deleteAllUserCircles() val response = ncApiCoroutines.getUserCircles( credentials, ApiUtils.getUrlForUserCircles(user.baseUrl!!) ) val circles = response.ocs?.data?.map { it.displayName!! }?: emptyList() + Log.d("UserDataRepo","$circles") userCirclesOrGroupsDao.insertUserCircles( circles.map{ UserCirclesEntity(it) @@ -66,13 +68,14 @@ class UserGroupsCirclesRepository @Inject constructor( Log.e("UserDataRepo", "Error initializing user data", e) return@withContext false } + } - fun getUserGroups(): List { + fun getUserGroups(): List { return userCirclesOrGroupsDao.getUserGroups() } - fun getUserCircles(): List { + fun getUserCircles(): List{ return userCirclesOrGroupsDao.getUserCircles() } }