Skip to content

Commit

Permalink
Start Paging @ Unread count instead of -1.
Browse files Browse the repository at this point in the history
  • Loading branch information
alex-signal authored and greyson-signal committed Jun 7, 2020
1 parent 7184719 commit cf9d090
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 22 deletions.
Expand Up @@ -56,8 +56,8 @@ public boolean onBackPressed() {
return false;
}

public void goToConversation(@NonNull RecipientId recipientId, long threadId, int distributionType, int startingPosition) {
Intent intent = ConversationActivity.buildIntent(activity, recipientId, threadId, distributionType, startingPosition);
public void goToConversation(@NonNull RecipientId recipientId, long threadId, int distributionType, int startingPosition, boolean highlightStartPosition) {
Intent intent = ConversationActivity.buildIntent(activity, recipientId, threadId, distributionType, startingPosition, highlightStartPosition);

activity.startActivity(intent);
activity.overridePendingTransition(R.anim.slide_from_end, R.anim.fade_scale_out);
Expand Down
Expand Up @@ -281,13 +281,14 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity

private static final String TAG = ConversationActivity.class.getSimpleName();

public static final String RECIPIENT_EXTRA = "recipient_id";
public static final String THREAD_ID_EXTRA = "thread_id";
public static final String TEXT_EXTRA = "draft_text";
public static final String MEDIA_EXTRA = "media_list";
public static final String STICKER_EXTRA = "sticker_extra";
public static final String DISTRIBUTION_TYPE_EXTRA = "distribution_type";
public static final String STARTING_POSITION_EXTRA = "starting_position";
public static final String RECIPIENT_EXTRA = "recipient_id";
public static final String THREAD_ID_EXTRA = "thread_id";
public static final String TEXT_EXTRA = "draft_text";
public static final String MEDIA_EXTRA = "media_list";
public static final String STICKER_EXTRA = "sticker_extra";
public static final String DISTRIBUTION_TYPE_EXTRA = "distribution_type";
public static final String STARTING_POSITION_EXTRA = "starting_position";
public static final String HIGHLIGHT_STARTING_POSITION_EXTRA = "highlight_starting_position";

private static final int PICK_GALLERY = 1;
private static final int PICK_DOCUMENT = 2;
Expand Down Expand Up @@ -355,13 +356,15 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
@NonNull RecipientId recipientId,
long threadId,
int distributionType,
int startingPosition)
int startingPosition,
boolean highlightStartingPosition)
{
Intent intent = new Intent(context, ConversationActivity.class);
intent.putExtra(ConversationActivity.RECIPIENT_EXTRA, recipientId);
intent.putExtra(ConversationActivity.THREAD_ID_EXTRA, threadId);
intent.putExtra(ConversationActivity.DISTRIBUTION_TYPE_EXTRA, distributionType);
intent.putExtra(ConversationActivity.STARTING_POSITION_EXTRA, startingPosition);
intent.putExtra(ConversationActivity.HIGHLIGHT_STARTING_POSITION_EXTRA, highlightStartingPosition);

return intent;
}
Expand Down
Expand Up @@ -217,6 +217,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
this.conversationViewModel = ViewModelProviders.of(requireActivity(), new ConversationViewModel.Factory()).get(ConversationViewModel.class);
conversationViewModel.getMessages().observe(this, list -> {
if (getListAdapter() != null) {
Log.i(TAG, "submitList");
getListAdapter().submitList(list);
}
});
Expand Down Expand Up @@ -283,6 +284,7 @@ public void onResume() {
super.onResume();

if (list.getAdapter() != null) {
Log.i(TAG, "onResume notifyDataSetChanged");
list.getAdapter().notifyDataSetChanged();
}
}
Expand Down Expand Up @@ -905,10 +907,17 @@ private void presentConversationMetadata(@NonNull ConversationData conversation)
private void scrollToStartingPosition(int startingPosition) {
list.post(() -> {
list.getLayoutManager().scrollToPosition(startingPosition);
getListAdapter().pulseHighlightItem(startingPosition);

if (shouldHighlightStartingPosition()) {
getListAdapter().pulseHighlightItem(startingPosition);
}
});
}

private boolean shouldHighlightStartingPosition() {
return requireActivity().getIntent().getBooleanExtra(ConversationActivity.HIGHLIGHT_STARTING_POSITION_EXTRA, false);
}

private void scrollToLastSeenPosition(int lastSeenPosition) {
if (lastSeenPosition > 0) {
list.post(() -> getListLayoutManager().scrollToPositionWithOffset(lastSeenPosition, list.getHeight()));
Expand Down
Expand Up @@ -126,6 +126,7 @@
import org.thoughtcrime.securesms.util.concurrent.SignalExecutors;
import org.thoughtcrime.securesms.util.concurrent.SimpleTask;
import org.thoughtcrime.securesms.util.task.SnackbarAsyncTask;
import org.whispersystems.libsignal.util.Pair;
import org.whispersystems.libsignal.util.guava.Optional;

import java.util.Collections;
Expand Down Expand Up @@ -352,19 +353,24 @@ public void onConversationClicked(@NonNull ThreadRecord threadRecord) {
getNavigator().goToConversation(threadRecord.getRecipient().getId(),
threadRecord.getThreadId(),
threadRecord.getDistributionType(),
-1);
threadRecord.getUnreadCount(),
false);
}

@Override
public void onContactClicked(@NonNull Recipient contact) {
SimpleTask.run(getViewLifecycleOwner().getLifecycle(), () -> {
return DatabaseFactory.getThreadDatabase(getContext()).getThreadIdIfExistsFor(contact);
}, threadId -> {
long threadId = DatabaseFactory.getThreadDatabase(getContext()).getThreadIdIfExistsFor(contact);
int unreadCount = DatabaseFactory.getMmsSmsDatabase(getContext()).getUnreadCount(threadId);

return new Pair<>(threadId, unreadCount);
}, pair -> {
hideKeyboard();
getNavigator().goToConversation(contact.getId(),
threadId,
pair.first(),
ThreadDatabase.DistributionTypes.DEFAULT,
-1);
pair.second(),
false);
});
}

Expand All @@ -378,7 +384,8 @@ public void onMessageClicked(@NonNull MessageResult message) {
getNavigator().goToConversation(message.conversationRecipient.getId(),
message.threadId,
ThreadDatabase.DistributionTypes.DEFAULT,
startingPosition);
startingPosition,
true);
});
}

Expand Down Expand Up @@ -728,8 +735,8 @@ private void handleSelectAllThreads() {
actionMode.setTitle(String.valueOf(defaultAdapter.getBatchSelectionIds().size()));
}

private void handleCreateConversation(long threadId, Recipient recipient, int distributionType) {
getNavigator().goToConversation(recipient.getId(), threadId, distributionType, -1);
private void handleCreateConversation(long threadId, Recipient recipient, int distributionType, int unreadCount) {
getNavigator().goToConversation(recipient.getId(), threadId, distributionType, unreadCount, false);
}

@Override
Expand Down Expand Up @@ -763,7 +770,7 @@ public void onLoaderReset(@NonNull Loader<Cursor> arg0) {
@Override
public void onItemClick(ConversationListItem item) {
if (actionMode == null) {
handleCreateConversation(item.getThreadId(), item.getRecipient(), item.getDistributionType());
handleCreateConversation(item.getThreadId(), item.getRecipient(), item.getDistributionType(), item.getUnreadCount());
} else {
ConversationListAdapter adapter = (ConversationListAdapter)list.getAdapter();
adapter.toggleThreadInBatchSet(item.getThread());
Expand Down
Expand Up @@ -63,7 +63,8 @@ public void onGroupCreated(@NonNull RecipientId recipientId, long threadId) {
recipientId,
threadId,
ThreadDatabase.DistributionTypes.DEFAULT,
-1);
-1,
false);

startActivity(intent);
setResult(RESULT_OK);
Expand Down
Expand Up @@ -80,7 +80,13 @@ public long getThreadId() {
public PendingIntent getPendingIntent(Context context) {
Recipient recipient = threadRecipient != null ? threadRecipient : conversationRecipient;
int startingPosition = jumpToMessage ? getStartingPosition(context, threadId, messageReceivedTimestamp) : -1;
Intent intent = ConversationActivity.buildIntent(context, recipient.getId(), threadId, 0, startingPosition);

if (!jumpToMessage) {
int unreadCount = DatabaseFactory.getMmsSmsDatabase(context).getUnreadCount(threadId);
startingPosition = unreadCount > 0 ? unreadCount : -1;
}

Intent intent = ConversationActivity.buildIntent(context, recipient.getId(), threadId, 0, startingPosition, jumpToMessage);

makeIntentUniqueToPreventMerging(intent);

Expand Down

0 comments on commit cf9d090

Please sign in to comment.