344 lines
17 KiB
Java
344 lines
17 KiB
Java
package com.discord.widgets.chat.overlay;
|
|
|
|
import a0.a.a.b;
|
|
import android.content.Context;
|
|
import android.content.res.Resources;
|
|
import android.graphics.drawable.Drawable;
|
|
import android.widget.ImageView;
|
|
import android.widget.LinearLayout;
|
|
import android.widget.RelativeLayout;
|
|
import android.widget.TextView;
|
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
|
import androidx.fragment.app.Fragment;
|
|
import androidx.fragment.app.FragmentViewModelLazyKt;
|
|
import b.a.d.e0;
|
|
import b.a.i.s4;
|
|
import b.d.b.a.a;
|
|
import com.discord.R;
|
|
import com.discord.api.sticker.Sticker;
|
|
import com.discord.app.AppFragment;
|
|
import com.discord.databinding.WidgetChatOverlayBinding;
|
|
import com.discord.stores.StoreStream;
|
|
import com.discord.utilities.rx.ObservableExtensionsKt;
|
|
import com.discord.utilities.search.SearchUtils;
|
|
import com.discord.utilities.time.TimeUtils;
|
|
import com.discord.utilities.view.extensions.ViewExtensions;
|
|
import com.discord.utilities.viewbinding.FragmentViewBindingDelegate;
|
|
import com.discord.utilities.viewbinding.FragmentViewBindingDelegateKt;
|
|
import com.discord.views.sticker.StickerView;
|
|
import com.discord.views.typing.TypingDots;
|
|
import com.discord.widgets.chat.input.AppFlexInputViewModel;
|
|
import com.discord.widgets.chat.input.ChatInputViewModel;
|
|
import com.discord.widgets.chat.overlay.ChatTypingModel;
|
|
import com.lytefast.flexinput.viewmodel.FlexInputState;
|
|
import d0.g0.t;
|
|
import d0.t.n;
|
|
import d0.t.u;
|
|
import d0.z.d.a0;
|
|
import d0.z.d.m;
|
|
import java.util.List;
|
|
import kotlin.Lazy;
|
|
import kotlin.Pair;
|
|
import kotlin.jvm.functions.Function0;
|
|
import kotlin.jvm.functions.Function1;
|
|
import kotlin.jvm.internal.DefaultConstructorMarker;
|
|
import kotlin.reflect.KProperty;
|
|
import rx.Observable;
|
|
/* compiled from: WidgetChatOverlay.kt */
|
|
public final class WidgetChatOverlay extends AppFragment {
|
|
public static final /* synthetic */ KProperty[] $$delegatedProperties = {a.b0(WidgetChatOverlay.class, "binding", "getBinding()Lcom/discord/databinding/WidgetChatOverlayBinding;", 0)};
|
|
private final FragmentViewBindingDelegate binding$delegate = FragmentViewBindingDelegateKt.viewBinding$default(this, WidgetChatOverlay$binding$2.INSTANCE, null, 2, null);
|
|
private final Lazy chatInputViewModel$delegate = FragmentViewModelLazyKt.createViewModelLazy(this, a0.getOrCreateKotlinClass(ChatInputViewModel.class), new WidgetChatOverlay$appActivityViewModels$$inlined$activityViewModels$3(this), new e0(WidgetChatOverlay$chatInputViewModel$2.INSTANCE));
|
|
private final Lazy flexInputViewModel$delegate = FragmentViewModelLazyKt.createViewModelLazy(this, a0.getOrCreateKotlinClass(AppFlexInputViewModel.class), new WidgetChatOverlay$appActivityViewModels$$inlined$activityViewModels$1(this), new e0(new WidgetChatOverlay$flexInputViewModel$2(this)));
|
|
private TypingIndicatorViewHolder typingIndicatorViewHolder;
|
|
|
|
/* compiled from: WidgetChatOverlay.kt */
|
|
public static final class OldMessageModel {
|
|
public static final Companion Companion = new Companion(null);
|
|
private final long channelId;
|
|
private final boolean isViewingOldMessages;
|
|
|
|
/* compiled from: WidgetChatOverlay.kt */
|
|
public static final class Companion {
|
|
private Companion() {
|
|
}
|
|
|
|
public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) {
|
|
this();
|
|
}
|
|
|
|
public final Observable<OldMessageModel> get() {
|
|
Observable<R> Y = StoreStream.Companion.getChannelsSelected().observeId().q().Y(WidgetChatOverlay$OldMessageModel$Companion$get$1.INSTANCE);
|
|
m.checkNotNullExpressionValue(Y, "StoreStream\n … }\n }");
|
|
return Y;
|
|
}
|
|
}
|
|
|
|
public OldMessageModel(long j, boolean z2) {
|
|
this.channelId = j;
|
|
this.isViewingOldMessages = z2;
|
|
}
|
|
|
|
public static /* synthetic */ OldMessageModel copy$default(OldMessageModel oldMessageModel, long j, boolean z2, int i, Object obj) {
|
|
if ((i & 1) != 0) {
|
|
j = oldMessageModel.channelId;
|
|
}
|
|
if ((i & 2) != 0) {
|
|
z2 = oldMessageModel.isViewingOldMessages;
|
|
}
|
|
return oldMessageModel.copy(j, z2);
|
|
}
|
|
|
|
public final long component1() {
|
|
return this.channelId;
|
|
}
|
|
|
|
public final boolean component2() {
|
|
return this.isViewingOldMessages;
|
|
}
|
|
|
|
public final OldMessageModel copy(long j, boolean z2) {
|
|
return new OldMessageModel(j, z2);
|
|
}
|
|
|
|
public boolean equals(Object obj) {
|
|
if (this == obj) {
|
|
return true;
|
|
}
|
|
if (!(obj instanceof OldMessageModel)) {
|
|
return false;
|
|
}
|
|
OldMessageModel oldMessageModel = (OldMessageModel) obj;
|
|
return this.channelId == oldMessageModel.channelId && this.isViewingOldMessages == oldMessageModel.isViewingOldMessages;
|
|
}
|
|
|
|
public final long getChannelId() {
|
|
return this.channelId;
|
|
}
|
|
|
|
public int hashCode() {
|
|
int a = b.a(this.channelId) * 31;
|
|
boolean z2 = this.isViewingOldMessages;
|
|
if (z2) {
|
|
z2 = true;
|
|
}
|
|
int i = z2 ? 1 : 0;
|
|
int i2 = z2 ? 1 : 0;
|
|
int i3 = z2 ? 1 : 0;
|
|
return a + i;
|
|
}
|
|
|
|
public final boolean isViewingOldMessages() {
|
|
return this.isViewingOldMessages;
|
|
}
|
|
|
|
public String toString() {
|
|
StringBuilder R = a.R("OldMessageModel(channelId=");
|
|
R.append(this.channelId);
|
|
R.append(", isViewingOldMessages=");
|
|
return a.L(R, this.isViewingOldMessages, ")");
|
|
}
|
|
}
|
|
|
|
/* compiled from: WidgetChatOverlay.kt */
|
|
public static final class TypingIndicatorViewHolder {
|
|
private final WidgetChatOverlayBinding binding;
|
|
|
|
public TypingIndicatorViewHolder(WidgetChatOverlayBinding widgetChatOverlayBinding) {
|
|
m.checkNotNullParameter(widgetChatOverlayBinding, "binding");
|
|
this.binding = widgetChatOverlayBinding;
|
|
}
|
|
|
|
private final void configureTyping(ChatTypingModel.Typing typing) {
|
|
int i = 8;
|
|
if (!typing.getTypingUsers().isEmpty() || typing.getChannelRateLimit() > 0) {
|
|
RelativeLayout relativeLayout = this.binding.c;
|
|
m.checkNotNullExpressionValue(relativeLayout, "binding.chatOverlayTyping");
|
|
relativeLayout.setVisibility(0);
|
|
ConstraintLayout constraintLayout = this.binding.a;
|
|
m.checkNotNullExpressionValue(constraintLayout, "binding.root");
|
|
Resources resources = constraintLayout.getResources();
|
|
m.checkNotNullExpressionValue(resources, "binding.root.resources");
|
|
CharSequence typingString = getTypingString(resources, typing.getTypingUsers());
|
|
boolean z2 = true;
|
|
CharSequence slowmodeText = getSlowmodeText(typing.getCooldownSecs(), typing.getChannelRateLimit(), !t.isBlank(typingString));
|
|
TextView textView = this.binding.g;
|
|
m.checkNotNullExpressionValue(textView, "binding.chatTypingUsersTyping");
|
|
ViewExtensions.setTextAndVisibilityBy(textView, typingString);
|
|
TypingDots typingDots = this.binding.d;
|
|
m.checkNotNullExpressionValue(typingDots, "binding.chatOverlayTypingDots");
|
|
typingDots.setVisibility(typing.getTypingUsers().isEmpty() ^ true ? 0 : 8);
|
|
TypingDots typingDots2 = this.binding.d;
|
|
if (!typing.getTypingUsers().isEmpty()) {
|
|
int i2 = TypingDots.j;
|
|
typingDots2.a(false);
|
|
} else {
|
|
typingDots2.b();
|
|
}
|
|
TextView textView2 = this.binding.e;
|
|
m.checkNotNullExpressionValue(textView2, "binding.chatTypingUsersSlowmode");
|
|
ViewExtensions.setTextAndVisibilityBy(textView2, slowmodeText);
|
|
ImageView imageView = this.binding.f;
|
|
m.checkNotNullExpressionValue(imageView, "binding.chatTypingUsersSlowmodeIcon");
|
|
if (typing.getChannelRateLimit() <= 0) {
|
|
z2 = false;
|
|
}
|
|
if (z2) {
|
|
i = 0;
|
|
}
|
|
imageView.setVisibility(i);
|
|
return;
|
|
}
|
|
this.binding.d.b();
|
|
RelativeLayout relativeLayout2 = this.binding.c;
|
|
m.checkNotNullExpressionValue(relativeLayout2, "binding.chatOverlayTyping");
|
|
relativeLayout2.setVisibility(8);
|
|
}
|
|
|
|
private final CharSequence getSlowmodeText(int i, int i2, boolean z2) {
|
|
if (i > 0) {
|
|
return TimeUtils.toFriendlyStringSimple$default(TimeUtils.INSTANCE, 1000 * ((long) i), null, null, 6, null);
|
|
}
|
|
if (i2 <= 0 || z2) {
|
|
return "";
|
|
}
|
|
ConstraintLayout constraintLayout = this.binding.a;
|
|
m.checkNotNullExpressionValue(constraintLayout, "binding.root");
|
|
String string = constraintLayout.getResources().getString(R.string.channel_slowmode_desc_short);
|
|
m.checkNotNullExpressionValue(string, "binding.root.resources.g…nnel_slowmode_desc_short)");
|
|
return string;
|
|
}
|
|
|
|
private final CharSequence getTypingString(Resources resources, List<? extends CharSequence> list) {
|
|
int size = list.size();
|
|
return size != 0 ? size != 1 ? size != 2 ? size != 3 ? b.a.k.b.i(resources, R.string.several_users_typing, new Object[0], null, 4) : b.a.k.b.i(resources, R.string.three_users_typing, new Object[]{list.get(0), list.get(1), list.get(2)}, null, 4) : b.a.k.b.i(resources, R.string.two_users_typing, new Object[]{list.get(0), list.get(1)}, null, 4) : b.a.k.b.i(resources, R.string.one_user_typing, new Object[]{list.get(0)}, null, 4) : "";
|
|
}
|
|
|
|
public final void configureUI(ChatTypingModel chatTypingModel) {
|
|
m.checkNotNullParameter(chatTypingModel, "model");
|
|
if (chatTypingModel instanceof ChatTypingModel.Hide) {
|
|
RelativeLayout relativeLayout = this.binding.c;
|
|
m.checkNotNullExpressionValue(relativeLayout, "binding.chatOverlayTyping");
|
|
relativeLayout.setVisibility(8);
|
|
} else if (chatTypingModel instanceof ChatTypingModel.Typing) {
|
|
configureTyping((ChatTypingModel.Typing) chatTypingModel);
|
|
}
|
|
}
|
|
}
|
|
|
|
public WidgetChatOverlay() {
|
|
super(R.layout.widget_chat_overlay);
|
|
}
|
|
|
|
public static final /* synthetic */ void access$configureStickerSuggestions(WidgetChatOverlay widgetChatOverlay, Pair pair) {
|
|
widgetChatOverlay.configureStickerSuggestions(pair);
|
|
}
|
|
|
|
public static final /* synthetic */ WidgetChatOverlayBinding access$getBinding$p(WidgetChatOverlay widgetChatOverlay) {
|
|
return widgetChatOverlay.getBinding();
|
|
}
|
|
|
|
public static final /* synthetic */ ChatInputViewModel access$getChatInputViewModel$p(WidgetChatOverlay widgetChatOverlay) {
|
|
return widgetChatOverlay.getChatInputViewModel();
|
|
}
|
|
|
|
public static final /* synthetic */ AppFlexInputViewModel access$getFlexInputViewModel$p(WidgetChatOverlay widgetChatOverlay) {
|
|
return widgetChatOverlay.getFlexInputViewModel();
|
|
}
|
|
|
|
public static final /* synthetic */ TypingIndicatorViewHolder access$getTypingIndicatorViewHolder$p(WidgetChatOverlay widgetChatOverlay) {
|
|
TypingIndicatorViewHolder typingIndicatorViewHolder = widgetChatOverlay.typingIndicatorViewHolder;
|
|
if (typingIndicatorViewHolder == null) {
|
|
m.throwUninitializedPropertyAccessException("typingIndicatorViewHolder");
|
|
}
|
|
return typingIndicatorViewHolder;
|
|
}
|
|
|
|
public static final /* synthetic */ void access$setTypingIndicatorViewHolder$p(WidgetChatOverlay widgetChatOverlay, TypingIndicatorViewHolder typingIndicatorViewHolder) {
|
|
widgetChatOverlay.typingIndicatorViewHolder = typingIndicatorViewHolder;
|
|
}
|
|
|
|
private final void configureStickerSuggestions(Pair<Boolean, FlexInputState> pair) {
|
|
boolean booleanValue = pair.component1().booleanValue();
|
|
FlexInputState component2 = pair.component2();
|
|
if (!component2.i || booleanValue) {
|
|
s4 s4Var = getBinding().h;
|
|
m.checkNotNullExpressionValue(s4Var, "binding.stickersSuggestions");
|
|
LinearLayout linearLayout = s4Var.a;
|
|
m.checkNotNullExpressionValue(linearLayout, "binding.stickersSuggestions.root");
|
|
linearLayout.setVisibility(8);
|
|
return;
|
|
}
|
|
List take = u.take(getFlexInputViewModel().getMatchingStickers(component2.a), 4);
|
|
boolean z2 = SearchUtils.INSTANCE.getQueriesFromSearchText(component2.a).size() == 1;
|
|
if (take == null || take.isEmpty()) {
|
|
s4 s4Var2 = getBinding().h;
|
|
m.checkNotNullExpressionValue(s4Var2, "binding.stickersSuggestions");
|
|
LinearLayout linearLayout2 = s4Var2.a;
|
|
m.checkNotNullExpressionValue(linearLayout2, "binding.stickersSuggestions.root");
|
|
linearLayout2.setVisibility(8);
|
|
return;
|
|
}
|
|
StoreStream.Companion.getExpressionSuggestions().trackExpressionSuggestionsDisplayed(component2.a);
|
|
s4 s4Var3 = getBinding().h;
|
|
m.checkNotNullExpressionValue(s4Var3, "binding.stickersSuggestions");
|
|
LinearLayout linearLayout3 = s4Var3.a;
|
|
m.checkNotNullExpressionValue(linearLayout3, "binding.stickersSuggestions.root");
|
|
linearLayout3.setVisibility(0);
|
|
int i = 0;
|
|
for (Object obj : n.listOf((Object[]) new StickerView[]{getBinding().h.f194b, getBinding().h.c, getBinding().h.d, getBinding().h.e})) {
|
|
int i2 = i + 1;
|
|
if (i < 0) {
|
|
n.throwIndexOverflow();
|
|
}
|
|
StickerView stickerView = (StickerView) obj;
|
|
Sticker sticker = i < take.size() ? (Sticker) take.get(i) : null;
|
|
m.checkNotNullExpressionValue(stickerView, "stickerView");
|
|
stickerView.setVisibility(sticker != null ? 0 : 8);
|
|
if (sticker != null) {
|
|
StickerView.e(stickerView, sticker, null, 2);
|
|
stickerView.setOnClickListener(new WidgetChatOverlay$configureStickerSuggestions$$inlined$forEachIndexed$lambda$1(sticker, stickerView, sticker, this, take, z2));
|
|
}
|
|
i = i2;
|
|
}
|
|
}
|
|
|
|
private final WidgetChatOverlayBinding getBinding() {
|
|
return (WidgetChatOverlayBinding) this.binding$delegate.getValue((Fragment) this, $$delegatedProperties[0]);
|
|
}
|
|
|
|
private final ChatInputViewModel getChatInputViewModel() {
|
|
return (ChatInputViewModel) this.chatInputViewModel$delegate.getValue();
|
|
}
|
|
|
|
private final AppFlexInputViewModel getFlexInputViewModel() {
|
|
return (AppFlexInputViewModel) this.flexInputViewModel$delegate.getValue();
|
|
}
|
|
|
|
@Override // com.discord.app.AppFragment
|
|
public void onViewBoundOrOnResume() {
|
|
super.onViewBoundOrOnResume();
|
|
WidgetChatOverlayBinding binding = getBinding();
|
|
m.checkNotNullExpressionValue(binding, "binding");
|
|
this.typingIndicatorViewHolder = new TypingIndicatorViewHolder(binding);
|
|
s4 s4Var = getBinding().h;
|
|
m.checkNotNullExpressionValue(s4Var, "binding.stickersSuggestions");
|
|
LinearLayout linearLayout = s4Var.a;
|
|
m.checkNotNullExpressionValue(linearLayout, "binding.stickersSuggestions.root");
|
|
Drawable background = linearLayout.getBackground();
|
|
m.checkNotNullExpressionValue(background, "binding.stickersSuggestions.root.background");
|
|
background.setAlpha(216);
|
|
getBinding().h.f.setOnClickListener(WidgetChatOverlay$onViewBoundOrOnResume$1.INSTANCE);
|
|
getBinding().f2314b.setOnClickListener(WidgetChatOverlay$onViewBoundOrOnResume$2.INSTANCE);
|
|
Observable<OldMessageModel> q = OldMessageModel.Companion.get().q();
|
|
m.checkNotNullExpressionValue(q, "OldMessageModel.get()\n … .distinctUntilChanged()");
|
|
ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.ui$default(ObservableExtensionsKt.computationLatest(q), this, null, 2, null), WidgetChatOverlay.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new WidgetChatOverlay$onViewBoundOrOnResume$3(this), 62, (Object) null);
|
|
Observable q2 = ObservableExtensionsKt.computationLatest(ChatTypingModel.Companion.get()).q();
|
|
m.checkNotNullExpressionValue(q2, "ChatTypingModel\n … .distinctUntilChanged()");
|
|
ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.ui$default(q2, this, null, 2, null), WidgetChatOverlay.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new WidgetChatOverlay$onViewBoundOrOnResume$4(this), 62, (Object) null);
|
|
Observable j = Observable.j(StoreStream.Companion.getAutocomplete().observeAutocompleteVisibility().q(), getFlexInputViewModel().observeState().q(), WidgetChatOverlay$onViewBoundOrOnResume$5.INSTANCE);
|
|
m.checkNotNullExpressionValue(j, "Observable.combineLatest…isible, flexInputState) }");
|
|
ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.ui$default(j, this, null, 2, null), WidgetChatOverlay.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new WidgetChatOverlay$onViewBoundOrOnResume$6(this), 62, (Object) null);
|
|
}
|
|
}
|