kopia lustrzana https://github.com/ryukoposting/Signal-Android
Fix crash when recreating conversation react with any emoji fragment.
rodzic
b7afe4411e
commit
aeb568bcf4
|
@ -41,9 +41,9 @@ import org.thoughtcrime.securesms.keyboard.emoji.EmojiKeyboardPageCategoryMappin
|
|||
import org.thoughtcrime.securesms.keyboard.emoji.KeyboardPageSearchView;
|
||||
import org.thoughtcrime.securesms.reactions.edit.EditReactionsActivity;
|
||||
import org.thoughtcrime.securesms.util.LifecycleDisposable;
|
||||
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel;
|
||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||
import org.thoughtcrime.securesms.util.ViewUtil;
|
||||
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
|
@ -196,50 +196,44 @@ public final class ReactWithAnyEmojiBottomSheetDialogFragment extends BottomShee
|
|||
emojiPageView.addOnScrollListener(categoryUpdateOnScroll);
|
||||
|
||||
search = view.findViewById(R.id.react_with_any_emoji_search);
|
||||
search.setCallbacks(new SearchCallbacks());
|
||||
|
||||
initializeViewModel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
EmojiKeyboardPageCategoriesAdapter categoriesAdapter = new EmojiKeyboardPageCategoriesAdapter(key -> {
|
||||
scrollTo(key);
|
||||
viewModel.selectPage(key);
|
||||
});
|
||||
|
||||
if (savedInstanceState == null) {
|
||||
EmojiKeyboardPageCategoriesAdapter categoriesAdapter = new EmojiKeyboardPageCategoriesAdapter(key -> {
|
||||
scrollTo(key);
|
||||
viewModel.selectPage(key);
|
||||
});
|
||||
FrameLayout container = requireDialog().findViewById(R.id.container);
|
||||
tabBar = LayoutInflater.from(requireContext())
|
||||
.inflate(R.layout.react_with_any_emoji_tabs,
|
||||
container,
|
||||
false);
|
||||
RecyclerView categoriesRecycler = tabBar.findViewById(R.id.emoji_categories_recycler);
|
||||
categoriesRecycler.setAdapter(categoriesAdapter);
|
||||
|
||||
FrameLayout container = requireDialog().findViewById(R.id.container);
|
||||
tabBar = LayoutInflater.from(requireContext())
|
||||
.inflate(R.layout.react_with_any_emoji_tabs,
|
||||
container,
|
||||
false);
|
||||
RecyclerView categoriesRecycler = tabBar.findViewById(R.id.emoji_categories_recycler);
|
||||
categoriesRecycler.setAdapter(categoriesAdapter);
|
||||
|
||||
if (requireArguments().getBoolean(ARG_EDIT, false)) {
|
||||
View customizeReactions = tabBar.findViewById(R.id.customize_reactions_frame);
|
||||
customizeReactions.setVisibility(View.VISIBLE);
|
||||
customizeReactions.setOnClickListener(v -> startActivity(new Intent(requireContext(), EditReactionsActivity.class)));
|
||||
}
|
||||
|
||||
container.addView(tabBar);
|
||||
|
||||
emojiPageView.addOnScrollListener(new TopAndBottomShadowHelper(requireView().findViewById(R.id.react_with_any_emoji_top_shadow),
|
||||
tabBar.findViewById(R.id.react_with_any_emoji_bottom_shadow)));
|
||||
|
||||
disposables.add(viewModel.getEmojiList().subscribe(pages -> emojiPageView.setList(pages, null)));
|
||||
disposables.add(viewModel.getCategories().subscribe(categoriesAdapter::submitList));
|
||||
disposables.add(viewModel.getSelectedKey().subscribe(key -> categoriesRecycler.post(() -> {
|
||||
int index = categoriesAdapter.indexOfFirst(EmojiKeyboardPageCategoryMappingModel.class, m -> m.getKey().equals(key));
|
||||
|
||||
if (index != -1) {
|
||||
categoriesRecycler.smoothScrollToPosition(index);
|
||||
}
|
||||
})));
|
||||
if (requireArguments().getBoolean(ARG_EDIT, false)) {
|
||||
View customizeReactions = tabBar.findViewById(R.id.customize_reactions_frame);
|
||||
customizeReactions.setVisibility(View.VISIBLE);
|
||||
customizeReactions.setOnClickListener(v -> startActivity(new Intent(requireContext(), EditReactionsActivity.class)));
|
||||
}
|
||||
|
||||
container.addView(tabBar);
|
||||
|
||||
emojiPageView.addOnScrollListener(new TopAndBottomShadowHelper(requireView().findViewById(R.id.react_with_any_emoji_top_shadow),
|
||||
tabBar.findViewById(R.id.react_with_any_emoji_bottom_shadow)));
|
||||
|
||||
disposables.add(viewModel.getEmojiList().subscribe(pages -> emojiPageView.setList(pages, null)));
|
||||
disposables.add(viewModel.getCategories().subscribe(categoriesAdapter::submitList));
|
||||
disposables.add(viewModel.getSelectedKey().subscribe(key -> categoriesRecycler.post(() -> {
|
||||
int index = categoriesAdapter.indexOfFirst(EmojiKeyboardPageCategoryMappingModel.class, m -> m.getKey().equals(key));
|
||||
|
||||
if (index != -1) {
|
||||
categoriesRecycler.smoothScrollToPosition(index);
|
||||
}
|
||||
})));
|
||||
|
||||
search.setCallbacks(new SearchCallbacks());
|
||||
}
|
||||
|
||||
private void scrollTo(@NonNull String key) {
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/tab_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
|
|
Ładowanie…
Reference in New Issue