312 lines
17 KiB
Java
312 lines
17 KiB
Java
package com.discord.widgets.tabs;
|
|
|
|
import android.animation.ValueAnimator;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.FrameLayout;
|
|
import androidx.core.view.ViewCompat;
|
|
import androidx.fragment.app.Fragment;
|
|
import androidx.fragment.app.FragmentContainerView;
|
|
import androidx.fragment.app.FragmentManager;
|
|
import androidx.fragment.app.FragmentViewModelLazyKt;
|
|
import androidx.interpolator.view.animation.FastOutSlowInInterpolator;
|
|
import c.a.d.f0;
|
|
import c.a.d.h0;
|
|
import c.d.b.a.a;
|
|
import com.discord.R;
|
|
import com.discord.app.AppFragment;
|
|
import com.discord.databinding.WidgetTabsHostBinding;
|
|
import com.discord.utilities.analytics.AnalyticsTracker;
|
|
import com.discord.utilities.auth.GoogleSmartLockManager;
|
|
import com.discord.utilities.color.ColorCompat;
|
|
import com.discord.utilities.rx.ObservableExtensionsKt;
|
|
import com.discord.utilities.view.extensions.ViewExtensions;
|
|
import com.discord.utilities.viewbinding.FragmentViewBindingDelegate;
|
|
import com.discord.utilities.viewbinding.FragmentViewBindingDelegateKt;
|
|
import com.discord.widgets.quickmentions.WidgetQuickMentionsDialog;
|
|
import com.discord.widgets.stage.discovery.StageDiscoveryUsersFeatureFlag;
|
|
import com.discord.widgets.status.WidgetGlobalStatusIndicatorState;
|
|
import com.discord.widgets.tabs.TabsHostViewModel;
|
|
import com.discord.widgets.user.WidgetUserStatusSheet;
|
|
import com.discord.widgets.user.search.WidgetGlobalSearchDialog;
|
|
import d0.z.d.a0;
|
|
import d0.z.d.m;
|
|
import java.util.LinkedHashMap;
|
|
import java.util.Map;
|
|
import java.util.Objects;
|
|
import kotlin.Lazy;
|
|
import kotlin.jvm.functions.Function0;
|
|
import kotlin.jvm.functions.Function1;
|
|
import kotlin.jvm.internal.DefaultConstructorMarker;
|
|
import kotlin.reflect.KProperty;
|
|
import rx.Observable;
|
|
/* compiled from: WidgetTabsHost.kt */
|
|
public final class WidgetTabsHost extends AppFragment {
|
|
public static final /* synthetic */ KProperty[] $$delegatedProperties = {a.W(WidgetTabsHost.class, "binding", "getBinding()Lcom/discord/databinding/WidgetTabsHostBinding;", 0)};
|
|
private static final long BOTTOM_TABS_DOWNWARD_ANIMATION_DURATION_MS = 200;
|
|
private static final long BOTTOM_TABS_UPWARD_ANIMATION_DURATION_MS = 250;
|
|
public static final Companion Companion = new Companion(null);
|
|
private final FragmentViewBindingDelegate binding$delegate = FragmentViewBindingDelegateKt.viewBinding$default(this, WidgetTabsHost$binding$2.INSTANCE, null, 2, null);
|
|
private ValueAnimator bottomNavAnimator;
|
|
private final WidgetGlobalStatusIndicatorState globalStatusIndicatorStateObserver = WidgetGlobalStatusIndicatorState.Provider.get();
|
|
private int previousBottomNavHeight;
|
|
private Boolean previousShowBottomNav;
|
|
private final Map<NavigationTab, OnTabSelectedListener> tabToTabSelectionListenerMap = new LinkedHashMap();
|
|
private final Lazy viewModel$delegate;
|
|
private TabsHostViewModel.ViewState viewState;
|
|
|
|
/* compiled from: WidgetTabsHost.kt */
|
|
public static final class Companion {
|
|
private Companion() {
|
|
}
|
|
|
|
public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) {
|
|
this();
|
|
}
|
|
}
|
|
|
|
public WidgetTabsHost() {
|
|
super(R.layout.widget_tabs_host);
|
|
WidgetTabsHost$viewModel$2 widgetTabsHost$viewModel$2 = WidgetTabsHost$viewModel$2.INSTANCE;
|
|
f0 f0Var = new f0(this);
|
|
this.viewModel$delegate = FragmentViewModelLazyKt.createViewModelLazy(this, a0.getOrCreateKotlinClass(TabsHostViewModel.class), new WidgetTabsHost$appViewModels$$inlined$viewModels$1(f0Var), new h0(widgetTabsHost$viewModel$2));
|
|
}
|
|
|
|
public static final /* synthetic */ WidgetTabsHostBinding access$getBinding$p(WidgetTabsHost widgetTabsHost) {
|
|
return widgetTabsHost.getBinding();
|
|
}
|
|
|
|
public static final /* synthetic */ TabsHostViewModel access$getViewModel$p(WidgetTabsHost widgetTabsHost) {
|
|
return widgetTabsHost.getViewModel();
|
|
}
|
|
|
|
public static final /* synthetic */ void access$handleEvent(WidgetTabsHost widgetTabsHost, TabsHostViewModel.Event event) {
|
|
widgetTabsHost.handleEvent(event);
|
|
}
|
|
|
|
public static final /* synthetic */ void access$onSearchClick(WidgetTabsHost widgetTabsHost) {
|
|
widgetTabsHost.onSearchClick();
|
|
}
|
|
|
|
public static final /* synthetic */ void access$onSettingsLongPress(WidgetTabsHost widgetTabsHost) {
|
|
widgetTabsHost.onSettingsLongPress();
|
|
}
|
|
|
|
public static final /* synthetic */ void access$setPanelWindowInsetsListeners(WidgetTabsHost widgetTabsHost, boolean z2) {
|
|
widgetTabsHost.setPanelWindowInsetsListeners(z2);
|
|
}
|
|
|
|
public static final /* synthetic */ void access$updateViews(WidgetTabsHost widgetTabsHost, TabsHostViewModel.ViewState viewState) {
|
|
widgetTabsHost.updateViews(viewState);
|
|
}
|
|
|
|
private final void configureSystemStatusBar() {
|
|
int themedColor = ColorCompat.getThemedColor(this, (int) R.attr.colorBackgroundTertiary);
|
|
ColorCompat.setStatusBarColor$default((Fragment) this, themedColor, false, 4, (Object) null);
|
|
ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.bindToComponentLifecycle(this.globalStatusIndicatorStateObserver.observeState(), this), WidgetTabsHost.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new WidgetTabsHost$configureSystemStatusBar$1(this, themedColor), 62, (Object) null);
|
|
}
|
|
|
|
private final WidgetTabsHostBinding getBinding() {
|
|
return (WidgetTabsHostBinding) this.binding$delegate.getValue((Fragment) this, $$delegatedProperties[0]);
|
|
}
|
|
|
|
private final TabsHostViewModel getViewModel() {
|
|
return (TabsHostViewModel) this.viewModel$delegate.getValue();
|
|
}
|
|
|
|
private final void handleEvent(TabsHostViewModel.Event event) {
|
|
if (m.areEqual(event, TabsHostViewModel.Event.TrackFriendsListShown.INSTANCE)) {
|
|
handleFriendsListShown();
|
|
} else if (!m.areEqual(event, TabsHostViewModel.Event.DismissSearchDialog.INSTANCE)) {
|
|
} else {
|
|
if (StageDiscoveryUsersFeatureFlag.Companion.getINSTANCE().canAccessStageDiscovery()) {
|
|
WidgetQuickMentionsDialog.Companion companion = WidgetQuickMentionsDialog.Companion;
|
|
FragmentManager parentFragmentManager = getParentFragmentManager();
|
|
m.checkNotNullExpressionValue(parentFragmentManager, "parentFragmentManager");
|
|
companion.dismiss(parentFragmentManager);
|
|
return;
|
|
}
|
|
WidgetGlobalSearchDialog.Companion companion2 = WidgetGlobalSearchDialog.Companion;
|
|
FragmentManager parentFragmentManager2 = getParentFragmentManager();
|
|
m.checkNotNullExpressionValue(parentFragmentManager2, "parentFragmentManager");
|
|
companion2.dismiss(parentFragmentManager2);
|
|
}
|
|
}
|
|
|
|
private final void handleFriendsListShown() {
|
|
AnalyticsTracker.INSTANCE.friendsListViewed();
|
|
}
|
|
|
|
private final void navigateToTab(NavigationTab navigationTab) {
|
|
FragmentContainerView fragmentContainerView = getBinding().f;
|
|
m.checkNotNullExpressionValue(fragmentContainerView, "binding.widgetTabsHostHome");
|
|
boolean z2 = true;
|
|
int i = 0;
|
|
fragmentContainerView.setVisibility(navigationTab == NavigationTab.HOME ? 0 : 8);
|
|
FragmentContainerView fragmentContainerView2 = getBinding().e;
|
|
m.checkNotNullExpressionValue(fragmentContainerView2, "binding.widgetTabsHostFriends");
|
|
fragmentContainerView2.setVisibility(navigationTab == NavigationTab.FRIENDS ? 0 : 8);
|
|
FragmentContainerView fragmentContainerView3 = getBinding().g;
|
|
m.checkNotNullExpressionValue(fragmentContainerView3, "binding.widgetTabsHostMentions");
|
|
fragmentContainerView3.setVisibility(navigationTab == NavigationTab.MENTIONS ? 0 : 8);
|
|
FragmentContainerView fragmentContainerView4 = getBinding().j;
|
|
m.checkNotNullExpressionValue(fragmentContainerView4, "binding.widgetTabsHostUserSettings");
|
|
fragmentContainerView4.setVisibility(navigationTab == NavigationTab.SETTINGS ? 0 : 8);
|
|
FragmentContainerView fragmentContainerView5 = getBinding().d;
|
|
m.checkNotNullExpressionValue(fragmentContainerView5, "binding.widgetTabsHostDiscovery");
|
|
if (navigationTab != NavigationTab.DISCOVERY) {
|
|
z2 = false;
|
|
}
|
|
if (!z2) {
|
|
i = 8;
|
|
}
|
|
fragmentContainerView5.setVisibility(i);
|
|
OnTabSelectedListener onTabSelectedListener = this.tabToTabSelectionListenerMap.get(navigationTab);
|
|
if (onTabSelectedListener != null) {
|
|
onTabSelectedListener.onTabSelected();
|
|
}
|
|
}
|
|
|
|
private final void onSearchClick() {
|
|
if (StageDiscoveryUsersFeatureFlag.Companion.getINSTANCE().canAccessStageDiscovery()) {
|
|
WidgetQuickMentionsDialog.Companion companion = WidgetQuickMentionsDialog.Companion;
|
|
FragmentManager parentFragmentManager = getParentFragmentManager();
|
|
m.checkNotNullExpressionValue(parentFragmentManager, "parentFragmentManager");
|
|
WidgetQuickMentionsDialog.Companion.show$default(companion, parentFragmentManager, null, 2, null);
|
|
return;
|
|
}
|
|
WidgetGlobalSearchDialog.Companion companion2 = WidgetGlobalSearchDialog.Companion;
|
|
FragmentManager parentFragmentManager2 = getParentFragmentManager();
|
|
m.checkNotNullExpressionValue(parentFragmentManager2, "parentFragmentManager");
|
|
WidgetGlobalSearchDialog.Companion.show$default(companion2, parentFragmentManager2, null, 2, null);
|
|
}
|
|
|
|
private final void onSettingsLongPress() {
|
|
WidgetUserStatusSheet.Companion.show(this);
|
|
}
|
|
|
|
private final void setPanelWindowInsetsListeners(boolean z2) {
|
|
ViewCompat.setOnApplyWindowInsetsListener(getBinding().f2020c, WidgetTabsHost$setPanelWindowInsetsListeners$1.INSTANCE);
|
|
ViewCompat.setOnApplyWindowInsetsListener(getBinding().f, new WidgetTabsHost$setPanelWindowInsetsListeners$2(z2));
|
|
FrameLayout frameLayout = getBinding().h;
|
|
m.checkNotNullExpressionValue(frameLayout, "binding.widgetTabsHostNavHost");
|
|
ViewExtensions.setForwardingWindowInsetsListener(frameLayout);
|
|
ViewCompat.setOnApplyWindowInsetsListener(getBinding().i, new WidgetTabsHost$setPanelWindowInsetsListeners$3(z2));
|
|
ViewCompat.setOnApplyWindowInsetsListener(getBinding().b, WidgetTabsHost$setPanelWindowInsetsListeners$4.INSTANCE);
|
|
getBinding().f2020c.requestApplyInsets();
|
|
}
|
|
|
|
public static /* synthetic */ void setPanelWindowInsetsListeners$default(WidgetTabsHost widgetTabsHost, boolean z2, int i, Object obj) {
|
|
if ((i & 1) != 0) {
|
|
z2 = false;
|
|
}
|
|
widgetTabsHost.setPanelWindowInsetsListeners(z2);
|
|
}
|
|
|
|
private final void updateNavHostMargins(TabsHostViewModel.ViewState viewState) {
|
|
NavigationTab selectedTab = viewState.getSelectedTab();
|
|
FrameLayout frameLayout = getBinding().h;
|
|
m.checkNotNullExpressionValue(frameLayout, "binding.widgetTabsHostNavHost");
|
|
ViewGroup.LayoutParams layoutParams = frameLayout.getLayoutParams();
|
|
Objects.requireNonNull(layoutParams, "null cannot be cast to non-null type android.view.ViewGroup.MarginLayoutParams");
|
|
ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) layoutParams;
|
|
marginLayoutParams.setMargins(marginLayoutParams.leftMargin, marginLayoutParams.topMargin, marginLayoutParams.rightMargin, selectedTab == NavigationTab.HOME ? 0 : viewState.getBottomNavHeight());
|
|
FrameLayout frameLayout2 = getBinding().h;
|
|
m.checkNotNullExpressionValue(frameLayout2, "binding.widgetTabsHostNavHost");
|
|
frameLayout2.setLayoutParams(marginLayoutParams);
|
|
}
|
|
|
|
private final void updateViews(TabsHostViewModel.ViewState viewState) {
|
|
this.viewState = viewState;
|
|
NavigationTab selectedTab = viewState.getSelectedTab();
|
|
boolean showBottomNav = viewState.getShowBottomNav();
|
|
int bottomNavHeight = viewState.getBottomNavHeight();
|
|
navigateToTab(selectedTab);
|
|
getBinding().b.updateView(selectedTab, new WidgetTabsHost$updateViews$1(getViewModel()), showBottomNav, viewState.getMyUserId(), viewState.getVisibleTabs(), viewState.getNumHomeNotifications(), viewState.getNumFriendsNotifications(), new WidgetTabsHost$updateViews$2(this), new WidgetTabsHost$updateViews$3(this), new WidgetTabsHost$updateViews$4(this));
|
|
updateNavHostMargins(viewState);
|
|
boolean z2 = !m.areEqual(Boolean.valueOf(showBottomNav), this.previousShowBottomNav);
|
|
boolean z3 = bottomNavHeight != this.previousBottomNavHeight;
|
|
if (z2 || z3) {
|
|
ValueAnimator valueAnimator = this.bottomNavAnimator;
|
|
if (valueAnimator != null) {
|
|
valueAnimator.cancel();
|
|
}
|
|
TabsHostBottomNavigationView tabsHostBottomNavigationView = getBinding().b;
|
|
m.checkNotNullExpressionValue(tabsHostBottomNavigationView, "binding.widgetTabsHostBottomNavigationView");
|
|
float translationY = tabsHostBottomNavigationView.getTranslationY();
|
|
if (showBottomNav) {
|
|
TabsHostBottomNavigationView tabsHostBottomNavigationView2 = getBinding().b;
|
|
m.checkNotNullExpressionValue(tabsHostBottomNavigationView2, "binding.widgetTabsHostBottomNavigationView");
|
|
tabsHostBottomNavigationView2.setVisibility(0);
|
|
ValueAnimator ofFloat = ValueAnimator.ofFloat(translationY, 0.0f);
|
|
ofFloat.setInterpolator(new FastOutSlowInInterpolator());
|
|
ofFloat.setDuration(BOTTOM_TABS_UPWARD_ANIMATION_DURATION_MS);
|
|
ofFloat.addUpdateListener(new WidgetTabsHost$updateViews$$inlined$apply$lambda$1(this));
|
|
ofFloat.start();
|
|
this.bottomNavAnimator = ofFloat;
|
|
} else if (bottomNavHeight > 0) {
|
|
ValueAnimator ofFloat2 = ValueAnimator.ofFloat(translationY, (float) bottomNavHeight);
|
|
ofFloat2.setInterpolator(new FastOutSlowInInterpolator());
|
|
ofFloat2.setDuration(BOTTOM_TABS_DOWNWARD_ANIMATION_DURATION_MS);
|
|
ofFloat2.addUpdateListener(new WidgetTabsHost$updateViews$$inlined$apply$lambda$2(this));
|
|
ofFloat2.start();
|
|
this.bottomNavAnimator = ofFloat2;
|
|
} else {
|
|
TabsHostBottomNavigationView tabsHostBottomNavigationView3 = getBinding().b;
|
|
m.checkNotNullExpressionValue(tabsHostBottomNavigationView3, "binding.widgetTabsHostBottomNavigationView");
|
|
tabsHostBottomNavigationView3.setVisibility(4);
|
|
}
|
|
}
|
|
this.previousBottomNavHeight = bottomNavHeight;
|
|
this.previousShowBottomNav = Boolean.valueOf(showBottomNav);
|
|
}
|
|
|
|
@Override // com.discord.app.AppFragment, androidx.fragment.app.Fragment
|
|
public void onActivityResult(int i, int i2, Intent intent) {
|
|
super.onActivityResult(i, i2, intent);
|
|
if (i == 4008) {
|
|
GoogleSmartLockManager.Companion.handleResult(i2, intent);
|
|
}
|
|
}
|
|
|
|
@Override // com.discord.app.AppFragment, androidx.fragment.app.Fragment
|
|
public void onDestroyView() {
|
|
ValueAnimator valueAnimator = this.bottomNavAnimator;
|
|
if (valueAnimator != null) {
|
|
valueAnimator.cancel();
|
|
}
|
|
super.onDestroyView();
|
|
}
|
|
|
|
@Override // com.discord.app.AppFragment
|
|
public void onViewBound(View view) {
|
|
m.checkNotNullParameter(view, "view");
|
|
super.onViewBound(view);
|
|
getBinding().b.addHeightChangedListener(BottomNavViewObserver.Companion.getINSTANCE());
|
|
setPanelWindowInsetsListeners$default(this, false, 1, null);
|
|
AppFragment.setOnBackPressed$default(this, new WidgetTabsHost$onViewBound$1(this), 0, 2, null);
|
|
}
|
|
|
|
@Override // com.discord.app.AppFragment
|
|
public void onViewBoundOrOnResume() {
|
|
super.onViewBoundOrOnResume();
|
|
Observable<TabsHostViewModel.ViewState> r = getViewModel().observeViewState().r();
|
|
m.checkNotNullExpressionValue(r, "viewModel.observeViewSta… .distinctUntilChanged()");
|
|
ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.bindToComponentLifecycle(r, this), WidgetTabsHost.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new WidgetTabsHost$onViewBoundOrOnResume$1(this), 62, (Object) null);
|
|
ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.bindToComponentLifecycle(getViewModel().observeEvents(), this), WidgetTabsHost.class, (Context) null, (Function1) null, (Function1) null, (Function0) null, (Function0) null, new WidgetTabsHost$onViewBoundOrOnResume$2(this), 62, (Object) null);
|
|
configureSystemStatusBar();
|
|
}
|
|
|
|
public final void registerTabSelectionListener(NavigationTab navigationTab, OnTabSelectedListener onTabSelectedListener) {
|
|
m.checkNotNullParameter(navigationTab, "navigationTab");
|
|
m.checkNotNullParameter(onTabSelectedListener, "onTabSelectedListener");
|
|
this.tabToTabSelectionListenerMap.put(navigationTab, onTabSelectedListener);
|
|
TabsHostViewModel.ViewState viewState = this.viewState;
|
|
NavigationTab selectedTab = viewState != null ? viewState.getSelectedTab() : null;
|
|
if (selectedTab != null) {
|
|
navigateToTab(selectedTab);
|
|
}
|
|
}
|
|
}
|