Skip to content
This repository has been archived by the owner on Jun 21, 2023. It is now read-only.

Commit

Permalink
PrivateMessageThread: [FIX] first message doesn't get marked as read
Browse files Browse the repository at this point in the history
  • Loading branch information
saket committed Jun 10, 2018
1 parent d1416ee commit 92de670
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 7 deletions.
11 changes: 11 additions & 0 deletions app/src/main/java/me/saket/dank/data/InboxRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import static java.util.Collections.unmodifiableList;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.support.annotation.CheckResult;

Expand All @@ -25,6 +26,7 @@
import io.reactivex.Observable;
import io.reactivex.Single;
import io.reactivex.functions.Consumer;
import me.saket.dank.notifs.MessageNotifActionsJobService;
import me.saket.dank.reddit.Reddit;
import me.saket.dank.reply.ReplyRepository;
import me.saket.dank.ui.submission.ParentThread;
Expand Down Expand Up @@ -256,18 +258,27 @@ private Completable removeAllMessages(InboxFolder folder) {

// ======== READ STATUS ======== //

/**
* Access via {@link MessageNotifActionsJobService#markAsRead(Context, MoshiAdapter, Message...)}.
*/
@CheckResult
public Completable setRead(Identifiable[] messages, boolean read) {
return reddit.get().loggedInUser().setMessagesRead(read, messages)
.andThen(removeMessages(InboxFolder.UNREAD, messages));
}

/**
* Access via {@link MessageNotifActionsJobService#markAsRead(Context, MoshiAdapter, Message...)}.
*/
@CheckResult
public Completable setRead(Identifiable message, boolean read) {
return reddit.get().loggedInUser().setMessagesRead(read, message)
.andThen(removeMessages(InboxFolder.UNREAD, message));
}

/**
* Access via {@link MessageNotifActionsJobService#markAllAsRead(Context)}.
*/
@CheckResult
public Completable setAllRead() {
return reddit.get().loggedInUser().setAllMessagesRead()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,7 @@ private List<SubmissionScreenUiModel> constructComments(
if (!isSubmission && isReplyActive && !isCommentNodeCollapsed) {
String loggedInUserName = userSessionRepository.get().loggedInUserName();
String parentCommentAuthor = nextNode.getSubject().getAuthor();
//noinspection ConstantConditions
flattenComments.add(inlineReplyUiModel(context, nextNode.getSubject(), parentCommentAuthor, loggedInUserName, nextNode.getDepth()));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import io.reactivex.BackpressureStrategy;
import io.reactivex.Completable;
import io.reactivex.Observable;
import me.saket.dank.BuildConfig;
import me.saket.dank.R;
import me.saket.dank.data.ErrorResolver;
import me.saket.dank.data.InboxRepository;
Expand All @@ -58,6 +59,7 @@
import me.saket.dank.ui.submission.DraftStore;
import me.saket.dank.ui.submission.ParentThread;
import me.saket.dank.ui.user.UserSessionRepository;
import me.saket.dank.utils.Arrays2;
import me.saket.dank.utils.DankLinkMovementMethod;
import me.saket.dank.utils.Dates;
import me.saket.dank.utils.JrawUtils2;
Expand Down Expand Up @@ -295,15 +297,18 @@ protected void onPostCreate(@Nullable Bundle savedInstanceState) {

// Mark PM as read.
messageThread
.map(thread -> thread.getReplies())
.filter(replies -> !replies.isEmpty())
.take(1)
.map(replies -> {
Identifiable[] replyIds = new Identifiable[replies.size()];
for (int i = 0; i < replyIds.length; i++) {
replyIds[i] = replies.get(i);
.map(thread -> {
List<? extends Identifiable> replies = JrawUtils2.messageReplies(thread);
List<Identifiable> messagesToMarkAsRead = new ArrayList<>(1 + replies.size());
messagesToMarkAsRead.add(thread);
messagesToMarkAsRead.addAll(replies);
return Arrays2.toArray(messagesToMarkAsRead, Identifiable.class);
})
.doOnNext(ids -> {
if (BuildConfig.DEBUG) {
Timber.i("Marking %s messages as read", ids.length);
}
return replyIds;
})
.flatMapCompletable(replyIds -> inboxRepository.get().setRead(replyIds, true))
.subscribeOn(io())
Expand Down

0 comments on commit 92de670

Please sign in to comment.