Fix crash when recreating conversation react with any emoji fragment.

fork-5.53.8
Alex Hart 2022-03-11 09:44:47 -04:00
rodzic b7afe4411e
commit aeb568bcf4
2 zmienionych plików z 34 dodań i 39 usunięć

Wyświetl plik

@ -41,9 +41,9 @@ import org.thoughtcrime.securesms.keyboard.emoji.EmojiKeyboardPageCategoryMappin
import org.thoughtcrime.securesms.keyboard.emoji.KeyboardPageSearchView; import org.thoughtcrime.securesms.keyboard.emoji.KeyboardPageSearchView;
import org.thoughtcrime.securesms.reactions.edit.EditReactionsActivity; import org.thoughtcrime.securesms.reactions.edit.EditReactionsActivity;
import org.thoughtcrime.securesms.util.LifecycleDisposable; 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.TextSecurePreferences;
import org.thoughtcrime.securesms.util.ViewUtil; import org.thoughtcrime.securesms.util.ViewUtil;
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel;
import java.util.Optional; import java.util.Optional;
@ -196,50 +196,44 @@ public final class ReactWithAnyEmojiBottomSheetDialogFragment extends BottomShee
emojiPageView.addOnScrollListener(categoryUpdateOnScroll); emojiPageView.addOnScrollListener(categoryUpdateOnScroll);
search = view.findViewById(R.id.react_with_any_emoji_search); search = view.findViewById(R.id.react_with_any_emoji_search);
search.setCallbacks(new SearchCallbacks());
initializeViewModel(); initializeViewModel();
}
@Override EmojiKeyboardPageCategoriesAdapter categoriesAdapter = new EmojiKeyboardPageCategoriesAdapter(key -> {
public void onActivityCreated(@Nullable Bundle savedInstanceState) { scrollTo(key);
super.onActivityCreated(savedInstanceState); viewModel.selectPage(key);
});
if (savedInstanceState == null) { FrameLayout container = requireDialog().findViewById(R.id.container);
EmojiKeyboardPageCategoriesAdapter categoriesAdapter = new EmojiKeyboardPageCategoriesAdapter(key -> { tabBar = LayoutInflater.from(requireContext())
scrollTo(key); .inflate(R.layout.react_with_any_emoji_tabs,
viewModel.selectPage(key); container,
}); false);
RecyclerView categoriesRecycler = tabBar.findViewById(R.id.emoji_categories_recycler);
categoriesRecycler.setAdapter(categoriesAdapter);
FrameLayout container = requireDialog().findViewById(R.id.container); if (requireArguments().getBoolean(ARG_EDIT, false)) {
tabBar = LayoutInflater.from(requireContext()) View customizeReactions = tabBar.findViewById(R.id.customize_reactions_frame);
.inflate(R.layout.react_with_any_emoji_tabs, customizeReactions.setVisibility(View.VISIBLE);
container, customizeReactions.setOnClickListener(v -> startActivity(new Intent(requireContext(), EditReactionsActivity.class)));
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);
}
})));
} }
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) { private void scrollTo(@NonNull String key) {

Wyświetl plik

@ -2,6 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tab_bar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="bottom" android:layout_gravity="bottom"