导航菜单

页面标题

页面副标题

Dostt v1.0.89 - ScreenDummyLayoutHelper.java 源代码

正在查看: Dostt v1.0.89 应用的 ScreenDummyLayoutHelper.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.swmansion.rnscreens.utils;

import Sh.J;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.appcompat.widget.Toolbar;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import com.facebook.jni.annotations.DoNotStrip;
import com.facebook.react.bridge.LifecycleEventListener;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.e0;
import com.google.android.material.appbar.AppBarLayout;
import com.swmansion.rnscreens.I;
import java.lang.ref.WeakReference;
import kotlin.Metadata;
import kotlin.jvm.internal.AbstractC1735t;
import kotlin.jvm.internal.DefaultConstructorMarker;
import kotlin.jvm.internal.r;

@DoNotStrip
@Metadata(d1 = {"\u0000x\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000b\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0002\n\u0002\u0010\u0007\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u0006\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0007\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\b\b\u0001\u0018\u0000 ;2\u00020\u0001:\u0001\u001fJ\u0017\u0010\u0005\u001a\u00020\u00042\u0006\u0010\u0003\u001a\u00020\u0002H\u0002¢\u0006\u0004\b\u0005\u0010\u0006J\u0017\u0010\n\u001a\u00020\t2\u0006\u0010\b\u001a\u00020\u0007H\u0002¢\u0006\u0004\b\n\u0010\u000bJ\u001f\u0010\u0010\u001a\u00020\u000f2\u0006\u0010\r\u001a\u00020\f2\u0006\u0010\u000e\u001a\u00020\u0004H\u0003¢\u0006\u0004\b\u0010\u0010\u0011J!\u0010\u0015\u001a\u00020\u00022\u0010\b\u0002\u0010\u0014\u001a\n\u0012\u0004\u0012\u00020\u0013\u0018\u00010\u0012H\u0002¢\u0006\u0004\b\u0015\u0010\u0016J\u000f\u0010\u0018\u001a\u00020\u0017H\u0002¢\u0006\u0004\b\u0018\u0010\u0019J\u000f\u0010\u001a\u001a\u00020\tH\u0016¢\u0006\u0004\b\u001a\u0010\u001bJ\u000f\u0010\u001c\u001a\u00020\tH\u0016¢\u0006\u0004\b\u001c\u0010\u001bJ\u000f\u0010\u001d\u001a\u00020\tH\u0016¢\u0006\u0004\b\u001d\u0010\u001bR\u0016\u0010!\u001a\u00020\u001e8\u0002@\u0002X\u0082.¢\u0006\u0006\n\u0004\b\u001f\u0010 R\u0016\u0010$\u001a\u00020\"8\u0002@\u0002X\u0082.¢\u0006\u0006\n\u0004\b\n\u0010#R\u0016\u0010'\u001a\u00020%8\u0002@\u0002X\u0082.¢\u0006\u0006\n\u0004\b\u0005\u0010&R\u0016\u0010*\u001a\u00020(8\u0002@\u0002X\u0082.¢\u0006\u0006\n\u0004\b\u0018\u0010)R\u0016\u0010,\u001a\u00020\u000f8\u0002@\u0002X\u0082\u000e¢\u0006\u0006\n\u0004\b\u0015\u0010+R\u0016\u0010/\u001a\u00020\f8\u0002@\u0002X\u0082\u000e¢\u0006\u0006\n\u0004\b-\u0010.R\u0016\u00103\u001a\u0002008\u0002@\u0002X\u0082\u000e¢\u0006\u0006\n\u0004\b1\u00102R\u001c\u00107\u001a\b\u0012\u0004\u0012\u00020\u0002048\u0002@\u0002X\u0082\u000e¢\u0006\u0006\n\u0004\b5\u00106R\u0016\u0010:\u001a\u00020\u00048\u0002@\u0002X\u0082\u000e¢\u0006\u0006\n\u0004\b8\u00109¨\u0006<"}, d2 = {"Lcom/swmansion/rnscreens/utils/ScreenDummyLayoutHelper;", "Lcom/facebook/react/bridge/LifecycleEventListener;", "Lcom/facebook/react/bridge/ReactApplicationContext;", "reactContext", "", "c", "(Lcom/facebook/react/bridge/ReactApplicationContext;)Z", "Landroid/content/Context;", "contextWithTheme", "LSh/J;", "b", "(Landroid/content/Context;)V", "", "fontSize", "isTitleEmpty", "", "computeDummyLayout", "(IZ)F", "Lkotlin/Function0;", "", "lazyMessage", "e", "(Lgi/a;)Lcom/facebook/react/bridge/ReactApplicationContext;", "Landroid/app/Activity;", "d", "()Landroid/app/Activity;", "onHostResume", "()V", "onHostPause", "onHostDestroy", "Landroidx/coordinatorlayout/widget/CoordinatorLayout;", "a", "Landroidx/coordinatorlayout/widget/CoordinatorLayout;", "coordinatorLayout", "Lcom/google/android/material/appbar/AppBarLayout;", "Lcom/google/android/material/appbar/AppBarLayout;", "appBarLayout", "Landroid/view/View;", "Landroid/view/View;", "dummyContentView", "Landroidx/appcompat/widget/Toolbar;", "Landroidx/appcompat/widget/Toolbar;", "toolbar", "F", "defaultFontSize", "f", "I", "defaultContentInsetStartWithNavigation", "Lcom/swmansion/rnscreens/utils/a;", "o", "Lcom/swmansion/rnscreens/utils/a;", "cache", "Ljava/lang/ref/WeakReference;", "p", "Ljava/lang/ref/WeakReference;", "reactContextRef", "q", "Z", "isLayoutInitialized", "r", "react-native-screens_release"}, k = 1, mv = {1, 9, 0}, xi = 48)
public final class ScreenDummyLayoutHelper implements LifecycleEventListener {

    public static final Companion INSTANCE = new Companion(null);
    private static WeakReference s = new WeakReference(null);

    private CoordinatorLayout coordinatorLayout;

    private AppBarLayout appBarLayout;

    private View dummyContentView;

    private Toolbar toolbar;

    private float defaultFontSize;

    private int defaultContentInsetStartWithNavigation;

    private a cache;

    private WeakReference reactContextRef;

    private volatile boolean isLayoutInitialized;

    public static final class Companion {
        public Companion(DefaultConstructorMarker defaultConstructorMarker) {
            this();
        }

        @DoNotStrip
        public final ScreenDummyLayoutHelper getInstance() {
            return (ScreenDummyLayoutHelper) ScreenDummyLayoutHelper.s.get();
        }

        private Companion() {
        }
    }

    static final class b extends AbstractC1735t implements gi.a {
        public static final b a = new b();

        b() {
            super(0);
        }

        @Override
        public final Object invoke() {
            return "[RNScreens] Context was null-ed before dummy layout was initialized";
        }
    }

    static final class c extends AbstractC1735t implements gi.a {
        public static final c a = new c();

        c() {
            super(0);
        }

        @Override
        public final Object invoke() {
            return "[RNScreens] ReactContext missing in onHostResume! This should not happen.";
        }
    }

    static final class d extends AbstractC1735t implements gi.a {
        public static final d a = new d();

        d() {
            super(0);
        }

        @Override
        public final String invoke() {
            return "[RNScreens] Attempt to require missing react context";
        }
    }

    private final void b(Context contextWithTheme) {
        this.coordinatorLayout = new CoordinatorLayout(contextWithTheme);
        AppBarLayout appBarLayout = new AppBarLayout(contextWithTheme);
        appBarLayout.setLayoutParams(new CoordinatorLayout.f(-1, -2));
        this.appBarLayout = appBarLayout;
        Toolbar toolbar = new Toolbar(contextWithTheme);
        toolbar.setTitle("FontSize123!#$");
        AppBarLayout.f fVar = new AppBarLayout.f(-1, -2);
        fVar.g(0);
        toolbar.setLayoutParams(fVar);
        this.toolbar = toolbar;
        TextView a = I.H.a(toolbar);
        r.c(a);
        this.defaultFontSize = a.getTextSize();
        Toolbar toolbar2 = this.toolbar;
        View view = null;
        if (toolbar2 == null) {
            r.t("toolbar");
            toolbar2 = null;
        }
        this.defaultContentInsetStartWithNavigation = toolbar2.getContentInsetStartWithNavigation();
        ViewGroup viewGroup = this.appBarLayout;
        if (viewGroup == null) {
            r.t("appBarLayout");
            viewGroup = null;
        }
        View view2 = this.toolbar;
        if (view2 == null) {
            r.t("toolbar");
            view2 = null;
        }
        viewGroup.addView(view2);
        View view3 = new View(contextWithTheme);
        view3.setLayoutParams(new CoordinatorLayout.f(-1, -1));
        this.dummyContentView = view3;
        ViewGroup viewGroup2 = this.coordinatorLayout;
        if (viewGroup2 == null) {
            r.t("coordinatorLayout");
            viewGroup2 = null;
        }
        View view4 = this.appBarLayout;
        if (view4 == null) {
            r.t("appBarLayout");
            view4 = null;
        }
        viewGroup2.addView(view4);
        View view5 = this.dummyContentView;
        if (view5 == null) {
            r.t("dummyContentView");
        } else {
            view = view5;
        }
        viewGroup2.addView(view);
        this.isLayoutInitialized = true;
    }

    private final boolean c(ReactApplicationContext reactContext) {
        if (this.isLayoutInitialized) {
            return true;
        }
        if (!reactContext.hasCurrentActivity()) {
            return false;
        }
        Activity currentActivity = reactContext.getCurrentActivity();
        if (currentActivity == null) {
            throw new IllegalArgumentException("[RNScreens] Attempt to use context detached from activity. This could happen only due to race-condition.");
        }
        r.e(currentActivity, "requireNotNull(...)");
        synchronized (this) {
            if (this.isLayoutInitialized) {
                return true;
            }
            b(currentActivity);
            J j = J.a;
            return true;
        }
    }

    @DoNotStrip
    private final float computeDummyLayout(int fontSize, boolean isTitleEmpty) {
        if (!this.isLayoutInitialized && !c(e(b.a))) {
            Log.e("ScreenDummyLayoutHelper", "[RNScreens] Failed to late-init layout while computing header height. This is most likely a race-condition-bug in react-native-screens, please file an issue at https://github.com/software-mansion/react-native-screens/issues");
            return 0.0f;
        }
        if (this.cache.b(new com.swmansion.rnscreens.utils.b(fontSize, isTitleEmpty))) {
            return this.cache.a();
        }
        View decorView = d().getWindow().getDecorView();
        r.e(decorView, "getDecorView(...)");
        int width = decorView.getWidth();
        int height = decorView.getHeight();
        int makeMeasureSpec = View.MeasureSpec.makeMeasureSpec(width, 1073741824);
        int makeMeasureSpec2 = View.MeasureSpec.makeMeasureSpec(height, 1073741824);
        View view = null;
        if (isTitleEmpty) {
            Toolbar toolbar = this.toolbar;
            if (toolbar == null) {
                r.t("toolbar");
                toolbar = null;
            }
            toolbar.setTitle("");
            Toolbar toolbar2 = this.toolbar;
            if (toolbar2 == null) {
                r.t("toolbar");
                toolbar2 = null;
            }
            toolbar2.setContentInsetStartWithNavigation(0);
        } else {
            Toolbar toolbar3 = this.toolbar;
            if (toolbar3 == null) {
                r.t("toolbar");
                toolbar3 = null;
            }
            toolbar3.setTitle("FontSize123!#$");
            Toolbar toolbar4 = this.toolbar;
            if (toolbar4 == null) {
                r.t("toolbar");
                toolbar4 = null;
            }
            toolbar4.setContentInsetStartWithNavigation(this.defaultContentInsetStartWithNavigation);
        }
        I.a aVar = I.H;
        Toolbar toolbar5 = this.toolbar;
        if (toolbar5 == null) {
            r.t("toolbar");
            toolbar5 = null;
        }
        TextView a = aVar.a(toolbar5);
        if (a != null) {
            a.setTextSize(fontSize != -1 ? fontSize : this.defaultFontSize);
        }
        View view2 = this.coordinatorLayout;
        if (view2 == null) {
            r.t("coordinatorLayout");
            view2 = null;
        }
        view2.measure(makeMeasureSpec, makeMeasureSpec2);
        View view3 = this.coordinatorLayout;
        if (view3 == null) {
            r.t("coordinatorLayout");
            view3 = null;
        }
        view3.layout(0, 0, width, height);
        View view4 = this.appBarLayout;
        if (view4 == null) {
            r.t("appBarLayout");
        } else {
            view = view4;
        }
        float e = e0.e(view.getHeight());
        this.cache = new a(new com.swmansion.rnscreens.utils.b(fontSize, isTitleEmpty), e);
        return e;
    }

    private final Activity d() {
        Activity currentActivity = f(this, null, 1, null).getCurrentActivity();
        if (currentActivity != null) {
            return currentActivity;
        }
        throw new IllegalArgumentException("[RNScreens] Attempt to use context detached from activity");
    }

    private final ReactApplicationContext e(gi.a lazyMessage) {
        Object obj = this.reactContextRef.get();
        if (lazyMessage == null) {
            lazyMessage = d.a;
        }
        if (obj != null) {
            return (ReactApplicationContext) obj;
        }
        throw new IllegalArgumentException(lazyMessage.invoke().toString());
    }

    static ReactApplicationContext f(ScreenDummyLayoutHelper screenDummyLayoutHelper, gi.a aVar, int i, Object obj) {
        if ((i & 1) != 0) {
            aVar = null;
        }
        return screenDummyLayoutHelper.e(aVar);
    }

    @DoNotStrip
    public static final ScreenDummyLayoutHelper getInstance() {
        return INSTANCE.getInstance();
    }

    public void onHostDestroy() {
        ReactApplicationContext reactApplicationContext = (ReactApplicationContext) this.reactContextRef.get();
        if (reactApplicationContext != null) {
            reactApplicationContext.removeLifecycleEventListener(this);
        }
    }

    public void onHostPause() {
    }

    public void onHostResume() {
        ReactApplicationContext e = e(c.a);
        if (c(e)) {
            e.removeLifecycleEventListener(this);
        } else {
            Log.w("ScreenDummyLayoutHelper", "[RNScreens] Failed to initialise dummy layout in onHostResume.");
        }
    }
}