195 lines
9.7 KiB
Java
195 lines
9.7 KiB
Java
package com.discord.widgets.channels.memberlist;
|
|
|
|
import android.content.Context;
|
|
import android.os.Bundle;
|
|
import android.view.View;
|
|
import androidx.fragment.app.FragmentViewModelLazyKt;
|
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
import c.a.d.h0;
|
|
import c.a.d.j0;
|
|
import com.discord.app.AppFragment;
|
|
import com.discord.utilities.rx.ObservableExtensionsKt;
|
|
import com.discord.utilities.views.StickyHeaderItemDecoration;
|
|
import com.discord.widgets.channels.memberlist.WidgetChannelMembersListViewModel;
|
|
import com.discord.widgets.channels.memberlist.adapter.ChannelMembersListAdapter;
|
|
import d0.d0.f;
|
|
import d0.g;
|
|
import d0.z.d.a0;
|
|
import d0.z.d.m;
|
|
import java.util.Objects;
|
|
import java.util.concurrent.TimeUnit;
|
|
import kotlin.Lazy;
|
|
import kotlin.Unit;
|
|
import kotlin.jvm.functions.Function0;
|
|
import kotlin.jvm.functions.Function1;
|
|
import kotlin.jvm.internal.DefaultConstructorMarker;
|
|
import kotlin.ranges.IntRange;
|
|
import rx.Observable;
|
|
import rx.subjects.PublishSubject;
|
|
/* compiled from: WidgetChannelMembersList.kt */
|
|
public final class WidgetChannelMembersList extends AppFragment {
|
|
public static final Companion Companion = new Companion(null);
|
|
private static final String SOURCE = "WidgetChannelMembersList";
|
|
private ChannelMembersListAdapter adapter;
|
|
private int memberCellHeightPx;
|
|
private final Lazy recycler$delegate = g.lazy(new WidgetChannelMembersList$recycler$2(this));
|
|
private final RxOnScrollListener scrollListener = new RxOnScrollListener();
|
|
private final Lazy viewModel$delegate;
|
|
|
|
/* compiled from: WidgetChannelMembersList.kt */
|
|
public static final class Companion {
|
|
private Companion() {
|
|
}
|
|
|
|
public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) {
|
|
this();
|
|
}
|
|
}
|
|
|
|
/* compiled from: WidgetChannelMembersList.kt */
|
|
public static final class RxOnScrollListener extends RecyclerView.OnScrollListener {
|
|
private final PublishSubject<Unit> scrollYSubject = PublishSubject.k0();
|
|
|
|
public final Observable<Unit> observeScrollChanges() {
|
|
PublishSubject<Unit> publishSubject = this.scrollYSubject;
|
|
m.checkNotNullExpressionValue(publishSubject, "scrollYSubject");
|
|
return publishSubject;
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.OnScrollListener
|
|
public void onScrolled(RecyclerView recyclerView, int i, int i2) {
|
|
m.checkNotNullParameter(recyclerView, "recyclerView");
|
|
super.onScrolled(recyclerView, i, i2);
|
|
PublishSubject<Unit> publishSubject = this.scrollYSubject;
|
|
publishSubject.j.onNext(Unit.a);
|
|
}
|
|
}
|
|
|
|
public WidgetChannelMembersList() {
|
|
super(2131558875);
|
|
WidgetChannelMembersList$viewModel$2 widgetChannelMembersList$viewModel$2 = WidgetChannelMembersList$viewModel$2.INSTANCE;
|
|
h0 h0Var = new h0(this);
|
|
this.viewModel$delegate = FragmentViewModelLazyKt.createViewModelLazy(this, a0.getOrCreateKotlinClass(WidgetChannelMembersListViewModel.class), new WidgetChannelMembersList$appViewModels$$inlined$viewModels$1(h0Var), new j0(widgetChannelMembersList$viewModel$2));
|
|
}
|
|
|
|
public static final /* synthetic */ void access$configureUI(WidgetChannelMembersList widgetChannelMembersList, WidgetChannelMembersListViewModel.ViewState viewState) {
|
|
widgetChannelMembersList.configureUI(viewState);
|
|
}
|
|
|
|
public static final /* synthetic */ void access$scrollToTop(WidgetChannelMembersList widgetChannelMembersList) {
|
|
widgetChannelMembersList.scrollToTop();
|
|
}
|
|
|
|
public static final /* synthetic */ void access$updateRanges(WidgetChannelMembersList widgetChannelMembersList) {
|
|
widgetChannelMembersList.updateRanges();
|
|
}
|
|
|
|
private final void configureLoadedUI(WidgetChannelMembersListViewModel.ViewState.Loaded loaded) {
|
|
if (loaded.getChannel() != null) {
|
|
ChannelMembersListAdapter channelMembersListAdapter = this.adapter;
|
|
if (channelMembersListAdapter == null) {
|
|
m.throwUninitializedPropertyAccessException("adapter");
|
|
}
|
|
channelMembersListAdapter.setOnUserClicked(new WidgetChannelMembersList$configureLoadedUI$1(this, loaded));
|
|
ChannelMembersListAdapter channelMembersListAdapter2 = this.adapter;
|
|
if (channelMembersListAdapter2 == null) {
|
|
m.throwUninitializedPropertyAccessException("adapter");
|
|
}
|
|
channelMembersListAdapter2.setOnAddMemberClicked(new WidgetChannelMembersList$configureLoadedUI$2(this, loaded));
|
|
}
|
|
ChannelMembersListAdapter channelMembersListAdapter3 = this.adapter;
|
|
if (channelMembersListAdapter3 == null) {
|
|
m.throwUninitializedPropertyAccessException("adapter");
|
|
}
|
|
channelMembersListAdapter3.setData(loaded.getListItems().getListId(), loaded.getListItems(), true);
|
|
}
|
|
|
|
private final void configureUI(WidgetChannelMembersListViewModel.ViewState viewState) {
|
|
if (!m.areEqual(viewState, WidgetChannelMembersListViewModel.ViewState.Empty.INSTANCE) && (viewState instanceof WidgetChannelMembersListViewModel.ViewState.Loaded)) {
|
|
configureLoadedUI((WidgetChannelMembersListViewModel.ViewState.Loaded) viewState);
|
|
}
|
|
}
|
|
|
|
private final RecyclerView getRecycler() {
|
|
return (RecyclerView) this.recycler$delegate.getValue();
|
|
}
|
|
|
|
private final WidgetChannelMembersListViewModel getViewModel() {
|
|
return (WidgetChannelMembersListViewModel) this.viewModel$delegate.getValue();
|
|
}
|
|
|
|
private final void scrollToTop() {
|
|
getRecycler().scrollToPosition(0);
|
|
}
|
|
|
|
private final void setupRecyclerView() {
|
|
this.memberCellHeightPx = getResources().getDimensionPixelSize(2131165307);
|
|
getRecycler().setHasFixedSize(true);
|
|
getRecycler().removeOnScrollListener(this.scrollListener);
|
|
getRecycler().addOnScrollListener(this.scrollListener);
|
|
ChannelMembersListAdapter channelMembersListAdapter = this.adapter;
|
|
if (channelMembersListAdapter == null) {
|
|
m.throwUninitializedPropertyAccessException("adapter");
|
|
}
|
|
StickyHeaderItemDecoration stickyHeaderItemDecoration = new StickyHeaderItemDecoration(channelMembersListAdapter);
|
|
getRecycler().addItemDecoration(stickyHeaderItemDecoration);
|
|
stickyHeaderItemDecoration.blockClicks(getRecycler());
|
|
RecyclerView recycler = getRecycler();
|
|
ChannelMembersListAdapter channelMembersListAdapter2 = this.adapter;
|
|
if (channelMembersListAdapter2 == null) {
|
|
m.throwUninitializedPropertyAccessException("adapter");
|
|
}
|
|
recycler.setAdapter(channelMembersListAdapter2);
|
|
}
|
|
|
|
private final void updateRanges() {
|
|
View view = getView();
|
|
if (view != null) {
|
|
int height = (view.getHeight() / this.memberCellHeightPx) + 1;
|
|
RecyclerView.LayoutManager layoutManager = getRecycler().getLayoutManager();
|
|
Objects.requireNonNull(layoutManager, "null cannot be cast to non-null type androidx.recyclerview.widget.LinearLayoutManager");
|
|
LinearLayoutManager linearLayoutManager = (LinearLayoutManager) layoutManager;
|
|
getViewModel().updateSubscriptionsForChannel(new IntRange(f.coerceAtLeast(linearLayoutManager.findFirstVisibleItemPosition() - height, 0), linearLayoutManager.findLastVisibleItemPosition() + height));
|
|
}
|
|
}
|
|
|
|
@Override // androidx.fragment.app.Fragment
|
|
public void onCreate(Bundle bundle) {
|
|
super.onCreate(bundle);
|
|
ChannelMembersListAdapter channelMembersListAdapter = new ChannelMembersListAdapter();
|
|
this.adapter = channelMembersListAdapter;
|
|
if (channelMembersListAdapter == null) {
|
|
m.throwUninitializedPropertyAccessException("adapter");
|
|
}
|
|
channelMembersListAdapter.setHasStableIds(true);
|
|
}
|
|
|
|
@Override // androidx.fragment.app.Fragment
|
|
public void onDestroy() {
|
|
ChannelMembersListAdapter channelMembersListAdapter = this.adapter;
|
|
if (channelMembersListAdapter == null) {
|
|
m.throwUninitializedPropertyAccessException("adapter");
|
|
}
|
|
channelMembersListAdapter.dispose();
|
|
super.onDestroy();
|
|
}
|
|
|
|
@Override // com.discord.app.AppFragment
|
|
public void onViewBound(View view) {
|
|
m.checkNotNullParameter(view, "view");
|
|
super.onViewBound(view);
|
|
setupRecyclerView();
|
|
}
|
|
|
|
@Override // com.discord.app.AppFragment
|
|
public void onViewBoundOrOnResume() {
|
|
super.onViewBoundOrOnResume();
|
|
ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.bindToComponentLifecycle(getViewModel().observeViewState(), this), WidgetChannelMembersList.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new WidgetChannelMembersList$onViewBoundOrOnResume$1(this), 62, (Object) null);
|
|
ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.bindToComponentLifecycle(getViewModel().observeEvents(), this), WidgetChannelMembersList.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new WidgetChannelMembersList$onViewBoundOrOnResume$2(this), 62, (Object) null);
|
|
Observable<Unit> o = this.scrollListener.observeScrollChanges().o(100, TimeUnit.MILLISECONDS);
|
|
m.checkNotNullExpressionValue(o, "scrollListener\n .…S, TimeUnit.MILLISECONDS)");
|
|
ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.ui$default(o, this, null, 2, null), WidgetChannelMembersList.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new WidgetChannelMembersList$onViewBoundOrOnResume$3(this), 62, (Object) null);
|
|
}
|
|
}
|