697 lines
38 KiB
Java
697 lines
38 KiB
Java
package com.discord.widgets.chat.input.emoji;
|
|
|
|
import android.content.Context;
|
|
import android.content.res.ColorStateList;
|
|
import android.os.Build;
|
|
import android.os.Bundle;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.ImageView;
|
|
import android.widget.TextView;
|
|
import androidx.appcompat.widget.Toolbar;
|
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
|
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
|
import androidx.core.content.ContextCompat;
|
|
import androidx.core.view.ViewCompat;
|
|
import androidx.fragment.app.Fragment;
|
|
import androidx.fragment.app.FragmentManager;
|
|
import androidx.fragment.app.FragmentViewModelLazyKt;
|
|
import androidx.recyclerview.widget.GridLayoutManager;
|
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
import c.a.a.e.a;
|
|
import c.a.d.g0;
|
|
import c.a.k.b;
|
|
import c.d.b.a.a;
|
|
import com.discord.app.AppFragment;
|
|
import com.discord.app.AppViewFlipper;
|
|
import com.discord.databinding.WidgetEmojiPickerBinding;
|
|
import com.discord.models.domain.emoji.Emoji;
|
|
import com.discord.utilities.KotlinExtensionsKt;
|
|
import com.discord.utilities.analytics.AnalyticsTracker;
|
|
import com.discord.utilities.color.ColorCompat;
|
|
import com.discord.utilities.dimen.DimenUtils;
|
|
import com.discord.utilities.press.RepeatingOnTouchListener;
|
|
import com.discord.utilities.recycler.SelfHealingLinearLayoutManager;
|
|
import com.discord.utilities.rx.LeadingEdgeThrottle;
|
|
import com.discord.utilities.rx.ObservableExtensionsKt;
|
|
import com.discord.utilities.view.text.TextWatcherKt;
|
|
import com.discord.utilities.viewbinding.FragmentViewBindingDelegate;
|
|
import com.discord.utilities.viewbinding.FragmentViewBindingDelegateKt;
|
|
import com.discord.utilities.views.StickyHeaderItemDecoration;
|
|
import com.discord.widgets.chat.input.OnBackspacePressedListener;
|
|
import com.discord.widgets.chat.input.emoji.EmojiCategoryItem;
|
|
import com.discord.widgets.chat.input.emoji.EmojiPickerViewModel;
|
|
import com.discord.widgets.chat.input.emoji.WidgetEmojiAdapter;
|
|
import com.discord.widgets.settings.premium.WidgetSettingsPremium;
|
|
import com.google.android.material.appbar.AppBarLayout;
|
|
import com.google.android.material.textfield.TextInputEditText;
|
|
import d0.z.d.a0;
|
|
import d0.z.d.m;
|
|
import j0.l.a.r;
|
|
import java.io.Serializable;
|
|
import java.util.List;
|
|
import java.util.Objects;
|
|
import java.util.concurrent.TimeUnit;
|
|
import kotlin.Lazy;
|
|
import kotlin.NoWhenBranchMatchedException;
|
|
import kotlin.Pair;
|
|
import kotlin.Unit;
|
|
import kotlin.jvm.functions.Function0;
|
|
import kotlin.jvm.functions.Function1;
|
|
import kotlin.jvm.internal.DefaultConstructorMarker;
|
|
import kotlin.ranges.IntRange;
|
|
import kotlin.reflect.KProperty;
|
|
import rx.Observable;
|
|
import rx.subjects.PublishSubject;
|
|
/* compiled from: WidgetEmojiPicker.kt */
|
|
public final class WidgetEmojiPicker extends AppFragment implements OnEmojiSelectedListener {
|
|
public static final /* synthetic */ KProperty[] $$delegatedProperties = {a.V(WidgetEmojiPicker.class, "binding", "getBinding()Lcom/discord/databinding/WidgetEmojiPickerBinding;", 0)};
|
|
public static final Companion Companion = new Companion(null);
|
|
private static final int EMOJI_PICKER_VIEW_FLIPPER_EMPTY_STATE = 1;
|
|
private static final int EMOJI_PICKER_VIEW_FLIPPER_RESULTS = 0;
|
|
private final FragmentViewBindingDelegate binding$delegate = FragmentViewBindingDelegateKt.viewBinding$default(this, WidgetEmojiPicker$binding$2.INSTANCE, null, 2, null);
|
|
private EmojiCategoryAdapter categoryAdapter;
|
|
private LinearLayoutManager categoryLayoutManager;
|
|
private WidgetEmojiAdapter emojiAdapter;
|
|
private final PublishSubject<Unit> emojiCategoryScrollSubject = PublishSubject.k0();
|
|
private EmojiPickerListener emojiPickerListener;
|
|
private EmojiPickerMode emojiPickerMode;
|
|
private boolean isNextCategoryScrollSmooth = true;
|
|
private OnBackspacePressedListener onBackspacePressedListener;
|
|
private Function0<Unit> onEmojiSearchOpenedListener;
|
|
private EmojiPickerViewModel.ViewState previousViewState;
|
|
private boolean restoredSearchQueryFromViewModel;
|
|
private final Lazy viewModelForInline$delegate = FragmentViewModelLazyKt.createViewModelLazy(this, a0.getOrCreateKotlinClass(EmojiPickerViewModel.Inline.class), new WidgetEmojiPicker$appActivityViewModels$$inlined$activityViewModels$1(this), new g0(new WidgetEmojiPicker$viewModelForInline$2(this)));
|
|
private final Lazy viewModelForSheet$delegate = FragmentViewModelLazyKt.createViewModelLazy(this, a0.getOrCreateKotlinClass(EmojiPickerViewModel.Sheet.class), new WidgetEmojiPicker$appActivityViewModels$$inlined$activityViewModels$3(this), new g0(new WidgetEmojiPicker$viewModelForSheet$2(this)));
|
|
|
|
/* compiled from: WidgetEmojiPicker.kt */
|
|
public static final class Companion {
|
|
private Companion() {
|
|
}
|
|
|
|
public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) {
|
|
this();
|
|
}
|
|
}
|
|
|
|
public WidgetEmojiPicker() {
|
|
super(2131559013);
|
|
}
|
|
|
|
public static final /* synthetic */ void access$checkUpsellHeaderVisibility(WidgetEmojiPicker widgetEmojiPicker, RecyclerView recyclerView) {
|
|
widgetEmojiPicker.checkUpsellHeaderVisibility(recyclerView);
|
|
}
|
|
|
|
public static final /* synthetic */ void access$configureUI(WidgetEmojiPicker widgetEmojiPicker, EmojiPickerViewModel.ViewState viewState) {
|
|
widgetEmojiPicker.configureUI(viewState);
|
|
}
|
|
|
|
public static final /* synthetic */ void access$configureUnicodeCategoriesShortcutButton(WidgetEmojiPicker widgetEmojiPicker, EmojiPickerViewModel.ViewState viewState) {
|
|
widgetEmojiPicker.configureUnicodeCategoriesShortcutButton(viewState);
|
|
}
|
|
|
|
public static final /* synthetic */ int access$getAdditionalBottomPaddingPx(WidgetEmojiPicker widgetEmojiPicker) {
|
|
return widgetEmojiPicker.getAdditionalBottomPaddingPx();
|
|
}
|
|
|
|
public static final /* synthetic */ WidgetEmojiPickerBinding access$getBinding$p(WidgetEmojiPicker widgetEmojiPicker) {
|
|
return widgetEmojiPicker.getBinding();
|
|
}
|
|
|
|
public static final /* synthetic */ PublishSubject access$getEmojiCategoryScrollSubject$p(WidgetEmojiPicker widgetEmojiPicker) {
|
|
return widgetEmojiPicker.emojiCategoryScrollSubject;
|
|
}
|
|
|
|
public static final /* synthetic */ EmojiPickerContextType access$getEmojiPickerContextType$p(WidgetEmojiPicker widgetEmojiPicker) {
|
|
return widgetEmojiPicker.getEmojiPickerContextType();
|
|
}
|
|
|
|
public static final /* synthetic */ EmojiPickerListener access$getEmojiPickerListener$p(WidgetEmojiPicker widgetEmojiPicker) {
|
|
return widgetEmojiPicker.emojiPickerListener;
|
|
}
|
|
|
|
public static final /* synthetic */ EmojiPickerMode access$getEmojiPickerMode$p(WidgetEmojiPicker widgetEmojiPicker) {
|
|
return widgetEmojiPicker.emojiPickerMode;
|
|
}
|
|
|
|
public static final /* synthetic */ OnBackspacePressedListener access$getOnBackspacePressedListener$p(WidgetEmojiPicker widgetEmojiPicker) {
|
|
return widgetEmojiPicker.onBackspacePressedListener;
|
|
}
|
|
|
|
public static final /* synthetic */ Function0 access$getOnEmojiSearchOpenedListener$p(WidgetEmojiPicker widgetEmojiPicker) {
|
|
return widgetEmojiPicker.onEmojiSearchOpenedListener;
|
|
}
|
|
|
|
public static final /* synthetic */ EmojiPickerViewModel.ViewState access$getPreviousViewState$p(WidgetEmojiPicker widgetEmojiPicker) {
|
|
return widgetEmojiPicker.previousViewState;
|
|
}
|
|
|
|
public static final /* synthetic */ EmojiPickerViewModel access$getViewModel$p(WidgetEmojiPicker widgetEmojiPicker) {
|
|
return widgetEmojiPicker.getViewModel();
|
|
}
|
|
|
|
public static final /* synthetic */ void access$handleEvent(WidgetEmojiPicker widgetEmojiPicker, EmojiPickerViewModel.Event event) {
|
|
widgetEmojiPicker.handleEvent(event);
|
|
}
|
|
|
|
public static final /* synthetic */ void access$handleInputChanged(WidgetEmojiPicker widgetEmojiPicker, String str) {
|
|
widgetEmojiPicker.handleInputChanged(str);
|
|
}
|
|
|
|
public static final /* synthetic */ void access$handleNewEmojiRecyclerScrollPosition(WidgetEmojiPicker widgetEmojiPicker, int i, List list) {
|
|
widgetEmojiPicker.handleNewEmojiRecyclerScrollPosition(i, list);
|
|
}
|
|
|
|
public static final /* synthetic */ boolean access$isNextCategoryScrollSmooth$p(WidgetEmojiPicker widgetEmojiPicker) {
|
|
return widgetEmojiPicker.isNextCategoryScrollSmooth;
|
|
}
|
|
|
|
public static final /* synthetic */ void access$launchBottomSheet(WidgetEmojiPicker widgetEmojiPicker) {
|
|
widgetEmojiPicker.launchBottomSheet();
|
|
}
|
|
|
|
public static final /* synthetic */ void access$onCategoryClicked(WidgetEmojiPicker widgetEmojiPicker, EmojiCategoryItem emojiCategoryItem) {
|
|
widgetEmojiPicker.onCategoryClicked(emojiCategoryItem);
|
|
}
|
|
|
|
public static final /* synthetic */ void access$onPremiumCtaClicked(WidgetEmojiPicker widgetEmojiPicker) {
|
|
widgetEmojiPicker.onPremiumCtaClicked();
|
|
}
|
|
|
|
public static final /* synthetic */ void access$onSelectedCategoryAdapterPositionUpdated(WidgetEmojiPicker widgetEmojiPicker, int i) {
|
|
widgetEmojiPicker.onSelectedCategoryAdapterPositionUpdated(i);
|
|
}
|
|
|
|
public static final /* synthetic */ void access$setEmojiPickerListener$p(WidgetEmojiPicker widgetEmojiPicker, EmojiPickerListener emojiPickerListener) {
|
|
widgetEmojiPicker.emojiPickerListener = emojiPickerListener;
|
|
}
|
|
|
|
public static final /* synthetic */ void access$setEmojiPickerMode$p(WidgetEmojiPicker widgetEmojiPicker, EmojiPickerMode emojiPickerMode) {
|
|
widgetEmojiPicker.emojiPickerMode = emojiPickerMode;
|
|
}
|
|
|
|
public static final /* synthetic */ void access$setNextCategoryScrollSmooth$p(WidgetEmojiPicker widgetEmojiPicker, boolean z2) {
|
|
widgetEmojiPicker.isNextCategoryScrollSmooth = z2;
|
|
}
|
|
|
|
public static final /* synthetic */ void access$setOnBackspacePressedListener$p(WidgetEmojiPicker widgetEmojiPicker, OnBackspacePressedListener onBackspacePressedListener) {
|
|
widgetEmojiPicker.onBackspacePressedListener = onBackspacePressedListener;
|
|
}
|
|
|
|
public static final /* synthetic */ void access$setOnEmojiSearchOpenedListener$p(WidgetEmojiPicker widgetEmojiPicker, Function0 function0) {
|
|
widgetEmojiPicker.onEmojiSearchOpenedListener = function0;
|
|
}
|
|
|
|
public static final /* synthetic */ void access$setPreviousViewState$p(WidgetEmojiPicker widgetEmojiPicker, EmojiPickerViewModel.ViewState viewState) {
|
|
widgetEmojiPicker.previousViewState = viewState;
|
|
}
|
|
|
|
private final void checkUpsellHeaderVisibility(RecyclerView recyclerView) {
|
|
RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
|
|
Objects.requireNonNull(layoutManager, "null cannot be cast to non-null type androidx.recyclerview.widget.GridLayoutManager");
|
|
GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager;
|
|
int findFirstCompletelyVisibleItemPosition = gridLayoutManager.findFirstCompletelyVisibleItemPosition();
|
|
int findLastCompletelyVisibleItemPosition = gridLayoutManager.findLastCompletelyVisibleItemPosition();
|
|
if (findLastCompletelyVisibleItemPosition >= findFirstCompletelyVisibleItemPosition) {
|
|
while (true) {
|
|
RecyclerView.ViewHolder findViewHolderForAdapterPosition = recyclerView.findViewHolderForAdapterPosition(findLastCompletelyVisibleItemPosition);
|
|
WidgetEmojiAdapter.HeaderItem.StringHeaderItem stringHeaderItem = null;
|
|
if (!(findViewHolderForAdapterPosition instanceof WidgetEmojiAdapter.HeaderViewHolder)) {
|
|
findViewHolderForAdapterPosition = null;
|
|
}
|
|
WidgetEmojiAdapter.HeaderViewHolder headerViewHolder = (WidgetEmojiAdapter.HeaderViewHolder) findViewHolderForAdapterPosition;
|
|
if (headerViewHolder != null) {
|
|
WidgetEmojiAdapter.HeaderItem boundItem = headerViewHolder.getBoundItem();
|
|
if (boundItem instanceof WidgetEmojiAdapter.HeaderItem.StringHeaderItem) {
|
|
stringHeaderItem = boundItem;
|
|
}
|
|
WidgetEmojiAdapter.HeaderItem.StringHeaderItem stringHeaderItem2 = stringHeaderItem;
|
|
if (stringHeaderItem2 != null && stringHeaderItem2.getStringRes() == 2131888276) {
|
|
getViewModel().onUpsellHeaderVisible();
|
|
}
|
|
}
|
|
if (findLastCompletelyVisibleItemPosition != findFirstCompletelyVisibleItemPosition) {
|
|
findLastCompletelyVisibleItemPosition--;
|
|
} else {
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private final void configureUI(EmojiPickerViewModel.ViewState viewState) {
|
|
Unit unit;
|
|
String searchQuery = viewState != null ? viewState.getSearchQuery() : null;
|
|
if (!this.restoredSearchQueryFromViewModel && searchQuery != null) {
|
|
this.restoredSearchQueryFromViewModel = true;
|
|
getBinding().m.setText(searchQuery);
|
|
}
|
|
if (viewState != null) {
|
|
if (viewState instanceof EmojiPickerViewModel.ViewState.EmptySearch) {
|
|
AppViewFlipper appViewFlipper = getBinding().f1784c;
|
|
m.checkNotNullExpressionValue(appViewFlipper, "binding.chatInputEmojiPickerViewFlipper");
|
|
appViewFlipper.setDisplayedChild(1);
|
|
setEmojiPickerBottomBarVisible(false);
|
|
unit = Unit.a;
|
|
} else if (viewState instanceof EmojiPickerViewModel.ViewState.Results) {
|
|
EmojiPickerViewModel.ViewState.Results results = (EmojiPickerViewModel.ViewState.Results) viewState;
|
|
setEmojiPickerBottomBarVisible(results.getShowBottomBar());
|
|
AppViewFlipper appViewFlipper2 = getBinding().f1784c;
|
|
m.checkNotNullExpressionValue(appViewFlipper2, "binding.chatInputEmojiPickerViewFlipper");
|
|
appViewFlipper2.setDisplayedChild(0);
|
|
WidgetEmojiAdapter widgetEmojiAdapter = this.emojiAdapter;
|
|
if (widgetEmojiAdapter == null) {
|
|
m.throwUninitializedPropertyAccessException("emojiAdapter");
|
|
}
|
|
widgetEmojiAdapter.setData(results.getResultItems());
|
|
WidgetEmojiAdapter widgetEmojiAdapter2 = this.emojiAdapter;
|
|
if (widgetEmojiAdapter2 == null) {
|
|
m.throwUninitializedPropertyAccessException("emojiAdapter");
|
|
}
|
|
widgetEmojiAdapter2.setOnScrollPositionListener(new WidgetEmojiPicker$configureUI$1(this, viewState));
|
|
EmojiCategoryAdapter emojiCategoryAdapter = this.categoryAdapter;
|
|
if (emojiCategoryAdapter == null) {
|
|
m.throwUninitializedPropertyAccessException("categoryAdapter");
|
|
}
|
|
emojiCategoryAdapter.setItems(results.getCategoryItems());
|
|
configureUnicodeCategoriesShortcutButton(viewState);
|
|
unit = Unit.a;
|
|
} else {
|
|
throw new NoWhenBranchMatchedException();
|
|
}
|
|
KotlinExtensionsKt.getExhaustive(unit);
|
|
this.previousViewState = viewState;
|
|
}
|
|
}
|
|
|
|
private final void configureUnicodeCategoriesShortcutButton(EmojiPickerViewModel.ViewState viewState) {
|
|
if (!(viewState instanceof EmojiPickerViewModel.ViewState.Results)) {
|
|
viewState = null;
|
|
}
|
|
EmojiPickerViewModel.ViewState.Results results = (EmojiPickerViewModel.ViewState.Results) viewState;
|
|
if (results != null) {
|
|
EmojiCategoryItem.StandardItem firstUnicodeEmojiCategoryItem = results.getFirstUnicodeEmojiCategoryItem();
|
|
if (firstUnicodeEmojiCategoryItem != null) {
|
|
getBinding().k.setImageDrawable(ContextCompat.getDrawable(requireContext(), EmojiCategoryViewHolder.Companion.getCategoryIconResId(firstUnicodeEmojiCategoryItem.getEmojiCategory())));
|
|
}
|
|
LinearLayoutManager linearLayoutManager = this.categoryLayoutManager;
|
|
if (linearLayoutManager == null) {
|
|
m.throwUninitializedPropertyAccessException("categoryLayoutManager");
|
|
}
|
|
int findFirstCompletelyVisibleItemPosition = linearLayoutManager.findFirstCompletelyVisibleItemPosition();
|
|
LinearLayoutManager linearLayoutManager2 = this.categoryLayoutManager;
|
|
if (linearLayoutManager2 == null) {
|
|
m.throwUninitializedPropertyAccessException("categoryLayoutManager");
|
|
}
|
|
int findLastCompletelyVisibleItemPosition = linearLayoutManager2.findLastCompletelyVisibleItemPosition();
|
|
if (findFirstCompletelyVisibleItemPosition != -1 && findLastCompletelyVisibleItemPosition != -1) {
|
|
EmojiCategoryAdapter emojiCategoryAdapter = this.categoryAdapter;
|
|
if (emojiCategoryAdapter == null) {
|
|
m.throwUninitializedPropertyAccessException("categoryAdapter");
|
|
}
|
|
if (findLastCompletelyVisibleItemPosition < emojiCategoryAdapter.getItemCount()) {
|
|
EmojiCategoryAdapter emojiCategoryAdapter2 = this.categoryAdapter;
|
|
if (emojiCategoryAdapter2 == null) {
|
|
m.throwUninitializedPropertyAccessException("categoryAdapter");
|
|
}
|
|
EmojiCategoryItem itemAtPosition = emojiCategoryAdapter2.getItemAtPosition(findFirstCompletelyVisibleItemPosition);
|
|
EmojiCategoryAdapter emojiCategoryAdapter3 = this.categoryAdapter;
|
|
if (emojiCategoryAdapter3 == null) {
|
|
m.throwUninitializedPropertyAccessException("categoryAdapter");
|
|
}
|
|
EmojiCategoryItem itemAtPosition2 = emojiCategoryAdapter3.getItemAtPosition(findLastCompletelyVisibleItemPosition);
|
|
boolean z2 = true;
|
|
int i = 0;
|
|
boolean z3 = itemAtPosition.containsOnlyUnicodeEmoji() || itemAtPosition2.containsOnlyUnicodeEmoji();
|
|
ImageView imageView = getBinding().k;
|
|
m.checkNotNullExpressionValue(imageView, "binding.emojiPickerUnicodeEmojiShortcutButton");
|
|
if (z3 || firstUnicodeEmojiCategoryItem == null) {
|
|
z2 = false;
|
|
}
|
|
if (!z2) {
|
|
i = 8;
|
|
}
|
|
imageView.setVisibility(i);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private final int getAdditionalBottomPaddingPx() {
|
|
if (Build.VERSION.SDK_INT >= 29) {
|
|
return DimenUtils.dpToPixels(8);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
private final WidgetEmojiPickerBinding getBinding() {
|
|
return (WidgetEmojiPickerBinding) this.binding$delegate.getValue((Fragment) this, $$delegatedProperties[0]);
|
|
}
|
|
|
|
private final EmojiPickerContextType getEmojiPickerContextType() {
|
|
Bundle arguments = getArguments();
|
|
Serializable serializable = arguments != null ? arguments.getSerializable("EMOJI_PICKER_CONTEXT_TYPE") : null;
|
|
Objects.requireNonNull(serializable, "null cannot be cast to non-null type com.discord.widgets.chat.input.emoji.EmojiPickerContextType");
|
|
return (EmojiPickerContextType) serializable;
|
|
}
|
|
|
|
private final EmojiPickerMode getMode() {
|
|
Bundle arguments = getArguments();
|
|
EmojiPickerMode emojiPickerMode = null;
|
|
Serializable serializable = arguments != null ? arguments.getSerializable("MODE") : null;
|
|
if (serializable instanceof EmojiPickerMode) {
|
|
emojiPickerMode = serializable;
|
|
}
|
|
EmojiPickerMode emojiPickerMode2 = emojiPickerMode;
|
|
return emojiPickerMode2 != null ? emojiPickerMode2 : EmojiPickerMode.INLINE;
|
|
}
|
|
|
|
private final EmojiPickerViewModel getViewModel() {
|
|
return getMode() == EmojiPickerMode.INLINE ? getViewModelForInline() : getViewModelForSheet();
|
|
}
|
|
|
|
private final EmojiPickerViewModel.Inline getViewModelForInline() {
|
|
return (EmojiPickerViewModel.Inline) this.viewModelForInline$delegate.getValue();
|
|
}
|
|
|
|
private final EmojiPickerViewModel.Sheet getViewModelForSheet() {
|
|
return (EmojiPickerViewModel.Sheet) this.viewModelForSheet$delegate.getValue();
|
|
}
|
|
|
|
private final void handleEvent(EmojiPickerViewModel.Event event) {
|
|
Unit unit;
|
|
if (event instanceof EmojiPickerViewModel.Event.ScrollToEmojiListPosition) {
|
|
WidgetEmojiAdapter widgetEmojiAdapter = this.emojiAdapter;
|
|
if (widgetEmojiAdapter == null) {
|
|
m.throwUninitializedPropertyAccessException("emojiAdapter");
|
|
}
|
|
widgetEmojiAdapter.scrollToPosition(((EmojiPickerViewModel.Event.ScrollToEmojiListPosition) event).getPosition());
|
|
unit = Unit.a;
|
|
} else if (event instanceof EmojiPickerViewModel.Event.ShowPremiumUpsellDialog) {
|
|
a.b bVar = c.a.a.e.a.j;
|
|
FragmentManager parentFragmentManager = getParentFragmentManager();
|
|
m.checkNotNullExpressionValue(parentFragmentManager, "parentFragmentManager");
|
|
EmojiPickerViewModel.Event.ShowPremiumUpsellDialog showPremiumUpsellDialog = (EmojiPickerViewModel.Event.ShowPremiumUpsellDialog) event;
|
|
a.b.a(bVar, parentFragmentManager, showPremiumUpsellDialog.getPageNumber(), b.j(this, showPremiumUpsellDialog.getHeader(), new Object[0], null, 4).toString(), b.j(this, showPremiumUpsellDialog.getBody(), new Object[0], null, 4).toString(), null, showPremiumUpsellDialog.getSectionName(), null, null, showPremiumUpsellDialog.getShowOtherPages(), showPremiumUpsellDialog.getShowLearnMore(), 208);
|
|
unit = Unit.a;
|
|
} else {
|
|
throw new NoWhenBranchMatchedException();
|
|
}
|
|
KotlinExtensionsKt.getExhaustive(unit);
|
|
}
|
|
|
|
private final void handleInputChanged(String str) {
|
|
getViewModel().setSearchText(str);
|
|
boolean z2 = str.length() == 0;
|
|
getBinding().l.setImageResource(z2 ? 2131231929 : 2131231536);
|
|
ImageView imageView = getBinding().l;
|
|
m.checkNotNullExpressionValue(imageView, "binding.emojiSearchClear");
|
|
imageView.setImageTintList(z2 ? ColorStateList.valueOf(ColorCompat.getThemedColor(requireContext(), 2130968988)) : ColorStateList.valueOf(ColorCompat.getThemedColor(requireContext(), 2130968989)));
|
|
if (z2) {
|
|
ImageView imageView2 = getBinding().l;
|
|
m.checkNotNullExpressionValue(imageView2, "binding.emojiSearchClear");
|
|
imageView2.setContentDescription(b.j(this, 2131893249, new Object[0], null, 4));
|
|
ImageView imageView3 = getBinding().l;
|
|
m.checkNotNullExpressionValue(imageView3, "binding.emojiSearchClear");
|
|
imageView3.setImportantForAccessibility(2);
|
|
return;
|
|
}
|
|
ImageView imageView4 = getBinding().l;
|
|
m.checkNotNullExpressionValue(imageView4, "binding.emojiSearchClear");
|
|
imageView4.setContentDescription(b.j(this, 2131892817, new Object[0], null, 4));
|
|
ImageView imageView5 = getBinding().l;
|
|
m.checkNotNullExpressionValue(imageView5, "binding.emojiSearchClear");
|
|
imageView5.setImportantForAccessibility(1);
|
|
}
|
|
|
|
private final void handleNewEmojiRecyclerScrollPosition(int i, List<? extends EmojiCategoryItem> list) {
|
|
for (EmojiCategoryItem emojiCategoryItem : list) {
|
|
Pair<Integer, Integer> categoryRange = emojiCategoryItem.getCategoryRange();
|
|
int intValue = categoryRange.getFirst().intValue();
|
|
int intValue2 = categoryRange.getSecond().intValue();
|
|
if (intValue <= i && intValue2 > i && !emojiCategoryItem.isSelected()) {
|
|
selectCategoryByItemId(emojiCategoryItem.getStableId());
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
private final void initializeInputButtons() {
|
|
int i = 0;
|
|
boolean z2 = this.emojiPickerMode == EmojiPickerMode.INLINE;
|
|
ImageView imageView = getBinding().f;
|
|
m.checkNotNullExpressionValue(imageView, "binding.emojiPickerBackspaceIcon");
|
|
if (!z2) {
|
|
i = 8;
|
|
}
|
|
imageView.setVisibility(i);
|
|
getBinding().k.setOnClickListener(new WidgetEmojiPicker$initializeInputButtons$1(this));
|
|
getBinding().f.setOnTouchListener(new RepeatingOnTouchListener(250, 50, TimeUnit.MILLISECONDS, new WidgetEmojiPicker$initializeInputButtons$2(this), new WidgetEmojiPicker$initializeInputButtons$3(this)));
|
|
}
|
|
|
|
private final void initializeSearchBar() {
|
|
AppBarLayout appBarLayout = getBinding().d;
|
|
m.checkNotNullExpressionValue(appBarLayout, "binding.emojiAppBar");
|
|
EmojiPickerMode emojiPickerMode = this.emojiPickerMode;
|
|
EmojiPickerMode emojiPickerMode2 = EmojiPickerMode.INLINE;
|
|
boolean z2 = true;
|
|
int i = 0;
|
|
appBarLayout.setVisibility(emojiPickerMode != emojiPickerMode2 ? 0 : 8);
|
|
TextView textView = getBinding().e;
|
|
m.checkNotNullExpressionValue(textView, "binding.emojiInlineSearchButton");
|
|
textView.setVisibility(this.emojiPickerMode == emojiPickerMode2 ? 0 : 8);
|
|
TextInputEditText textInputEditText = getBinding().m;
|
|
m.checkNotNullExpressionValue(textInputEditText, "binding.emojiSearchInput");
|
|
if (this.emojiPickerMode == emojiPickerMode2) {
|
|
z2 = false;
|
|
}
|
|
if (!z2) {
|
|
i = 8;
|
|
}
|
|
textInputEditText.setVisibility(i);
|
|
getBinding().e.setOnClickListener(new WidgetEmojiPicker$initializeSearchBar$1(this));
|
|
getBinding().l.setOnClickListener(new WidgetEmojiPicker$initializeSearchBar$2(this));
|
|
TextInputEditText textInputEditText2 = getBinding().m;
|
|
m.checkNotNullExpressionValue(textInputEditText2, "binding.emojiSearchInput");
|
|
TextWatcherKt.addLifecycleAwareTextWatcher(textInputEditText2, this, new WidgetEmojiPicker$initializeSearchBar$3(this));
|
|
if (this.emojiPickerMode == EmojiPickerMode.BOTTOM_SHEET) {
|
|
getBinding().m.requestFocus();
|
|
TextInputEditText textInputEditText3 = getBinding().m;
|
|
m.checkNotNullExpressionValue(textInputEditText3, "binding.emojiSearchInput");
|
|
showKeyboard(textInputEditText3);
|
|
}
|
|
}
|
|
|
|
private final void launchBottomSheet() {
|
|
FragmentManager parentFragmentManager = getParentFragmentManager();
|
|
m.checkNotNullExpressionValue(parentFragmentManager, "parentFragmentManager");
|
|
EmojiPickerNavigator.launchBottomSheet$default(parentFragmentManager, this.emojiPickerListener, getEmojiPickerContextType(), null, 8, null);
|
|
}
|
|
|
|
private final void onCategoryClicked(EmojiCategoryItem emojiCategoryItem) {
|
|
if (emojiCategoryItem instanceof EmojiCategoryItem.GuildItem) {
|
|
AnalyticsTracker.INSTANCE.emojiCategorySelected(((EmojiCategoryItem.GuildItem) emojiCategoryItem).getGuild().getId());
|
|
}
|
|
selectCategoryByItemId(emojiCategoryItem.getStableId());
|
|
Pair<Integer, Integer> categoryRange = emojiCategoryItem.getCategoryRange();
|
|
WidgetEmojiAdapter widgetEmojiAdapter = this.emojiAdapter;
|
|
if (widgetEmojiAdapter == null) {
|
|
m.throwUninitializedPropertyAccessException("emojiAdapter");
|
|
}
|
|
widgetEmojiAdapter.scrollToPosition(categoryRange.getFirst().intValue());
|
|
}
|
|
|
|
private final void onPremiumCtaClicked() {
|
|
WidgetSettingsPremium.Companion.launch$default(WidgetSettingsPremium.Companion, requireContext(), null, null, 6, null);
|
|
}
|
|
|
|
private final void onSelectedCategoryAdapterPositionUpdated(int i) {
|
|
LinearLayoutManager linearLayoutManager = this.categoryLayoutManager;
|
|
if (linearLayoutManager == null) {
|
|
m.throwUninitializedPropertyAccessException("categoryLayoutManager");
|
|
}
|
|
int findFirstCompletelyVisibleItemPosition = linearLayoutManager.findFirstCompletelyVisibleItemPosition();
|
|
LinearLayoutManager linearLayoutManager2 = this.categoryLayoutManager;
|
|
if (linearLayoutManager2 == null) {
|
|
m.throwUninitializedPropertyAccessException("categoryLayoutManager");
|
|
}
|
|
int findLastCompletelyVisibleItemPosition = linearLayoutManager2.findLastCompletelyVisibleItemPosition();
|
|
int i2 = findLastCompletelyVisibleItemPosition - findFirstCompletelyVisibleItemPosition;
|
|
if (!new IntRange(findFirstCompletelyVisibleItemPosition, findLastCompletelyVisibleItemPosition).contains(i)) {
|
|
int max = Math.max(i < findFirstCompletelyVisibleItemPosition ? i - i2 : i + i2, 0);
|
|
EmojiCategoryAdapter emojiCategoryAdapter = this.categoryAdapter;
|
|
if (emojiCategoryAdapter == null) {
|
|
m.throwUninitializedPropertyAccessException("categoryAdapter");
|
|
}
|
|
int min = Math.min(max, emojiCategoryAdapter.getItemCount() - 1);
|
|
if (this.isNextCategoryScrollSmooth) {
|
|
getBinding().i.smoothScrollToPosition(min);
|
|
return;
|
|
}
|
|
getBinding().i.scrollToPosition(min);
|
|
this.isNextCategoryScrollSmooth = true;
|
|
}
|
|
}
|
|
|
|
private final void selectCategoryByItemId(long j) {
|
|
getViewModel().setSelectedCategoryItemId(j);
|
|
}
|
|
|
|
private final void setEmojiPickerBottomBarVisible(boolean z2) {
|
|
ConstraintLayout constraintLayout = getBinding().g;
|
|
m.checkNotNullExpressionValue(constraintLayout, "binding.emojiPickerBottomBar");
|
|
int i = 8;
|
|
int i2 = 0;
|
|
constraintLayout.setVisibility(z2 ? 0 : 8);
|
|
View view = getBinding().h;
|
|
m.checkNotNullExpressionValue(view, "binding.emojiPickerBottomBarDivider");
|
|
if (z2) {
|
|
i = 0;
|
|
}
|
|
view.setVisibility(i);
|
|
RecyclerView recyclerView = getBinding().b;
|
|
m.checkNotNullExpressionValue(recyclerView, "binding.chatInputEmojiPickerRecycler");
|
|
ViewGroup.LayoutParams layoutParams = recyclerView.getLayoutParams();
|
|
Objects.requireNonNull(layoutParams, "null cannot be cast to non-null type android.view.ViewGroup.MarginLayoutParams");
|
|
ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) layoutParams;
|
|
if (z2) {
|
|
i2 = getResources().getDimensionPixelSize(2131165433);
|
|
}
|
|
marginLayoutParams.setMargins(marginLayoutParams.leftMargin, marginLayoutParams.topMargin, marginLayoutParams.rightMargin, i2);
|
|
recyclerView.setLayoutParams(marginLayoutParams);
|
|
}
|
|
|
|
private final void setUpCategoryRecycler() {
|
|
RecyclerView recyclerView = getBinding().i;
|
|
m.checkNotNullExpressionValue(recyclerView, "binding.emojiPickerCategoryRecycler");
|
|
recyclerView.setItemAnimator(null);
|
|
EmojiCategoryAdapter emojiCategoryAdapter = new EmojiCategoryAdapter(new WidgetEmojiPicker$setUpCategoryRecycler$1(this), new WidgetEmojiPicker$setUpCategoryRecycler$2(this), this, null, 8, null);
|
|
this.categoryAdapter = emojiCategoryAdapter;
|
|
if (emojiCategoryAdapter == null) {
|
|
m.throwUninitializedPropertyAccessException("categoryAdapter");
|
|
}
|
|
emojiCategoryAdapter.setHasStableIds(true);
|
|
RecyclerView recyclerView2 = getBinding().i;
|
|
m.checkNotNullExpressionValue(recyclerView2, "binding.emojiPickerCategoryRecycler");
|
|
EmojiCategoryAdapter emojiCategoryAdapter2 = this.categoryAdapter;
|
|
if (emojiCategoryAdapter2 == null) {
|
|
m.throwUninitializedPropertyAccessException("categoryAdapter");
|
|
}
|
|
recyclerView2.setAdapter(emojiCategoryAdapter2);
|
|
RecyclerView recyclerView3 = getBinding().i;
|
|
m.checkNotNullExpressionValue(recyclerView3, "binding.emojiPickerCategoryRecycler");
|
|
EmojiCategoryAdapter emojiCategoryAdapter3 = this.categoryAdapter;
|
|
if (emojiCategoryAdapter3 == null) {
|
|
m.throwUninitializedPropertyAccessException("categoryAdapter");
|
|
}
|
|
this.categoryLayoutManager = new SelfHealingLinearLayoutManager(recyclerView3, emojiCategoryAdapter3, 0, false, 8, null);
|
|
RecyclerView recyclerView4 = getBinding().i;
|
|
m.checkNotNullExpressionValue(recyclerView4, "binding.emojiPickerCategoryRecycler");
|
|
LinearLayoutManager linearLayoutManager = this.categoryLayoutManager;
|
|
if (linearLayoutManager == null) {
|
|
m.throwUninitializedPropertyAccessException("categoryLayoutManager");
|
|
}
|
|
recyclerView4.setLayoutManager(linearLayoutManager);
|
|
getBinding().i.addOnScrollListener(new WidgetEmojiPicker$setUpCategoryRecycler$3(this));
|
|
}
|
|
|
|
private final void setUpEmojiRecycler() {
|
|
RecyclerView recyclerView = getBinding().b;
|
|
m.checkNotNullExpressionValue(recyclerView, "binding.chatInputEmojiPickerRecycler");
|
|
recyclerView.setItemAnimator(null);
|
|
RecyclerView recyclerView2 = getBinding().b;
|
|
m.checkNotNullExpressionValue(recyclerView2, "binding.chatInputEmojiPickerRecycler");
|
|
FragmentManager parentFragmentManager = getParentFragmentManager();
|
|
m.checkNotNullExpressionValue(parentFragmentManager, "parentFragmentManager");
|
|
WidgetEmojiAdapter widgetEmojiAdapter = new WidgetEmojiAdapter(recyclerView2, parentFragmentManager, this, new WidgetEmojiPicker$setUpEmojiRecycler$1(this), new WidgetEmojiPicker$setUpEmojiRecycler$2(this));
|
|
this.emojiAdapter = widgetEmojiAdapter;
|
|
if (widgetEmojiAdapter == null) {
|
|
m.throwUninitializedPropertyAccessException("emojiAdapter");
|
|
}
|
|
StickyHeaderItemDecoration stickyHeaderItemDecoration = new StickyHeaderItemDecoration(widgetEmojiAdapter);
|
|
getBinding().b.addItemDecoration(stickyHeaderItemDecoration);
|
|
RecyclerView recyclerView3 = getBinding().b;
|
|
m.checkNotNullExpressionValue(recyclerView3, "binding.chatInputEmojiPickerRecycler");
|
|
stickyHeaderItemDecoration.blockClicks(recyclerView3);
|
|
getBinding().b.setHasFixedSize(true);
|
|
getBinding().b.addOnScrollListener(new WidgetEmojiPicker$setUpEmojiRecycler$3(this));
|
|
}
|
|
|
|
private final void setWindowInsetsListeners() {
|
|
ViewCompat.setOnApplyWindowInsetsListener(getBinding().j, new WidgetEmojiPicker$setWindowInsetsListeners$1(this));
|
|
}
|
|
|
|
private final void subscribeToCategoryRecyclerScrolls() {
|
|
PublishSubject<Unit> publishSubject = this.emojiCategoryScrollSubject;
|
|
Observable h02 = Observable.h0(new r(publishSubject.i, new LeadingEdgeThrottle(250, TimeUnit.MILLISECONDS)));
|
|
m.checkNotNullExpressionValue(h02, "emojiCategoryScrollSubje…, TimeUnit.MILLISECONDS))");
|
|
ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.ui$default(h02, this, null, 2, null), WidgetEmojiPicker.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new WidgetEmojiPicker$subscribeToCategoryRecyclerScrolls$1(this), 62, (Object) null);
|
|
}
|
|
|
|
public final void clearSearchInput() {
|
|
getViewModel().setSearchText("");
|
|
}
|
|
|
|
@Override // androidx.fragment.app.Fragment
|
|
public void onCreate(Bundle bundle) {
|
|
super.onCreate(bundle);
|
|
this.emojiPickerMode = getMode();
|
|
}
|
|
|
|
@Override // com.discord.widgets.chat.input.emoji.OnEmojiSelectedListener
|
|
public void onEmojiSelected(Emoji emoji) {
|
|
m.checkNotNullParameter(emoji, "emoji");
|
|
getViewModel().onEmojiSelected(emoji, new WidgetEmojiPicker$onEmojiSelected$1(this));
|
|
}
|
|
|
|
@Override // com.discord.app.AppFragment
|
|
public void onViewBound(View view) {
|
|
m.checkNotNullParameter(view, "view");
|
|
super.onViewBound(view);
|
|
CoordinatorLayout coordinatorLayout = getBinding().j;
|
|
m.checkNotNullExpressionValue(coordinatorLayout, "binding.emojiPickerContainer");
|
|
coordinatorLayout.setPadding(coordinatorLayout.getPaddingLeft(), coordinatorLayout.getPaddingTop(), coordinatorLayout.getPaddingRight(), getAdditionalBottomPaddingPx());
|
|
EmojiPickerMode mode = getMode();
|
|
EmojiPickerMode emojiPickerMode = EmojiPickerMode.INLINE;
|
|
if (mode == emojiPickerMode) {
|
|
setWindowInsetsListeners();
|
|
}
|
|
initializeInputButtons();
|
|
initializeSearchBar();
|
|
Toolbar toolbar = getBinding().n;
|
|
m.checkNotNullExpressionValue(toolbar, "binding.emojiToolbar");
|
|
ViewGroup.LayoutParams layoutParams = toolbar.getLayoutParams();
|
|
Objects.requireNonNull(layoutParams, "null cannot be cast to non-null type com.google.android.material.appbar.AppBarLayout.LayoutParams");
|
|
((AppBarLayout.LayoutParams) layoutParams).setScrollFlags(this.emojiPickerMode == emojiPickerMode ? 5 : 0);
|
|
setUpEmojiRecycler();
|
|
setUpCategoryRecycler();
|
|
}
|
|
|
|
@Override // com.discord.app.AppFragment
|
|
public void onViewBoundOrOnResume() {
|
|
super.onViewBoundOrOnResume();
|
|
ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.bindToComponentLifecycle(getViewModel().observeViewState(), this), WidgetEmojiPicker.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new WidgetEmojiPicker$onViewBoundOrOnResume$1(this), 62, (Object) null);
|
|
ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.bindToComponentLifecycle(getViewModel().observeEvents(), this), WidgetEmojiPicker.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new WidgetEmojiPicker$onViewBoundOrOnResume$2(this), 62, (Object) null);
|
|
subscribeToCategoryRecyclerScrolls();
|
|
}
|
|
|
|
public final void scrollToTop() {
|
|
WidgetEmojiAdapter widgetEmojiAdapter = this.emojiAdapter;
|
|
if (widgetEmojiAdapter == null) {
|
|
m.throwUninitializedPropertyAccessException("emojiAdapter");
|
|
}
|
|
if (widgetEmojiAdapter.getItemCount() > 0) {
|
|
getBinding().b.scrollToPosition(0);
|
|
}
|
|
}
|
|
|
|
public final void setListener(EmojiPickerListener emojiPickerListener) {
|
|
this.emojiPickerListener = emojiPickerListener;
|
|
}
|
|
|
|
public final void setOnBackspacePressedListener(OnBackspacePressedListener onBackspacePressedListener) {
|
|
this.onBackspacePressedListener = onBackspacePressedListener;
|
|
}
|
|
}
|