Skip to content

Commit 02fe457

Browse files
committed
remove all user providers from repositories to avoid crashes.
-> try to keep repositories more stateless. user providers must not be injected in repositories! users should be fetched in viewModels (For now they are also sometimes fetched in activities). add old user provider as deprecated solution and rename it to CurrentUserProviderOld(Impl). Also: do not define api url in repositories. Should be passed into each method from outside. For further improvements: Use a shared view model to get users? 3 example crashes which should be avoided by these changes: 1) Exception java.lang.RuntimeException: at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:4418) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:4639) at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:112) at android.app.servertransaction.TransactionExecutor.executeNonLifecycleItem (TransactionExecutor.java:186) at android.app.servertransaction.TransactionExecutor.executeTransactionItems (TransactionExecutor.java:112) at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:84) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2881) at android.os.Handler.dispatchMessage (Handler.java:107) at android.os.Looper.loopOnce (Looper.java:249) at android.os.Looper.loop (Looper.java:337) at android.app.ActivityThread.main (ActivityThread.java:9593) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:593) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:936) Caused by com.nextcloud.talk.utils.NoSupportedApiException: at com.nextcloud.talk.utils.ApiUtils.getConversationApiVersion (ApiUtils.kt:127) at com.nextcloud.talk.openconversations.data.OpenConversationsRepositoryImpl.<init> (OpenConversationsRepositoryImpl.kt:23) at com.nextcloud.talk.dagger.modules.RepositoryModule.provideOpenConversationsRepository (RepositoryModule.kt:129) at com.nextcloud.talk.dagger.modules.RepositoryModule_ProvideOpenConversationsRepositoryFactory.provideOpenConversationsRepository (RepositoryModule_ProvideOpenConversationsRepositoryFactory.java:59) at com.nextcloud.talk.dagger.modules.RepositoryModule_ProvideOpenConversationsRepositoryFactory.get (RepositoryModule_ProvideOpenConversationsRepositoryFactory.java:47) at com.nextcloud.talk.dagger.modules.RepositoryModule_ProvideOpenConversationsRepositoryFactory.get (RepositoryModule_ProvideOpenConversationsRepositoryFactory.java:14) at com.nextcloud.talk.conversationlist.viewmodels.ConversationsListViewModel_Factory.get (ConversationsListViewModel_Factory.java:67) at com.nextcloud.talk.conversationlist.viewmodels.ConversationsListViewModel_Factory.get (ConversationsListViewModel_Factory.java:17) at com.nextcloud.talk.dagger.modules.ViewModelFactory.create (ViewModelModule.kt:46) at androidx.lifecycle.ViewModelProvider$Factory.create (ViewModelProvider.android.kt:148) at com.nextcloud.talk.dagger.modules.ViewModelFactory.create (ViewModelModule.kt:43) at androidx.lifecycle.ViewModelProvider$Factory.create (ViewModelProvider.android.kt:153) at com.nextcloud.talk.dagger.modules.ViewModelFactory.create (ViewModelModule.kt:43) at androidx.lifecycle.viewmodel.ViewModelProviderImpl_androidKt.createViewModel (ViewModelProviderImpl.android.kt:34) at androidx.lifecycle.viewmodel.ViewModelProviderImpl.getViewModel$lifecycle_viewmodel_release (ViewModelProviderImpl.kt:60) at androidx.lifecycle.viewmodel.ViewModelProviderImpl.getViewModel$lifecycle_viewmodel_release$default (ViewModelProviderImpl.kt:43) at androidx.lifecycle.ViewModelProvider.get (ViewModelProvider.android.kt:92) at androidx.lifecycle.ViewModelProvider.get (ViewModelProvider.android.kt:106) at com.nextcloud.talk.conversationlist.ConversationsListActivity.onCreate (ConversationsListActivity.kt:263) at android.app.Activity.performCreate (Activity.java:9217) at android.app.Activity.performCreate (Activity.java:9176) at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1538) at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:4400) 2) Exception java.lang.RuntimeException: at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:4710) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:4941) at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:222) at android.app.servertransaction.TransactionExecutor.executeNonLifecycleItem (TransactionExecutor.java:133) at android.app.servertransaction.TransactionExecutor.executeTransactionItems (TransactionExecutor.java:103) at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:80) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:3150) at android.os.Handler.dispatchMessage (Handler.java:110) at android.os.Looper.loopOnce (Looper.java:273) at android.os.Looper.loop (Looper.java:363) at android.app.ActivityThread.main (ActivityThread.java:10060) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:632) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:975) Caused by com.nextcloud.talk.utils.NoSupportedApiException: at com.nextcloud.talk.utils.ApiUtils.getConversationApiVersion (ApiUtils.kt:127) at com.nextcloud.talk.repositories.conversations.ConversationsRepositoryImpl.<init> (ConversationsRepositoryImpl.kt:35) at com.nextcloud.talk.dagger.modules.RepositoryModule.provideConversationsRepository (RepositoryModule.kt:81) at com.nextcloud.talk.dagger.modules.RepositoryModule_ProvideConversationsRepositoryFactory.provideConversationsRepository (RepositoryModule_ProvideConversationsRepositoryFactory.java:63) at com.nextcloud.talk.dagger.modules.RepositoryModule_ProvideConversationsRepositoryFactory.get (RepositoryModule_ProvideConversationsRepositoryFactory.java:51) at com.nextcloud.talk.dagger.modules.RepositoryModule_ProvideConversationsRepositoryFactory.get (RepositoryModule_ProvideConversationsRepositoryFactory.java:15) at com.nextcloud.talk.conversationinfo.viewmodel.ConversationInfoViewModel_Factory.get (ConversationInfoViewModel_Factory.java:42) at com.nextcloud.talk.conversationinfo.viewmodel.ConversationInfoViewModel_Factory.get (ConversationInfoViewModel_Factory.java:12) at com.nextcloud.talk.dagger.modules.ViewModelFactory.create (ViewModelModule.kt:46) at androidx.lifecycle.ViewModelProvider$Factory.create (ViewModelProvider.android.kt:148) at com.nextcloud.talk.dagger.modules.ViewModelFactory.create (ViewModelModule.kt:43) at androidx.lifecycle.ViewModelProvider$Factory.create (ViewModelProvider.android.kt:153) at com.nextcloud.talk.dagger.modules.ViewModelFactory.create (ViewModelModule.kt:43) at androidx.lifecycle.viewmodel.ViewModelProviderImpl_androidKt.createViewModel (ViewModelProviderImpl.android.kt:34) at androidx.lifecycle.viewmodel.ViewModelProviderImpl.getViewModel$lifecycle_viewmodel_release (ViewModelProviderImpl.kt:60) at androidx.lifecycle.viewmodel.ViewModelProviderImpl.getViewModel$lifecycle_viewmodel_release$default (ViewModelProviderImpl.kt:43) at androidx.lifecycle.ViewModelProvider.get (ViewModelProvider.android.kt:92) at androidx.lifecycle.ViewModelProvider.get (ViewModelProvider.android.kt:106) at com.nextcloud.talk.chat.ChatActivity.onCreate (ChatActivity.kt:517) at android.app.Activity.performCreate (Activity.java:9519) at android.app.Activity.performCreate (Activity.java:9488) at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1524) at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:4692) 3) Exception java.lang.RuntimeException: at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:4169) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:4325) at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:101) at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2574) at android.os.Handler.dispatchMessage (Handler.java:106) at android.os.Looper.loopOnce (Looper.java:226) at android.os.Looper.loop (Looper.java:313) at android.app.ActivityThread.main (ActivityThread.java:8762) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:604) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1067) Caused by java.lang.NullPointerException: at com.nextcloud.talk.chat.data.network.OfflineFirstChatRepository.<init> (OfflineFirstChatRepository.kt:63) at com.nextcloud.talk.dagger.modules.RepositoryModule.provideOfflineFirstChatRepository (RepositoryModule.kt:160) at com.nextcloud.talk.dagger.modules.RepositoryModule_ProvideOfflineFirstChatRepositoryFactory.provideOfflineFirstChatRepository (RepositoryModule_ProvideOfflineFirstChatRepositoryFactory.java:78) at com.nextcloud.talk.application.DaggerNextcloudTalkApplicationComponent$NextcloudTalkApplicationComponentImpl.chatMessageRepository (DaggerNextcloudTalkApplicationComponent.java:761) at com.nextcloud.talk.application.DaggerNextcloudTalkApplicationComponent$NextcloudTalkApplicationComponentImpl.chatViewModel (DaggerNextcloudTalkApplicationComponent.java:789) at com.nextcloud.talk.application.DaggerNextcloudTalkApplicationComponent$NextcloudTalkApplicationComponentImpl.injectConversationsListActivity (DaggerNextcloudTalkApplicationComponent.java:2160) at com.nextcloud.talk.application.DaggerNextcloudTalkApplicationComponent$NextcloudTalkApplicationComponentImpl.inject (DaggerNextcloudTalkApplicationComponent.java:1284) at com.nextcloud.talk.conversationlist.ConversationsListActivity.onCreate (ConversationsListActivity.kt:260) at android.app.Activity.performCreate (Activity.java:8591) at android.app.Activity.performCreate (Activity.java:8570) at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1384) at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:4150) Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
1 parent 0d2d987 commit 02fe457

103 files changed

Lines changed: 1219 additions & 732 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ dependencies {
201201
implementation fileTree(include: ['*'], dir: 'libs')
202202

203203
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0"
204+
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-rx2:$coroutines_version"
204205

205206
implementation 'androidx.appcompat:appcompat:1.7.1'
206207
implementation 'com.google.android.material:material:1.13.0'

app/src/androidTest/java/com/nextcloud/talk/ui/LoginIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ public void login() throws InterruptedException {
125125

126126
activityScenario.onActivity(activity -> {
127127
assertEquals(loginName,
128-
Objects.requireNonNull(activity.currentUserProvider.getCurrentUser().blockingGet()).getUserId());
128+
Objects.requireNonNull(activity.currentUserProviderOld.getCurrentUser().blockingGet()).getUserId());
129129
});
130130
}
131131
}

app/src/main/java/com/nextcloud/talk/account/AccountVerificationActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ class AccountVerificationActivity : BaseActivity() {
416416
cookieManager.cookieStore.removeAll()
417417

418418
if (userManager.users.blockingGet().size == 1 ||
419-
currentUserProvider.currentUser.blockingGet().id != internalAccountId
419+
currentUserProviderOld.currentUser.blockingGet().id != internalAccountId
420420
) {
421421
val userToSetAsActive = userManager.getUserWithId(internalAccountId).blockingGet()
422422
Log.d(TAG, "userToSetAsActive: " + userToSetAsActive.username)

app/src/main/java/com/nextcloud/talk/activities/BaseActivity.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ import com.nextcloud.talk.utils.FileViewerUtils
4242
import com.nextcloud.talk.utils.UriUtils
4343
import com.nextcloud.talk.utils.adjustUIForAPILevel35
4444
import com.nextcloud.talk.utils.bundle.BundleKeys
45-
import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew
45+
import com.nextcloud.talk.utils.database.user.CurrentUserProvider
46+
import com.nextcloud.talk.utils.database.user.CurrentUserProviderOld
4647
import com.nextcloud.talk.utils.preferences.AppPreferences
4748
import com.nextcloud.talk.utils.ssl.TrustManager
4849
import org.greenrobot.eventbus.EventBus
@@ -74,8 +75,12 @@ open class BaseActivity : AppCompatActivity() {
7475
@Inject
7576
lateinit var context: Context
7677

78+
@Deprecated("Use CurrentUserProvider instead")
7779
@Inject
78-
lateinit var currentUserProvider: CurrentUserProviderNew
80+
lateinit var currentUserProviderOld: CurrentUserProviderOld
81+
82+
@Inject
83+
lateinit var currentUserProvider: CurrentUserProvider
7984

8085
open val appBarLayoutType: AppBarLayoutType
8186
get() = AppBarLayoutType.TOOLBAR
@@ -254,7 +259,7 @@ open class BaseActivity : AppCompatActivity() {
254259
}
255260

256261
override fun startActivity(intent: Intent) {
257-
val user = currentUserProvider.currentUser.blockingGet()
262+
val user = currentUserProviderOld.currentUser.blockingGet()
258263
if (intent.data != null && TextUtils.equals(intent.action, Intent.ACTION_VIEW)) {
259264
val uri = intent.data.toString()
260265
if (user?.baseUrl != null && uri.startsWith(user.baseUrl!!)) {

app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ class CallActivity : CallBaseActivity() {
434434

435435
hideNavigationIfNoPipAvailable()
436436
processExtras(intent.extras!!)
437-
conversationUser = currentUserProvider.currentUser.blockingGet()
437+
conversationUser = currentUserProviderOld.currentUser.blockingGet()
438438

439439
credentials = ApiUtils.getCredentials(conversationUser!!.username, conversationUser!!.token)
440440
if (TextUtils.isEmpty(baseUrl)) {

app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ class MainActivity :
166166
val user = userId.substringBeforeLast("@")
167167
val baseUrl = userId.substringAfterLast("@")
168168

169-
if (currentUserProvider.currentUser.blockingGet()?.baseUrl!!.endsWith(baseUrl) == true) {
169+
if (currentUserProviderOld.currentUser.blockingGet()?.baseUrl!!.endsWith(baseUrl) == true) {
170170
startConversation(user)
171171
} else {
172172
Snackbar.make(
@@ -183,7 +183,7 @@ class MainActivity :
183183
private fun startConversation(userId: String) {
184184
val roomType = "1"
185185

186-
val currentUser = currentUserProvider.currentUser.blockingGet()
186+
val currentUser = currentUserProviderOld.currentUser.blockingGet()
187187

188188
val apiVersion = ApiUtils.getConversationApiVersion(currentUser, intArrayOf(ApiUtils.API_V4, 1))
189189
val credentials = ApiUtils.getCredentials(currentUser?.username, currentUser?.token)

app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingTextMessageViewHolder.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import com.nextcloud.talk.utils.ChatMessageUtils
3636
import com.nextcloud.talk.utils.DateUtils
3737
import com.nextcloud.talk.utils.SpreedFeatures
3838
import com.nextcloud.talk.utils.TextMatchers
39-
import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew
39+
import com.nextcloud.talk.utils.database.user.CurrentUserProviderOld
4040
import com.nextcloud.talk.utils.message.MessageCheckboxUtils.addCheckboxLine
4141
import com.nextcloud.talk.utils.message.MessageCheckboxUtils.addPlainTextLine
4242
import com.nextcloud.talk.utils.message.MessageCheckboxUtils.matchCheckbox
@@ -75,7 +75,7 @@ class IncomingTextMessageViewHolder(itemView: View, payload: Any) :
7575
lateinit var dateUtils: DateUtils
7676

7777
@Inject
78-
lateinit var currentUserProvider: CurrentUserProviderNew
78+
lateinit var currentUserProvider: CurrentUserProviderOld
7979

8080
lateinit var commonMessageInterface: CommonMessageInterface
8181

app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingTextMessageViewHolder.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ import com.nextcloud.talk.utils.CapabilitiesUtil.hasSpreedFeatureCapability
4141
import com.nextcloud.talk.utils.DateUtils
4242
import com.nextcloud.talk.utils.SpreedFeatures
4343
import com.nextcloud.talk.utils.TextMatchers
44-
import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew
44+
import com.nextcloud.talk.utils.database.user.CurrentUserProviderOld
4545
import com.nextcloud.talk.utils.message.MessageCheckboxUtils.addCheckboxLine
4646
import com.nextcloud.talk.utils.message.MessageCheckboxUtils.addPlainTextLine
4747
import com.nextcloud.talk.utils.message.MessageCheckboxUtils.matchCheckbox
@@ -86,7 +86,7 @@ class OutcomingTextMessageViewHolder(itemView: View) :
8686
lateinit var chatRepository: ChatMessageRepository
8787

8888
@Inject
89-
lateinit var currentUserProvider: CurrentUserProviderNew
89+
lateinit var currentUserProvider: CurrentUserProviderOld
9090

9191
private var job: Job? = null
9292

app/src/main/java/com/nextcloud/talk/adapters/messages/SystemMessageViewHolder.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import com.nextcloud.talk.chat.data.model.ChatMessage
2828
import com.nextcloud.talk.databinding.ItemSystemMessageBinding
2929
import com.nextcloud.talk.utils.DateUtils
3030
import com.nextcloud.talk.utils.DisplayUtils
31-
import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew
31+
import com.nextcloud.talk.utils.database.user.CurrentUserProviderOld
3232
import com.nextcloud.talk.utils.preferences.AppPreferences
3333
import com.stfalcon.chatkit.messages.MessageHolders
3434
import javax.inject.Inject
@@ -41,7 +41,7 @@ class SystemMessageViewHolder(itemView: View) :
4141
private val binding: ItemSystemMessageBinding = ItemSystemMessageBinding.bind(itemView)
4242

4343
@Inject
44-
lateinit var currentUserProvider: CurrentUserProviderNew
44+
lateinit var currentUserProvider: CurrentUserProviderOld
4545

4646
@JvmField
4747
@Inject

app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt

Lines changed: 36 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ class ChatActivity :
370370
var conversationThreadId: Long? = null
371371
var openedViaNotification: Boolean = false
372372
var conversationThreadInfo: ThreadInfo? = null
373-
var conversationUser: User? = null
373+
lateinit var conversationUser: User
374374
lateinit var spreedCapabilities: SpreedCapability
375375
var chatApiVersion: Int = 1
376376
private var roomPassword: String = ""
@@ -509,34 +509,41 @@ class ChatActivity :
509509
colorizeNavigationBar()
510510
}
511511

512-
conversationUser = currentUserProvider.currentUser.blockingGet()
513-
handleIntent(intent)
514-
515512
chatViewModel = ViewModelProvider(this, viewModelFactory)[ChatViewModel::class.java]
516513

517514
conversationInfoViewModel = ViewModelProvider(this, viewModelFactory)[ConversationInfoViewModel::class.java]
518515

519516
contextChatViewModel = ViewModelProvider(this, viewModelFactory)[ContextChatViewModel::class.java]
520517

521-
val urlForChatting = ApiUtils.getUrlForChat(chatApiVersion, conversationUser?.baseUrl, roomToken)
522-
val credentials = ApiUtils.getCredentials(conversationUser!!.username, conversationUser!!.token)
523-
chatViewModel.initData(
524-
credentials!!,
525-
urlForChatting,
526-
roomToken,
527-
conversationThreadId
528-
)
518+
lifecycleScope.launch {
519+
currentUserProvider.getCurrentUser()
520+
.onSuccess { user ->
521+
conversationUser = user
522+
handleIntent(intent)
523+
val urlForChatting = ApiUtils.getUrlForChat(chatApiVersion, conversationUser?.baseUrl, roomToken)
524+
val credentials = ApiUtils.getCredentials(conversationUser!!.username, conversationUser!!.token)
525+
chatViewModel.initData(
526+
user,
527+
credentials!!,
528+
urlForChatting,
529+
roomToken,
530+
conversationThreadId
531+
)
529532

530-
conversationThreadId?.let {
531-
val threadUrl = ApiUtils.getUrlForThread(
532-
version = 1,
533-
baseUrl = conversationUser!!.baseUrl,
534-
token = roomToken,
535-
threadId = it.toInt()
536-
)
537-
chatViewModel.getThread(credentials, threadUrl)
533+
conversationThreadId?.let {
534+
val threadUrl = ApiUtils.getUrlForThread(
535+
version = 1,
536+
baseUrl = conversationUser!!.baseUrl,
537+
token = roomToken,
538+
threadId = it.toInt()
539+
)
540+
chatViewModel.getThread(credentials, threadUrl)
541+
}
542+
}
543+
.onFailure {
544+
Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
545+
}
538546
}
539-
540547
messageInputFragment = getMessageInputFragment()
541548
messageInputViewModel = ViewModelProvider(this, viewModelFactory)[MessageInputViewModel::class.java]
542549
messageInputViewModel.setData(chatViewModel.getChatRepository())
@@ -1412,7 +1419,10 @@ class ChatActivity :
14121419

14131420
cancelNotificationsForCurrentConversation()
14141421

1415-
chatViewModel.getRoom(roomToken)
1422+
chatViewModel.getRoom(
1423+
conversationUser,
1424+
roomToken
1425+
)
14161426

14171427
actionBar?.show()
14181428

@@ -1891,7 +1901,10 @@ class ChatActivity :
18911901
}
18921902
getRoomInfoTimerHandler?.postDelayed(
18931903
{
1894-
chatViewModel.getRoom(roomToken)
1904+
chatViewModel.getRoom(
1905+
conversationUser,
1906+
roomToken
1907+
)
18951908
},
18961909
if (delay > 0) delay else delayForRecursiveCall
18971910
)

0 commit comments

Comments
 (0)