Mark all call events as read whenever we enter the calls tab.

This commit is contained in:
Alex Hart
2023-04-13 16:35:00 -03:00
committed by Greyson Parrelli
parent ee89629738
commit 2a16d8baed
4 changed files with 19 additions and 1 deletions

View File

@@ -10,7 +10,6 @@ import android.view.View
import androidx.activity.OnBackPressedCallback
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.view.ActionMode
import androidx.compose.animation.core.snap
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.view.MenuProvider
import androidx.fragment.app.Fragment
@@ -193,6 +192,7 @@ class CallLogFragment : Fragment(R.layout.call_log_fragment), CallLogAdapter.Cal
super.onResume()
initializeSearchAction()
ApplicationDependencies.getDeletedCallEventManager().scheduleIfNecessary()
viewModel.markAllCallEventsRead()
}
private fun initializeTapToScrollToTop(snapToTopDataObserver: SnapToTopDataObserver) {

View File

@@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.calls.log
import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.schedulers.Schedulers
import org.signal.core.util.concurrent.SignalExecutors
import org.thoughtcrime.securesms.database.DatabaseObserver
import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
@@ -16,6 +17,12 @@ class CallLogRepository : CallLogPagedDataSource.CallRepository {
return SignalDatabase.calls.getCalls(start, length, query, filter)
}
fun markAllCallEventsRead() {
SignalExecutors.BOUNDED_IO.execute {
SignalDatabase.messages.markAllCallEventsRead()
}
}
fun listenForChanges(): Observable<Unit> {
return Observable.create { emitter ->
fun refresh() {

View File

@@ -77,6 +77,10 @@ class CallLogViewModel(
disposables.dispose()
}
fun markAllCallEventsRead() {
callLogRepository.markAllCallEventsRead()
}
fun selectAll() {
callLogStore.update {
val selectionState = CallLogSelectionState.selectAll()

View File

@@ -1307,6 +1307,13 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
return markedMessageInfos
}
fun markAllCallEventsRead(): List<MarkedMessageInfo> {
val where = "$IS_CALL_TYPE_CLAUSE AND $READ = 0"
val markedMessageInfos = setMessagesRead(where, null)
notifyConversationListListeners()
return markedMessageInfos
}
fun markAllFailedStoriesNotified() {
val where = "$IS_STORY_CLAUSE AND (${getOutgoingTypeClause()}) AND $NOTIFIED = 0 AND ($TYPE & ${MessageTypes.BASE_TYPE_MASK}) = ${MessageTypes.BASE_SENT_FAILED_TYPE}"