Initial commit: Pezkuwi Wallet Android

Security hardened release:
- Code obfuscation enabled (minifyEnabled=true, shrinkResources=true)
- Sensitive files excluded (google-services.json, keystores)
- Branch.io key moved to BuildConfig placeholder
- Updated dependencies: OkHttp 4.12.0, Gson 2.10.1, BouncyCastle 1.77
- Comprehensive ProGuard rules for crypto wallet
- Navigation 2.7.7, Lifecycle 2.7.0, ConstraintLayout 2.1.4
This commit is contained in:
2026-02-12 05:19:41 +03:00
commit a294aa1a6b
7687 changed files with 441811 additions and 0 deletions
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/text_primary" android:state_selected="true" />
<item android:color="@color/text_secondary" />
</selector>
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@drawable/dapp_tab_background_selected"/>
<item android:drawable="@drawable/dapp_tab_background_default" />
</selector>
@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:background="@color/secondary_screen_background">
<io.novafoundation.nova.common.view.Toolbar
android:id="@+id/addToFavouritesToolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:dividerVisible="false"
app:homeButtonIcon="@drawable/ic_close"
app:textRight="@string/common_save"
app:titleText="@string/dapp_favourites_add" />
<ImageView
android:id="@+id/addToFavouritesIcon"
style="@style/Widget.Nova.Icon.Big"
android:layout_gravity="center_horizontal"
android:layout_marginTop="12dp"
tools:src="@drawable/ic_earth" />
<TextView
style="@style/TextAppearance.NovaFoundation.Regular.Footnote"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="@string/common_title"
android:textColor="@color/text_secondary" />
<io.novafoundation.nova.common.view.input.TextInputView
android:id="@+id/addToFavouritesTitleInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:hint="@string/common_title"
tools:text="duckduckgo.com" />
<TextView
style="@style/TextAppearance.NovaFoundation.Regular.Footnote"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="@string/common_address"
android:textColor="@color/text_secondary" />
<io.novafoundation.nova.common.view.input.TextInputView
android:id="@+id/addToFavouritesAddressInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:hint="@string/common_address"
tools:text="duckduckgo.com" />
</LinearLayout>
@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:background="@color/secondary_screen_background">
<io.novafoundation.nova.common.view.Toolbar
android:id="@+id/authorizedDAppsToolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:dividerVisible="false"
app:homeButtonIcon="@drawable/ic_close"
app:titleText="@string/dapp_authorized_title" />
<TextView
style="@style/TextAppearance.NovaFoundation.Regular.Footnote"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:textColor="@color/text_secondary"
android:layout_marginEnd="16dp"
android:text="@string/dapp_authorized_description" />
<io.novafoundation.nova.common.view.TableCellView
android:id="@+id/authorizedDAppsWallet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
app:dividerVisible="false"
app:title="@string/tabbar_wallet_title" />
<Space
android:id="@+id/authorizedPlaceholderSpacerTop"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_weight="1" />
<io.novafoundation.nova.common.view.PlaceholderView
android:id="@+id/authorizedPlaceholder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/dapp_list_placeholder"
app:placeholderBackgroundStyle="no_background"
app:image="@drawable/ic_placeholder"/>
<Space
android:id="@+id/authorizedPlaceholderSpacerBottom"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_weight="2" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/authorizedDAppsList"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="8dp"
android:layout_weight="1"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/view_dapp"
tools:visibility="gone" />
</LinearLayout>
@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/secondary_screen_background"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/browserTabsList"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:clipToPadding="false"
android:padding="8dp"
tools:layoutManager="androidx.recyclerview.widget.GridLayoutManager" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="2dp"
android:paddingBottom="24dp">
<TextView
android:id="@+id/browserTabsCloseTabs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:paddingHorizontal="16dp"
android:paddingVertical="8dp"
android:text="@string/browser_tabs_close_all"
android:textColor="@color/text_primary" />
<ImageView
android:id="@+id/browserTabsAddTab"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:scaleType="centerCrop"
android:src="@drawable/ic_add_circle"
app:tint="@color/icon_primary" />
<TextView
android:id="@+id/browserTabsDone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:paddingHorizontal="16dp"
android:paddingVertical="8dp"
android:text="@string/common_done"
android:textColor="@color/text_primary" />
</FrameLayout>
</LinearLayout>
@@ -0,0 +1,151 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/secondary_screen_background"
android:orientation="vertical">
<LinearLayout
android:id="@+id/dappBrowserAddressBarGroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/blur_navigation_background"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/dappBrowserHide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:padding="8dp"
android:src="@drawable/ic_chevron_down"
app:tint="@color/actions_color" />
<io.novafoundation.nova.feature_dapp_impl.presentation.browser.main.view.AddressBarView
android:id="@+id/dappBrowserAddressBar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="6dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="6dp"
android:layout_weight="1" />
<ImageView
android:id="@+id/dappBrowserRefresh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:padding="8dp"
android:src="@drawable/ic_refresh"
app:tint="@color/actions_color" />
</LinearLayout>
<FrameLayout
android:id="@+id/dappBrowserWebViewContainer"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/dappBrowserBottomNavigation"
app:layout_constraintTop_toBottomOf="@+id/dappBrowserAddressBarGroup" />
<io.novafoundation.nova.common.view.TopCropImageView
android:id="@+id/dappBrowserTransitionImage"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/dappBrowserBottomNavigation"
app:layout_constraintTop_toBottomOf="@+id/dappBrowserAddressBarGroup" />
<ProgressBar
android:id="@+id/dappBrowserProgress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="4dp"
android:max="100"
app:layout_constraintTop_toBottomOf="@+id/dappBrowserAddressBarGroup"
tools:progress="45" />
<LinearLayout
android:id="@+id/dappBrowserBottomNavigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/dapp_blur_navigation_background"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent">
<ImageView
android:id="@+id/dappBrowserBack"
android:layout_width="0dp"
android:layout_height="46dp"
android:layout_weight="1"
android:scaleType="centerInside"
android:src="@drawable/ic_chevron_left"
app:tint="@color/actions_color" />
<ImageView
android:id="@+id/dappBrowserForward"
android:layout_width="0dp"
android:layout_height="46dp"
android:layout_weight="1"
android:scaleType="centerInside"
android:src="@drawable/ic_chevron_right"
app:tint="@color/actions_color" />
<FrameLayout
android:id="@+id/dappBrowserTabs"
android:layout_width="0dp"
android:layout_height="46dp"
android:layout_weight="1"
android:paddingTop="11dp"
android:paddingBottom="11dp">
<ImageView
android:id="@+id/dappBrowserTabsIcon"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center"
android:scaleType="centerInside"
android:src="@drawable/ic_siri_paw"
android:visibility="gone"
app:tint="@color/actions_color" />
<TextView
android:id="@+id/dappBrowserTabsContent"
style="@style/TextAppearance.NovaFoundation.SemiBold.Caption1"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center"
android:background="@drawable/bg_browser_tabs_outline"
android:backgroundTint="@color/actions_color"
android:backgroundTintMode="multiply"
android:gravity="center"
android:includeFontPadding="false"
android:textColor="@color/text_primary"
app:tint="@color/actions_color"
tools:text="99" />
</FrameLayout>
<ImageView
android:id="@+id/dappBrowserFavorite"
android:layout_width="0dp"
android:layout_height="46dp"
android:layout_weight="1"
android:scaleType="centerInside"
android:src="@drawable/ic_favorite_heart_outline" />
<ImageView
android:id="@+id/dappBrowserMore"
android:layout_width="0dp"
android:layout_height="46dp"
android:layout_weight="1"
android:scaleType="centerInside"
android:src="@drawable/ic_more_horizontal"
app:tint="@color/actions_color" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView 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"
android:id="@+id/dappRecyclerViewCatalog"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/drawable_background_image"
android:clipToPadding="false"
android:overScrollMode="never"
android:paddingBottom="16dp"
android:scrollbars="none"
app:layoutManager="io.novafoundation.nova.common.view.recyclerview.LinearLayoutManagerFixed" />
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:id="@+id/searchDappSearhContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:background="@color/secondary_screen_background">
<io.novafoundation.nova.common.view.Toolbar
android:id="@+id/favoritesDappToolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:dividerVisible="false"
app:homeButtonIcon="@drawable/ic_close"
app:titleText="@string/dapp_favorites" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/favoritesDappList"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:clipToPadding="false"
android:paddingBottom="24dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</LinearLayout>
@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:id="@+id/searchDappSearhContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:background="@color/secondary_screen_background">
<io.novafoundation.nova.common.view.SearchToolbar
android:id="@+id/searchDappSearch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/dapp_search_hint" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingVertical="8dp"
android:background="@color/blur_navigation_background"
app:layout_constraintTop_toBottomOf="@+id/dappMainSearch">
<FrameLayout
android:id="@+id/searchDappCategoriesShimmering"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintTop_toBottomOf="@+id/dappMainSearch">
<include layout="@layout/item_dapp_categories_shimmering"/>
</FrameLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/searchDappCategories"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:orientation="horizontal"
android:paddingHorizontal="16dp"
tools:listitem="@layout/item_dapp_category"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</FrameLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/navigation_divider"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/searchDappList"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:clipToPadding="false"
android:paddingBottom="24dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</LinearLayout>
@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:clipToPadding="false"
android:orientation="vertical"
android:padding="8dp">
<com.google.android.material.card.MaterialCardView
android:id="@+id/browserTabCard"
android:layout_width="match_parent"
android:layout_height="230dp"
app:cardBackgroundColor="@color/container_border"
app:cardCornerRadius="16dp"
app:cardElevation="8dp"
app:strokeColor="@color/container_border"
app:strokeWidth="2dp">
<io.novafoundation.nova.common.view.TopCropImageView
android:id="@+id/browserTabScreenshot"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:background="@color/secondary_screen_background" />
<ImageView
android:id="@+id/browserTabClose"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="6dp"
android:src="@drawable/ic_tab_close" />
</com.google.android.material.card.MaterialCardView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="6dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/browserTabFavicon"
android:layout_width="16dp"
android:layout_height="16dp" />
<TextView
android:id="@+id/browserTabSiteName"
style="@style/TextAppearance.NovaFoundation.Regular.Caption1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:ellipsize="end"
android:lines="1"
tools:text="Hydration" />
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/categorizedDappsCategoriesShimmering"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingHorizontal="12dp"
android:scrollbars="none"
app:layout_constraintTop_toBottomOf="@+id/dappMainSearch">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<include layout="@layout/item_dapp_category_shimmering" />
<include layout="@layout/item_dapp_category_shimmering" />
<include layout="@layout/item_dapp_category_shimmering" />
<include layout="@layout/item_dapp_category_shimmering" />
</LinearLayout>
</HorizontalScrollView>
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:background="@drawable/dapp_tab_background"
android:orientation="horizontal"
android:paddingStart="4dp"
android:paddingEnd="8dp">
<ImageView
android:id="@+id/itemDappCategoryIcon"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="4dp"
tools:src="@drawable/ic_favorite_heart_filled_20" />
<TextView
android:id="@+id/itemDappCategoryText"
style="@style/TextAppearance.NovaFoundation.Regular.Footnote"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="4dp"
android:gravity="center"
android:includeFontPadding="false"
android:paddingTop="9dp"
android:paddingBottom="9dp"
android:textColor="@color/dapp_category_text_tint"
tools:text="All" />
</LinearLayout>
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="80dp"
android:layout_height="32dp"
android:layout_marginHorizontal="4dp"
android:layout_weight="1"
android:background="@drawable/dapp_tab_background"
android:gravity="center_vertical"
android:paddingStart="8dp"
android:paddingEnd="12dp">
<com.facebook.shimmer.ShimmerFrameLayout
android:layout_width="20dp"
android:layout_height="20dp"
android:background="@drawable/bg_shimmering" />
<com.facebook.shimmer.ShimmerFrameLayout
android:layout_width="32dp"
android:layout_height="8dp"
android:layout_marginStart="8dp"
android:background="@drawable/bg_shimmering" />
</LinearLayout>
@@ -0,0 +1,84 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_primary_list_item">
<ImageView
android:id="@+id/itemDraggableFavoriteDAppIcon"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:background="@drawable/dapp_icon_background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"
tools:src="@drawable/ic_sub_id" />
<TextView
android:id="@+id/itemDraggableFavoriteDAppTitle"
style="@style/TextAppearance.NovaFoundation.Regular.Body"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginEnd="24dp"
android:ellipsize="end"
android:includeFontPadding="false"
android:maxLines="1"
android:singleLine="true"
android:textColor="@color/text_primary"
app:layout_constraintBottom_toTopOf="@+id/itemDraggableFavoriteDAppSubtitle"
app:layout_constraintEnd_toStartOf="@+id/itemDraggableFavoriteDappFavoriteIcon"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@id/itemDraggableFavoriteDAppIcon"
app:layout_constraintTop_toTopOf="@+id/itemDraggableFavoriteDAppIcon"
app:layout_constraintVertical_chainStyle="packed"
tools:text="Astar" />
<TextView
android:id="@+id/itemDraggableFavoriteDAppSubtitle"
style="@style/TextAppearance.NovaFoundation.Regular.Footnote"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:layout_marginEnd="24dp"
android:ellipsize="end"
android:includeFontPadding="false"
android:maxLines="1"
android:textColor="@color/text_secondary"
app:layout_constraintBottom_toBottomOf="@+id/itemDraggableFavoriteDAppIcon"
app:layout_constraintEnd_toStartOf="@+id/itemDraggableFavoriteDappFavoriteIcon"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/itemDraggableFavoriteDAppTitle"
app:layout_constraintTop_toBottomOf="@+id/itemDraggableFavoriteDAppTitle"
app:layout_goneMarginStart="0dp"
tools:text="Staking" />
<ImageView
android:id="@+id/itemDraggableFavoriteDappFavoriteIcon"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:paddingStart="16dp"
android:paddingEnd="8dp"
android:src="@drawable/ic_favorite_heart_filled_20"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/itemDraggableFavoriteDappDragHandle"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/itemDraggableFavoriteDappDragHandle"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:paddingStart="8dp"
android:paddingEnd="16dp"
android:src="@drawable/ic_list_drag"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="@color/icon_secondary" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/itemDAppCategoryTitle"
style="@style/TextAppearance.NovaFoundation.SemiBold.Title3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="16dp"
android:ellipsize="end"
android:lines="1"
android:textColor="@color/text_primary"
tools:text="Staking" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/dappRecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="8dp"
android:clipToPadding="false"
android:orientation="horizontal"
android:overScrollMode="never"
android:paddingEnd="40dp"
android:scrollbars="none" />
</LinearLayout>
@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:id="@+id/dappMainContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/dappMainTitle"
style="@style/TextAppearance.NovaFoundation.Bold.LargeTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="17dp"
android:layout_marginTop="25dp"
android:includeFontPadding="false"
android:text="@string/dapp_dapps"
android:textColor="@color/text_primary"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<io.novafoundation.nova.feature_account_api.view.SelectedWalletView
android:id="@+id/dappMainSelectedWallet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:layout_marginEnd="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<io.novafoundation.nova.feature_dapp_impl.presentation.main.view.TapToSearchView
android:id="@+id/dappMainSearch"
android:layout_width="0dp"
android:layout_height="36dp"
android:layout_marginStart="16dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="4dp"
app:layout_constraintEnd_toStartOf="@id/dappMainManage"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/dappMainTitle" />
<io.novafoundation.nova.common.view.IconButton
android:id="@+id/dappMainManage"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginEnd="16dp"
android:src="@drawable/ic_options"
app:layout_constraintBottom_toBottomOf="@+id/dappMainSearch"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/dappMainSearch"
app:tint="@color/chip_icon" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/categorizedDappsCategoriesBarrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="bottom"
app:constraint_referenced_ids="mainDappCategories,categorizedDappsCategoriesShimmering" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/mainDappCategories"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:clipToPadding="false"
android:orientation="horizontal"
android:overScrollMode="never"
android:paddingVertical="4dp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintTop_toBottomOf="@+id/dappMainSearch"
tools:listitem="@layout/item_dapp_category"
tools:visibility="visible" />
<FrameLayout
android:id="@+id/categorizedDappsCategoriesShimmering"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingVertical="4dp"
app:layout_constraintTop_toBottomOf="@+id/dappMainSearch">
<include layout="@layout/item_dapp_categories_shimmering" />
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/searchCategory"
style="@style/TextAppearance.NovaFoundation.Regular.Caption1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="16dp"
android:paddingTop="16dp"
android:paddingBottom="8dp"
android:textColor="@color/text_secondary"
tools:background="@color/secondary_screen_background"
tools:text="DApps" />
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
android:padding="8dp"
android:background="@drawable/bg_primary_list_item">
<ImageView
android:id="@+id/itemFavoriteDAppIcon"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginBottom="8dp"
android:background="@drawable/dapp_icon_background"
tools:src="@drawable/ic_sub_id" />
<TextView
android:id="@+id/itemFavoriteDAppTitle"
style="@style/TextAppearance.NovaFoundation.Regular.Caption1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:includeFontPadding="false"
android:maxLines="1"
android:singleLine="true"
android:textColor="@color/text_secondary"
tools:text="Astar" />
</LinearLayout>
@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp">
ё
<TextView
android:id="@+id/dAppMainFavoriteDAppTitle"
style="@style/TextAppearance.NovaFoundation.SemiBold.Title3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="24dp"
android:drawablePadding="8dp"
android:ellipsize="end"
android:gravity="center_vertical"
android:lines="1"
android:text="@string/dapp_favorites"
android:textColor="@color/text_primary"
app:drawableStartCompat="@drawable/ic_favorite_heart_filled_20"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/dAppMainFavoriteDAppsShow"
style="@style/TextAppearance.NovaFoundation.Regular.Caption1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:padding="8dp"
android:text="@string/common_see_all"
android:textColor="@color/button_text_accent"
app:layout_constraintBottom_toBottomOf="@+id/dAppMainFavoriteDAppTitle"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/dAppMainFavoriteDAppTitle" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/dAppMainFavoriteDAppList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:orientation="horizontal"
android:overScrollMode="never"
android:paddingVertical="8dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintTop_toBottomOf="@+id/dAppMainFavoriteDAppTitle"
tools:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:background="@color/divider"
tools:gravity="center"
tools:orientation="horizontal"
tools:parentTag="android.widget.LinearLayout">
<ImageView
android:id="@+id/addressBarIcon"
android:layout_width="12dp"
android:layout_height="12dp"
android:layout_marginStart="24dp"
android:src="@drawable/ic_lock"
app:tint="@color/icon_primary"/>
<TextView
android:id="@+id/addressBarUrl"
style="@style/TextAppearance.NovaFoundation.Regular.Footnote"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_marginTop="9dp"
android:layout_marginEnd="32dp"
android:layout_marginBottom="9dp"
android:ellipsize="end"
android:includeFontPadding="false"
android:singleLine="true"
android:textColor="@color/text_primary"
tools:text="polkadot.js.org" />
</merge>
@@ -0,0 +1,14 @@
window.addEventListener("message", ({ data, source }) => {
// only allow messages from our window, by the loader
if (source !== window) {
return;
}
let dataJson = JSON.stringify(data)
console.log(`Got message: ${dataJson}`)
if (data.origin === "dapp-request") {
// should be in tact with PolkadotJsExtension.kt
Nova_PolkadotJs.onNewMessage(dataJson)
}
});
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long