mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-09 03:58:33 +00:00
Start Paging @ Unread count instead of -1.
This commit is contained in:
parent
718471917f
commit
cf9d090154
@ -56,8 +56,8 @@ public class MainNavigator {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void goToConversation(@NonNull RecipientId recipientId, long threadId, int distributionType, int startingPosition) {
|
public void goToConversation(@NonNull RecipientId recipientId, long threadId, int distributionType, int startingPosition, boolean highlightStartPosition) {
|
||||||
Intent intent = ConversationActivity.buildIntent(activity, recipientId, threadId, distributionType, startingPosition);
|
Intent intent = ConversationActivity.buildIntent(activity, recipientId, threadId, distributionType, startingPosition, highlightStartPosition);
|
||||||
|
|
||||||
activity.startActivity(intent);
|
activity.startActivity(intent);
|
||||||
activity.overridePendingTransition(R.anim.slide_from_end, R.anim.fade_scale_out);
|
activity.overridePendingTransition(R.anim.slide_from_end, R.anim.fade_scale_out);
|
||||||
|
@ -281,13 +281,14 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
|||||||
|
|
||||||
private static final String TAG = ConversationActivity.class.getSimpleName();
|
private static final String TAG = ConversationActivity.class.getSimpleName();
|
||||||
|
|
||||||
public static final String RECIPIENT_EXTRA = "recipient_id";
|
public static final String RECIPIENT_EXTRA = "recipient_id";
|
||||||
public static final String THREAD_ID_EXTRA = "thread_id";
|
public static final String THREAD_ID_EXTRA = "thread_id";
|
||||||
public static final String TEXT_EXTRA = "draft_text";
|
public static final String TEXT_EXTRA = "draft_text";
|
||||||
public static final String MEDIA_EXTRA = "media_list";
|
public static final String MEDIA_EXTRA = "media_list";
|
||||||
public static final String STICKER_EXTRA = "sticker_extra";
|
public static final String STICKER_EXTRA = "sticker_extra";
|
||||||
public static final String DISTRIBUTION_TYPE_EXTRA = "distribution_type";
|
public static final String DISTRIBUTION_TYPE_EXTRA = "distribution_type";
|
||||||
public static final String STARTING_POSITION_EXTRA = "starting_position";
|
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_GALLERY = 1;
|
||||||
private static final int PICK_DOCUMENT = 2;
|
private static final int PICK_DOCUMENT = 2;
|
||||||
@ -355,13 +356,15 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
|||||||
@NonNull RecipientId recipientId,
|
@NonNull RecipientId recipientId,
|
||||||
long threadId,
|
long threadId,
|
||||||
int distributionType,
|
int distributionType,
|
||||||
int startingPosition)
|
int startingPosition,
|
||||||
|
boolean highlightStartingPosition)
|
||||||
{
|
{
|
||||||
Intent intent = new Intent(context, ConversationActivity.class);
|
Intent intent = new Intent(context, ConversationActivity.class);
|
||||||
intent.putExtra(ConversationActivity.RECIPIENT_EXTRA, recipientId);
|
intent.putExtra(ConversationActivity.RECIPIENT_EXTRA, recipientId);
|
||||||
intent.putExtra(ConversationActivity.THREAD_ID_EXTRA, threadId);
|
intent.putExtra(ConversationActivity.THREAD_ID_EXTRA, threadId);
|
||||||
intent.putExtra(ConversationActivity.DISTRIBUTION_TYPE_EXTRA, distributionType);
|
intent.putExtra(ConversationActivity.DISTRIBUTION_TYPE_EXTRA, distributionType);
|
||||||
intent.putExtra(ConversationActivity.STARTING_POSITION_EXTRA, startingPosition);
|
intent.putExtra(ConversationActivity.STARTING_POSITION_EXTRA, startingPosition);
|
||||||
|
intent.putExtra(ConversationActivity.HIGHLIGHT_STARTING_POSITION_EXTRA, highlightStartingPosition);
|
||||||
|
|
||||||
return intent;
|
return intent;
|
||||||
}
|
}
|
||||||
|
@ -217,6 +217,7 @@ public class ConversationFragment extends Fragment {
|
|||||||
this.conversationViewModel = ViewModelProviders.of(requireActivity(), new ConversationViewModel.Factory()).get(ConversationViewModel.class);
|
this.conversationViewModel = ViewModelProviders.of(requireActivity(), new ConversationViewModel.Factory()).get(ConversationViewModel.class);
|
||||||
conversationViewModel.getMessages().observe(this, list -> {
|
conversationViewModel.getMessages().observe(this, list -> {
|
||||||
if (getListAdapter() != null) {
|
if (getListAdapter() != null) {
|
||||||
|
Log.i(TAG, "submitList");
|
||||||
getListAdapter().submitList(list);
|
getListAdapter().submitList(list);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -283,6 +284,7 @@ public class ConversationFragment extends Fragment {
|
|||||||
super.onResume();
|
super.onResume();
|
||||||
|
|
||||||
if (list.getAdapter() != null) {
|
if (list.getAdapter() != null) {
|
||||||
|
Log.i(TAG, "onResume notifyDataSetChanged");
|
||||||
list.getAdapter().notifyDataSetChanged();
|
list.getAdapter().notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -905,10 +907,17 @@ public class ConversationFragment extends Fragment {
|
|||||||
private void scrollToStartingPosition(int startingPosition) {
|
private void scrollToStartingPosition(int startingPosition) {
|
||||||
list.post(() -> {
|
list.post(() -> {
|
||||||
list.getLayoutManager().scrollToPosition(startingPosition);
|
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) {
|
private void scrollToLastSeenPosition(int lastSeenPosition) {
|
||||||
if (lastSeenPosition > 0) {
|
if (lastSeenPosition > 0) {
|
||||||
list.post(() -> getListLayoutManager().scrollToPositionWithOffset(lastSeenPosition, list.getHeight()));
|
list.post(() -> getListLayoutManager().scrollToPositionWithOffset(lastSeenPosition, list.getHeight()));
|
||||||
|
@ -126,6 +126,7 @@ import org.thoughtcrime.securesms.util.ViewUtil;
|
|||||||
import org.thoughtcrime.securesms.util.concurrent.SignalExecutors;
|
import org.thoughtcrime.securesms.util.concurrent.SignalExecutors;
|
||||||
import org.thoughtcrime.securesms.util.concurrent.SimpleTask;
|
import org.thoughtcrime.securesms.util.concurrent.SimpleTask;
|
||||||
import org.thoughtcrime.securesms.util.task.SnackbarAsyncTask;
|
import org.thoughtcrime.securesms.util.task.SnackbarAsyncTask;
|
||||||
|
import org.whispersystems.libsignal.util.Pair;
|
||||||
import org.whispersystems.libsignal.util.guava.Optional;
|
import org.whispersystems.libsignal.util.guava.Optional;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -352,19 +353,24 @@ public class ConversationListFragment extends MainFragment implements LoaderMana
|
|||||||
getNavigator().goToConversation(threadRecord.getRecipient().getId(),
|
getNavigator().goToConversation(threadRecord.getRecipient().getId(),
|
||||||
threadRecord.getThreadId(),
|
threadRecord.getThreadId(),
|
||||||
threadRecord.getDistributionType(),
|
threadRecord.getDistributionType(),
|
||||||
-1);
|
threadRecord.getUnreadCount(),
|
||||||
|
false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onContactClicked(@NonNull Recipient contact) {
|
public void onContactClicked(@NonNull Recipient contact) {
|
||||||
SimpleTask.run(getViewLifecycleOwner().getLifecycle(), () -> {
|
SimpleTask.run(getViewLifecycleOwner().getLifecycle(), () -> {
|
||||||
return DatabaseFactory.getThreadDatabase(getContext()).getThreadIdIfExistsFor(contact);
|
long threadId = DatabaseFactory.getThreadDatabase(getContext()).getThreadIdIfExistsFor(contact);
|
||||||
}, threadId -> {
|
int unreadCount = DatabaseFactory.getMmsSmsDatabase(getContext()).getUnreadCount(threadId);
|
||||||
|
|
||||||
|
return new Pair<>(threadId, unreadCount);
|
||||||
|
}, pair -> {
|
||||||
hideKeyboard();
|
hideKeyboard();
|
||||||
getNavigator().goToConversation(contact.getId(),
|
getNavigator().goToConversation(contact.getId(),
|
||||||
threadId,
|
pair.first(),
|
||||||
ThreadDatabase.DistributionTypes.DEFAULT,
|
ThreadDatabase.DistributionTypes.DEFAULT,
|
||||||
-1);
|
pair.second(),
|
||||||
|
false);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -378,7 +384,8 @@ public class ConversationListFragment extends MainFragment implements LoaderMana
|
|||||||
getNavigator().goToConversation(message.conversationRecipient.getId(),
|
getNavigator().goToConversation(message.conversationRecipient.getId(),
|
||||||
message.threadId,
|
message.threadId,
|
||||||
ThreadDatabase.DistributionTypes.DEFAULT,
|
ThreadDatabase.DistributionTypes.DEFAULT,
|
||||||
startingPosition);
|
startingPosition,
|
||||||
|
true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -728,8 +735,8 @@ public class ConversationListFragment extends MainFragment implements LoaderMana
|
|||||||
actionMode.setTitle(String.valueOf(defaultAdapter.getBatchSelectionIds().size()));
|
actionMode.setTitle(String.valueOf(defaultAdapter.getBatchSelectionIds().size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleCreateConversation(long threadId, Recipient recipient, int distributionType) {
|
private void handleCreateConversation(long threadId, Recipient recipient, int distributionType, int unreadCount) {
|
||||||
getNavigator().goToConversation(recipient.getId(), threadId, distributionType, -1);
|
getNavigator().goToConversation(recipient.getId(), threadId, distributionType, unreadCount, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -763,7 +770,7 @@ public class ConversationListFragment extends MainFragment implements LoaderMana
|
|||||||
@Override
|
@Override
|
||||||
public void onItemClick(ConversationListItem item) {
|
public void onItemClick(ConversationListItem item) {
|
||||||
if (actionMode == null) {
|
if (actionMode == null) {
|
||||||
handleCreateConversation(item.getThreadId(), item.getRecipient(), item.getDistributionType());
|
handleCreateConversation(item.getThreadId(), item.getRecipient(), item.getDistributionType(), item.getUnreadCount());
|
||||||
} else {
|
} else {
|
||||||
ConversationListAdapter adapter = (ConversationListAdapter)list.getAdapter();
|
ConversationListAdapter adapter = (ConversationListAdapter)list.getAdapter();
|
||||||
adapter.toggleThreadInBatchSet(item.getThread());
|
adapter.toggleThreadInBatchSet(item.getThread());
|
||||||
|
@ -63,7 +63,8 @@ public class AddGroupDetailsActivity extends PassphraseRequiredActionBarActivity
|
|||||||
recipientId,
|
recipientId,
|
||||||
threadId,
|
threadId,
|
||||||
ThreadDatabase.DistributionTypes.DEFAULT,
|
ThreadDatabase.DistributionTypes.DEFAULT,
|
||||||
-1);
|
-1,
|
||||||
|
false);
|
||||||
|
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
setResult(RESULT_OK);
|
setResult(RESULT_OK);
|
||||||
|
@ -80,7 +80,13 @@ public class NotificationItem {
|
|||||||
public PendingIntent getPendingIntent(Context context) {
|
public PendingIntent getPendingIntent(Context context) {
|
||||||
Recipient recipient = threadRecipient != null ? threadRecipient : conversationRecipient;
|
Recipient recipient = threadRecipient != null ? threadRecipient : conversationRecipient;
|
||||||
int startingPosition = jumpToMessage ? getStartingPosition(context, threadId, messageReceivedTimestamp) : -1;
|
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);
|
makeIntentUniqueToPreventMerging(intent);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user