mirror of
https://github.com/oxen-io/session-android.git
synced 2025-04-16 10:31:28 +00:00
Shifted a number of db writes when opening conversations to the IO thread so they don't block
This commit is contained in:
parent
c0bef51fe0
commit
e7b6ddacbb
@ -343,7 +343,11 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
|
|||||||
super.onResume()
|
super.onResume()
|
||||||
ApplicationContext.getInstance(this).messageNotifier.setVisibleThread(viewModel.threadId)
|
ApplicationContext.getInstance(this).messageNotifier.setVisibleThread(viewModel.threadId)
|
||||||
val recipient = viewModel.recipient ?: return
|
val recipient = viewModel.recipient ?: return
|
||||||
|
|
||||||
|
lifecycleScope.launch(Dispatchers.IO) {
|
||||||
threadDb.markAllAsRead(viewModel.threadId, recipient.isOpenGroupRecipient)
|
threadDb.markAllAsRead(viewModel.threadId, recipient.isOpenGroupRecipient)
|
||||||
|
}
|
||||||
|
|
||||||
contentResolver.registerContentObserver(
|
contentResolver.registerContentObserver(
|
||||||
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
|
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
|
||||||
true,
|
true,
|
||||||
|
@ -6,6 +6,8 @@ import androidx.lifecycle.viewModelScope
|
|||||||
import com.goterl.lazysodium.utils.KeyPair
|
import com.goterl.lazysodium.utils.KeyPair
|
||||||
import dagger.assisted.Assisted
|
import dagger.assisted.Assisted
|
||||||
import dagger.assisted.AssistedInject
|
import dagger.assisted.AssistedInject
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.GlobalScope
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
import kotlinx.coroutines.flow.update
|
import kotlinx.coroutines.flow.update
|
||||||
@ -48,11 +50,19 @@ class ConversationViewModel(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun saveDraft(text: String) {
|
fun saveDraft(text: String) {
|
||||||
|
GlobalScope.launch(Dispatchers.IO) {
|
||||||
repository.saveDraft(threadId, text)
|
repository.saveDraft(threadId, text)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun getDraft(): String? {
|
fun getDraft(): String? {
|
||||||
return repository.getDraft(threadId)
|
val draft: String? = repository.getDraft(threadId)
|
||||||
|
|
||||||
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
|
repository.clearDrafts(threadId)
|
||||||
|
}
|
||||||
|
|
||||||
|
return draft
|
||||||
}
|
}
|
||||||
|
|
||||||
fun inviteContacts(contacts: List<Recipient>) {
|
fun inviteContacts(contacts: List<Recipient>) {
|
||||||
|
@ -35,6 +35,7 @@ interface ConversationRepository {
|
|||||||
fun maybeGetRecipientForThreadId(threadId: Long): Recipient?
|
fun maybeGetRecipientForThreadId(threadId: Long): Recipient?
|
||||||
fun saveDraft(threadId: Long, text: String)
|
fun saveDraft(threadId: Long, text: String)
|
||||||
fun getDraft(threadId: Long): String?
|
fun getDraft(threadId: Long): String?
|
||||||
|
fun clearDrafts(threadId: Long)
|
||||||
fun inviteContacts(threadId: Long, contacts: List<Recipient>)
|
fun inviteContacts(threadId: Long, contacts: List<Recipient>)
|
||||||
fun setBlocked(recipient: Recipient, blocked: Boolean)
|
fun setBlocked(recipient: Recipient, blocked: Boolean)
|
||||||
fun deleteLocally(recipient: Recipient, message: MessageRecord)
|
fun deleteLocally(recipient: Recipient, message: MessageRecord)
|
||||||
@ -98,10 +99,13 @@ class DefaultConversationRepository @Inject constructor(
|
|||||||
|
|
||||||
override fun getDraft(threadId: Long): String? {
|
override fun getDraft(threadId: Long): String? {
|
||||||
val drafts = draftDb.getDrafts(threadId)
|
val drafts = draftDb.getDrafts(threadId)
|
||||||
draftDb.clearDrafts(threadId)
|
|
||||||
return drafts.find { it.type == DraftDatabase.Draft.TEXT }?.value
|
return drafts.find { it.type == DraftDatabase.Draft.TEXT }?.value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun clearDrafts(threadId: Long) {
|
||||||
|
draftDb.clearDrafts(threadId)
|
||||||
|
}
|
||||||
|
|
||||||
override fun inviteContacts(threadId: Long, contacts: List<Recipient>) {
|
override fun inviteContacts(threadId: Long, contacts: List<Recipient>) {
|
||||||
val openGroup = lokiThreadDb.getOpenGroupChat(threadId) ?: return
|
val openGroup = lokiThreadDb.getOpenGroupChat(threadId) ?: return
|
||||||
for (contact in contacts) {
|
for (contact in contacts) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user