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.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) {
|
||||||
|
|
|
@ -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"
|
||||||
|
|
Ładowanie…
Reference in New Issue