Allow stories to be unhidden from within viewer.

Fixes #13710
This commit is contained in:
Alex Hart
2024-09-27 09:58:19 -03:00
parent 181ac26cae
commit 588f107300
5 changed files with 22 additions and 1 deletions

View File

@@ -152,6 +152,7 @@ object StoryContextMenu {
anchorView: View,
storyViewerPageState: StoryViewerPageState,
onHide: (StoryPost) -> Unit,
onUnhide: (StoryPost) -> Unit,
onForward: (StoryPost) -> Unit,
onShare: (StoryPost) -> Unit,
onGoToChat: (StoryPost) -> Unit,
@@ -171,7 +172,7 @@ object StoryContextMenu {
canHide = !selectedStory.sender.shouldHideStory,
callbacks = object : Callbacks {
override fun onHide() = onHide(selectedStory)
override fun onUnhide() = throw NotImplementedError()
override fun onUnhide() = onUnhide(selectedStory)
override fun onForward() = onForward(selectedStory)
override fun onShare() = onShare(selectedStory)
override fun onGoToChat() = onGoToChat(selectedStory)

View File

@@ -35,6 +35,7 @@ import com.google.android.material.button.MaterialButton
import com.google.android.material.card.MaterialCardView
import com.google.android.material.progressindicator.CircularProgressIndicatorSpec
import com.google.android.material.progressindicator.IndeterminateDrawable
import com.google.android.material.snackbar.Snackbar
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.kotlin.subscribeBy
@@ -1159,6 +1160,13 @@ class StoryViewerPageFragment :
}
}
},
onUnhide = {
lifecycleDisposable += viewModel.unhideStory().subscribe {
Snackbar
.make(requireView(), R.string.StoryViewerPageFragment__story_no_longer_hidden, Snackbar.LENGTH_SHORT)
.show()
}
},
onShare = {
StoryContextMenu.share(this, it.conversationMessage.messageRecord as MmsMessageRecord)
},

View File

@@ -171,6 +171,12 @@ open class StoryViewerPageRepository(context: Context, private val storyViewStat
}.subscribeOn(Schedulers.io())
}
fun unhideStory(recipientId: RecipientId): Completable {
return Completable.fromAction {
SignalDatabase.recipients.setHideStory(recipientId, false)
}.subscribeOn(Schedulers.io())
}
fun markViewed(storyPost: StoryPost) {
if (!storyPost.conversationMessage.messageRecord.isOutgoing) {
SignalExecutors.SERIAL.execute {

View File

@@ -117,6 +117,10 @@ class StoryViewerPageViewModel(
return repository.hideStory(args.recipientId)
}
fun unhideStory(): Completable {
return repository.unhideStory(args.recipientId).observeOn(AndroidSchedulers.mainThread())
}
fun markViewed(storyPost: StoryPost) {
repository.markViewed(storyPost)
}