<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>

        <import type="com.topjohnwu.magisk.core.Config" />

        <variable
            name="viewModel"
            type="com.topjohnwu.magisk.ui.module.ModuleViewModel" />

    </data>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <!--
        The list is reverted to use LinearLayoutManager only. The issue of random crashes lies in
        the way StaggeredGridLayoutManager invalidates view in LazySpanLookup. Since we're adding
        items in between full-span items the array is not yet invalidated and consecutively crashes
        due to index of -end- being out of bounds of the current array.

        If you'd like to use StaggeredGridLayoutManager, do so without adding single span items in
        between of full-span items.
        https://issuetracker.google.com/issues/37034096
        -->

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/module_list"
            adapter="@{viewModel.adapter}"
            dividerHorizontal="@{@drawable/divider_l1}"
            dividerVertical="@{@drawable/divider_l_50}"
            gone="@{viewModel.loading &amp;&amp; viewModel.items.empty}"
            itemBinding="@{viewModel.itemBinding}"
            items="@{viewModel.items}"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:clipToPadding="false"
            android:orientation="vertical"
            android:paddingStart="@dimen/l1"
            android:paddingTop="@{viewModel.insets.top + (int) @dimen/internal_action_bar_size + (int) @dimen/l1}"
            android:paddingEnd="0dp"
            android:paddingBottom="@{viewModel.insets.bottom + (int) @dimen/internal_action_bar_size + (int) @dimen/l1}"
            app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
            tools:listitem="@layout/item_module_md2" />

        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/module_filter_toggle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            android:layout_marginStart="@dimen/l1"
            android:layout_marginEnd="@dimen/l1"
            android:layout_marginBottom="@{viewModel.insets.bottom + (int) @dimen/l1}"
            app:backgroundTint="?colorSurfaceSurfaceVariant"
            app:srcCompat="@drawable/ic_filter"
            app:tint="?colorPrimary"
            tools:layout_marginBottom="64dp" />

        <com.google.android.material.circularreveal.cardview.CircularRevealCardView
            android:id="@+id/module_filter"
            style="@style/WidgetFoundation.Card.Variant"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="bottom"
            android:visibility="invisible"
            app:cardCornerRadius="0dp">

            <include
                android:id="@+id/module_filter_include"
                layout="@layout/include_module_filter"
                viewModel="@{viewModel}"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />

        </com.google.android.material.circularreveal.cardview.CircularRevealCardView>

        <LinearLayout
            goneUnless="@{viewModel.loading &amp;&amp; viewModel.items.empty}"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:orientation="vertical">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/safetynet_attest_loading"
                android:textAppearance="@style/AppearanceFoundation.Title"
                android:textStyle="bold" />

            <ProgressBar
                style="@style/WidgetFoundation.ProgressBar.Indeterminate"
                android:layout_marginTop="@dimen/l1" />

        </LinearLayout>

        <FrameLayout
            goneUnless="@{viewModel.remoteLoading}"
            android:layout_width="match_parent"
            android:layout_height="4dp"
            android:layout_gravity="bottom">

            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="16dp"
                android:layout_gravity="center"
                tools:ignore="UselessParent">

                <ProgressBar
                    style="@style/WidgetFoundation.ProgressBar.Indeterminate"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_gravity="center" />

            </FrameLayout>

        </FrameLayout>

    </FrameLayout>


</layout>
