kopia lustrzana https://github.com/ryukoposting/Signal-Android
Remember position in react-with-any-emoji picker.
rodzic
4668510106
commit
d2739d52e0
|
@ -301,6 +301,8 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||
|
||||
public static final String SAFETY_NUMBER_DIALOG = "SAFETY_NUMBER";
|
||||
|
||||
private static final String STATE_REACT_WITH_ANY_PAGE = "STATE_REACT_WITH_ANY_PAGE";
|
||||
|
||||
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";
|
||||
|
@ -366,6 +368,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||
private LiveRecipient recipient;
|
||||
private long threadId;
|
||||
private int distributionType;
|
||||
private int reactWithAnyEmojiStartPage;
|
||||
private boolean isSecureText;
|
||||
private boolean isDefaultSms = true;
|
||||
private boolean isMmsEnabled = true;
|
||||
|
@ -469,6 +472,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||
return;
|
||||
}
|
||||
|
||||
reactWithAnyEmojiStartPage = 0;
|
||||
if (!Util.isEmpty(composeText) || attachmentManager.isAttachmentPresent() || inputPanel.getQuote().isPresent()) {
|
||||
saveDraft();
|
||||
attachmentManager.clear(glideRequests, false);
|
||||
|
@ -701,6 +705,20 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(@NonNull Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
|
||||
outState.putInt(STATE_REACT_WITH_ANY_PAGE, reactWithAnyEmojiStartPage);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onRestoreInstanceState(Bundle savedInstanceState) {
|
||||
super.onRestoreInstanceState(savedInstanceState);
|
||||
|
||||
reactWithAnyEmojiStartPage = savedInstanceState.getInt(STATE_REACT_WITH_ANY_PAGE, 0);
|
||||
}
|
||||
|
||||
private void handleImageFromDeviceCameraApp() {
|
||||
if (attachmentManager.getCaptureUri() == null) {
|
||||
Log.w(TAG, "No image available.");
|
||||
|
@ -1995,7 +2013,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||
} else {
|
||||
reactionOverlay.hideAllButMask();
|
||||
|
||||
ReactWithAnyEmojiBottomSheetDialogFragment.createForMessageRecord(messageRecord)
|
||||
ReactWithAnyEmojiBottomSheetDialogFragment.createForMessageRecord(messageRecord, reactWithAnyEmojiStartPage)
|
||||
.show(getSupportFragmentManager(), "BOTTOM");
|
||||
}
|
||||
}
|
||||
|
@ -2005,6 +2023,11 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||
reactionOverlay.hideMask();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReactWithAnyEmojiPageChanged(int page) {
|
||||
reactWithAnyEmojiStartPage = page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSearchMoveUpPressed() {
|
||||
searchViewModel.onMoveUp();
|
||||
|
|
|
@ -49,6 +49,7 @@ public final class ReactWithAnyEmojiBottomSheetDialogFragment extends BottomShee
|
|||
|
||||
private static final String ARG_MESSAGE_ID = "arg_message_id";
|
||||
private static final String ARG_IS_MMS = "arg_is_mms";
|
||||
private static final String ARG_START_PAGE = "arg_start_page";
|
||||
|
||||
private ReactWithAnyEmojiViewModel viewModel;
|
||||
private TextSwitcher categoryLabel;
|
||||
|
@ -59,12 +60,13 @@ public final class ReactWithAnyEmojiBottomSheetDialogFragment extends BottomShee
|
|||
private Callback callback;
|
||||
private ReactionsLoader reactionsLoader;
|
||||
|
||||
public static DialogFragment createForMessageRecord(@NonNull MessageRecord messageRecord) {
|
||||
public static DialogFragment createForMessageRecord(@NonNull MessageRecord messageRecord, int startingPage) {
|
||||
DialogFragment fragment = new ReactWithAnyEmojiBottomSheetDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
|
||||
args.putLong(ARG_MESSAGE_ID, messageRecord.getId());
|
||||
args.putBoolean(ARG_IS_MMS, messageRecord.isMms());
|
||||
args.putInt(ARG_START_PAGE, startingPage);
|
||||
fragment.setArguments(args);
|
||||
|
||||
return fragment;
|
||||
|
@ -150,7 +152,8 @@ public final class ReactWithAnyEmojiBottomSheetDialogFragment extends BottomShee
|
|||
categoryPager.registerOnPageChangeCallback(onPageChanged);
|
||||
|
||||
viewModel.getEmojiPageModels().observe(getViewLifecycleOwner(), pages -> {
|
||||
int pageToSet = adapter.getItemCount() == 0 ? (pages.get(0).hasEmoji() ? 0 : 1) : -1;
|
||||
int pageToSet = adapter.getItemCount() == 0 ? getStartingPage((pages.get(0).hasEmoji()))
|
||||
: -1;
|
||||
|
||||
adapter.submitList(pages);
|
||||
|
||||
|
@ -237,14 +240,20 @@ public final class ReactWithAnyEmojiBottomSheetDialogFragment extends BottomShee
|
|||
categoryLabel.setText(getString(adapter.getItem(position).getLabel()));
|
||||
}
|
||||
|
||||
private int getStartingPage(boolean firstPageHasContent) {
|
||||
return requireArguments().getInt(ARG_START_PAGE, firstPageHasContent ? 0 : 1);
|
||||
}
|
||||
|
||||
private class OnPageChanged extends ViewPager2.OnPageChangeCallback {
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
updateFocusedRecycler(position);
|
||||
callback.onReactWithAnyEmojiPageChanged(position);
|
||||
}
|
||||
}
|
||||
|
||||
public interface Callback {
|
||||
void onReactWithAnyEmojiDialogDismissed();
|
||||
void onReactWithAnyEmojiPageChanged(int page);
|
||||
}
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue