Compare commits
4 Commits
84978e147e
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 85bde7e448 | |||
| 37c2edc6cd | |||
| 87bacc3f7c | |||
| 22422c85da |
@@ -119,6 +119,7 @@ env:
|
|||||||
CI_MARKET_KEYSTORE_KEY_ALIAS: ${{ secrets.CI_MARKET_KEYSTORE_KEY_ALIAS }}
|
CI_MARKET_KEYSTORE_KEY_ALIAS: ${{ secrets.CI_MARKET_KEYSTORE_KEY_ALIAS }}
|
||||||
CI_MARKET_KEYSTORE_KEY_PASS: ${{ secrets.CI_MARKET_KEYSTORE_KEY_PASS }}
|
CI_MARKET_KEYSTORE_KEY_PASS: ${{ secrets.CI_MARKET_KEYSTORE_KEY_PASS }}
|
||||||
CI_MARKET_KEY_FILE: ${{ secrets.RELEASE_MARKET_KEY_FILE }}
|
CI_MARKET_KEY_FILE: ${{ secrets.RELEASE_MARKET_KEY_FILE }}
|
||||||
|
CI_DEV_KEY_FILE: ${{ secrets.BASE64_DEV_KEYSTORE_FILE }}
|
||||||
|
|
||||||
CI_KEYSTORE_PASS: ${{ secrets.CI_KEYSTORE_PASS }}
|
CI_KEYSTORE_PASS: ${{ secrets.CI_KEYSTORE_PASS }}
|
||||||
CI_KEYSTORE_KEY_ALIAS: ${{ secrets.CI_KEYSTORE_KEY_ALIAS }}
|
CI_KEYSTORE_KEY_ALIAS: ${{ secrets.CI_KEYSTORE_KEY_ALIAS }}
|
||||||
@@ -215,6 +216,14 @@ jobs:
|
|||||||
fileDir: './app/'
|
fileDir: './app/'
|
||||||
encodedString: ${{ env.CI_MARKET_KEY_FILE }}
|
encodedString: ${{ env.CI_MARKET_KEY_FILE }}
|
||||||
|
|
||||||
|
- name: 🔐 Getting develop sign key
|
||||||
|
if: ${{ startsWith(inputs.keystore-file-name, 'develop_key.jks') }}
|
||||||
|
uses: timheuer/base64-to-file@v1.1
|
||||||
|
with:
|
||||||
|
fileName: ${{ inputs.keystore-file-name }}
|
||||||
|
fileDir: './app/'
|
||||||
|
encodedString: ${{ env.CI_DEV_KEY_FILE }}
|
||||||
|
|
||||||
- name: 🏗 Build app
|
- name: 🏗 Build app
|
||||||
if: ${{ !startsWith(inputs.gradlew-command, 'false') }}
|
if: ${{ !startsWith(inputs.gradlew-command, 'false') }}
|
||||||
run: ./gradlew ${{ inputs.gradlew-command }}
|
run: ./gradlew ${{ inputs.gradlew-command }}
|
||||||
|
|||||||
@@ -21,13 +21,19 @@ on:
|
|||||||
- beta
|
- beta
|
||||||
- production
|
- production
|
||||||
status:
|
status:
|
||||||
description: 'Release status (draft, completed)'
|
description: 'Release status (draft, completed, inProgress=staged)'
|
||||||
required: true
|
required: true
|
||||||
default: draft
|
default: draft
|
||||||
type: choice
|
type: choice
|
||||||
options:
|
options:
|
||||||
- draft
|
- draft
|
||||||
- completed
|
- completed
|
||||||
|
- inProgress
|
||||||
|
user_fraction:
|
||||||
|
description: 'Staged rollout fraction for inProgress (e.g. 0.2 = 20%). Ignored unless status=inProgress.'
|
||||||
|
required: false
|
||||||
|
default: '0.2'
|
||||||
|
type: string
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
@@ -83,6 +89,8 @@ jobs:
|
|||||||
releaseFiles: app/bundle/releaseMarket/pezkuwi-wallet-android-${{ github.event.inputs.app_version }}.aab
|
releaseFiles: app/bundle/releaseMarket/pezkuwi-wallet-android-${{ github.event.inputs.app_version }}.aab
|
||||||
track: ${{ github.event.inputs.track }}
|
track: ${{ github.event.inputs.track }}
|
||||||
status: ${{ github.event.inputs.status }}
|
status: ${{ github.event.inputs.status }}
|
||||||
|
# userFraction only applies to staged rollout (status=inProgress); empty otherwise
|
||||||
|
userFraction: ${{ github.event.inputs.status == 'inProgress' && github.event.inputs.user_fraction || '' }}
|
||||||
inAppUpdatePriority: 2
|
inAppUpdatePriority: 2
|
||||||
whatsNewDirectory: distribution/whatsnew
|
whatsNewDirectory: distribution/whatsnew
|
||||||
mappingFile: app/mapping/releaseMarket/mapping.txt
|
mappingFile: app/mapping/releaseMarket/mapping.txt
|
||||||
|
|||||||
@@ -10,5 +10,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
branch: ${{github.head_ref}}
|
branch: ${{github.head_ref}}
|
||||||
gradlew-command: assembleDevelop
|
gradlew-command: assembleDevelop
|
||||||
|
keystore-file-name: develop_key.jks # develop variant is signed with signingConfigs.dev (develop_key.jks)
|
||||||
build-debug-tests: false # TODO: Enable this, when debug build will be fixed for tests
|
build-debug-tests: false # TODO: Enable this, when debug build will be fixed for tests
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|||||||
@@ -0,0 +1,89 @@
|
|||||||
|
# Pezkuwi Wallet — Brand Rules
|
||||||
|
|
||||||
|
This wallet must stay aligned with the **Pezkuwi brand book**. The canonical,
|
||||||
|
ecosystem-wide source of truth lives on the wiki:
|
||||||
|
**https://wiki.pezkuwichain.io/brand/**. This file is the wallet-specific,
|
||||||
|
enforceable summary — read it before changing any colors, fonts, or imagery.
|
||||||
|
|
||||||
|
## The one hard rule
|
||||||
|
|
||||||
|
> **Only the Kurdistan palette (kesk green, sor red, zer gold, fire orange) plus
|
||||||
|
> navy/neutral are allowed. Pink, magenta and purple are FORBIDDEN — anywhere.**
|
||||||
|
|
||||||
|
This applies to XML colors, Compose `Color(0x…)` literals, vector drawables,
|
||||||
|
gradients, **and raster images** (PNG/WebP banners and illustrations).
|
||||||
|
|
||||||
|
## Palette (source of truth)
|
||||||
|
|
||||||
|
| Token | Hex | | Token | Hex |
|
||||||
|
|-------|-----|-|-------|-----|
|
||||||
|
| kesk (primary) | `#009639` | | base bg | `#05081C` |
|
||||||
|
| kesk-700 | `#017A2F` | | screen bg | `#08090E` |
|
||||||
|
| positive | `#2FC864` | | elevated | `#181920` |
|
||||||
|
| sor (red) | `#E2231A` | | nav | `#0F111A` |
|
||||||
|
| negative | `#E53450` | | text primary | `#E0FFFFFF` |
|
||||||
|
| zer (gold) | `#FDB813` | | text secondary | `#7AFFFFFF` |
|
||||||
|
| warning | `#EBC50A` | | text tertiary | `#52FFFFFF` |
|
||||||
|
| fire (orange) | `#FF7A00` | | periwinkle tint | `#999EC7` @ 10/16/24% |
|
||||||
|
| info | `#2AB0F2` | | | |
|
||||||
|
|
||||||
|
## Typography
|
||||||
|
|
||||||
|
- **Space Grotesk** — display: balances, screen titles, large numbers
|
||||||
|
- **Plus Jakarta Sans** — body / UI text
|
||||||
|
- **JetBrains Mono** — addresses, hashes, block numbers
|
||||||
|
|
||||||
|
All three are OFL-licensed and cover Latin-ext / Turkish / Kurdish Kurmancî
|
||||||
|
glyphs. Fonts live in `common/src/main/res/font/`; the theme maps them via
|
||||||
|
`fontRegular/SemiBold/Bold/ExtraBold/ExtraLight` in `common/.../values/themes.xml`.
|
||||||
|
|
||||||
|
## Brand mark & imagery
|
||||||
|
|
||||||
|
- The brand mark is the **Newroz flame** (`nevroz-fire-*`). Do **not** use the
|
||||||
|
retired Roj-rosette mark or a Kurdistan-map logo anywhere.
|
||||||
|
- First-launch splash uses the Newroz flame (`ic_loading_screen_logo`).
|
||||||
|
- Onboarding hero uses the **Global United States of Pezkuwi** infographic.
|
||||||
|
- Pull chain/token/dapp icons from `pezkuwichain/pezkuwi-wallet-utils`, don't
|
||||||
|
invent art. Keep one outline icon set (2px stroke, round caps).
|
||||||
|
|
||||||
|
## Where colors are defined
|
||||||
|
|
||||||
|
- Named colors: `common/src/main/res/values/colors.xml`
|
||||||
|
- Theme/type: `common/src/main/res/values/themes.xml`, `styles.xml`
|
||||||
|
|
||||||
|
## PR checklist (brand)
|
||||||
|
|
||||||
|
- [ ] No magenta/purple/pink in `colors.xml` (`#BD387F`, `#661D78`, `#443679`, `#FF48A5`, …).
|
||||||
|
- [ ] No `purple`/`magenta`/`pink`-named drawables or Compose color literals.
|
||||||
|
- [ ] Raster assets scanned for pink/magenta pixels (see snippet below); none above noise.
|
||||||
|
- [ ] New text uses the brand font roles; addresses use JetBrains Mono.
|
||||||
|
- [ ] Any new mark is the Newroz flame, not a map/rosette.
|
||||||
|
|
||||||
|
Raster pink scan (run from repo root):
|
||||||
|
|
||||||
|
```python
|
||||||
|
# python3 with Pillow
|
||||||
|
from PIL import Image; import glob
|
||||||
|
def pink(r,g,b): return r>150 and g<110 and b>120 and (r-g)>70
|
||||||
|
for f in glob.glob('**/res/drawable*/*.png',recursive=True)+glob.glob('**/res/drawable*/*.webp',recursive=True):
|
||||||
|
if '/build/' in f: continue
|
||||||
|
im=Image.open(f).convert('RGBA'); im.thumbnail((96,96)); px=im.load(); w,h=im.size; c=t=0
|
||||||
|
for y in range(h):
|
||||||
|
for x in range(w):
|
||||||
|
r,g,b,a=px[x,y]
|
||||||
|
if a<30: continue
|
||||||
|
t+=1; c+=pink(r,g,b)
|
||||||
|
if t and c/t>0.02: print(round(c/t*100,1),'%',f)
|
||||||
|
```
|
||||||
|
|
||||||
|
> Exception: third-party trademark logos (e.g. `ic_powered_by_oak`, OAK Network)
|
||||||
|
> must **not** be recolored — leave them as the owner ships them.
|
||||||
|
|
||||||
|
## Licensing note (important)
|
||||||
|
|
||||||
|
This app is a fork of **Nova Wallet**, licensed under **Apache-2.0**. Apache-2.0
|
||||||
|
lets us fork, rebrand and ship — **but you must KEEP `LICENSE` and `NOTICE`** and
|
||||||
|
their attributions, and state changes. Do **not** delete the attribution (that
|
||||||
|
would breach the license). Removing Nova's *trademark* (name/logo) from the UI is
|
||||||
|
required; preserving the *copyright notice* is also required. The package name
|
||||||
|
`io.novafoundation.nova.app` stays (Play Store identity; not a trademark issue).
|
||||||
@@ -5,7 +5,39 @@ Context sıfırlanması durumunda referans olarak kullanılmalıdır.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## DEBUG KODLARI (Production öncesi KALDIRILMALI)
|
## v1.1.1 — Dashboard & action-row screen redesign (2026-06-15)
|
||||||
|
|
||||||
|
Screen-level brand-book alignment (foundation landed in v1.1.0):
|
||||||
|
- **Pezkuwi dashboard card:** blue/indigo gradient → frosted dark-navy surface with
|
||||||
|
a small Newroz-flame icon; brand buttons (Approve = kesk, Sign = sor, Share =
|
||||||
|
frosted-dark — the old yellow Share button removed); zer/positive accents.
|
||||||
|
- **Balance action row:** flat icon+label → circular buttons (Send on a kesk-green
|
||||||
|
circle, Receive/Swap/Buy/Gift on frosted-dark circles with labels below).
|
||||||
|
|
||||||
|
## v1.1.0 — Brand-book UI redesign (2026-06-15)
|
||||||
|
|
||||||
|
Görsel kimlik Pezkuwi marka kitabına hizalandı; iş mantığına dokunulmadı.
|
||||||
|
|
||||||
|
- **Renkler:** colors.xml'deki yasak magenta/mor değerleri marka renkleriyle değiştirildi
|
||||||
|
(isimler korundu). Raster illustration'lardaki pembe/mor pikseller (siri, networks
|
||||||
|
banner, no-added-networks, hardware import, tinder-gov, crowdloan) kesk/teal'e retint
|
||||||
|
edildi. Üçüncü-taraf OAK logosuna dokunulmadı.
|
||||||
|
- **Tipografi:** Public Sans → Space Grotesk (display) + Plus Jakarta Sans (gövde) +
|
||||||
|
JetBrains Mono (adres/hash). TR + Kurmancî glifleri doğrulandı.
|
||||||
|
- **Splash:** Kurdistan-haritalı logo → Newroz alevi marka işareti.
|
||||||
|
- **Onboarding:** welcome hero → "Global United States of Pezkuwi" infografiği (tam/kırpılmadan).
|
||||||
|
- **Hijyen:** production-öncesi debug kodları kaldırıldı (FeeLoader user-facing DEBUG mesajı,
|
||||||
|
RuntimeFactory diagnostics). Brand kuralları için `BRAND.md` eklendi.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## DEBUG KODLARI — ✅ TEMİZLENDİ (2026-06-15, v1.1.0 öncesi)
|
||||||
|
|
||||||
|
> Aşağıdaki tüm debug kodları production'a çıkmadan kaldırıldı:
|
||||||
|
> #1 FeeLoaderV2Provider (kullanıcıya görünen DEBUG hata mesajı) ve #2 RuntimeFactory
|
||||||
|
> (`lastDiagnostics` + test referansı) bu sürümde temizlendi; #3–#6 zaten kaldırılmıştı.
|
||||||
|
> Doğrulama: repoda `"DEBUG:` literali / `lastDiagnostics` referansı kalmadı.
|
||||||
|
> (Aşağıdaki kayıtlar tarihsel referans içindir.)
|
||||||
|
|
||||||
### 1. FeeLoaderV2Provider.kt - Hata mesajı gösterimi
|
### 1. FeeLoaderV2Provider.kt - Hata mesajı gösterimi
|
||||||
**Dosya:** `feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/presentation/mixin/fee/v2/FeeLoaderV2Provider.kt`
|
**Dosya:** `feature-wallet-api/src/main/java/io/novafoundation/nova/feature_wallet_api/presentation/mixin/fee/v2/FeeLoaderV2Provider.kt`
|
||||||
|
|||||||
@@ -229,9 +229,6 @@ class PezkuwiLiveTransferTest : BaseIntegrationTest() {
|
|||||||
// Just log the extension names - type access might be restricted
|
// Just log the extension names - type access might be restricted
|
||||||
Log.d("LiveTransferTest", "Signed extensions count: ${extrinsicMeta.signedExtensions.size}")
|
Log.d("LiveTransferTest", "Signed extensions count: ${extrinsicMeta.signedExtensions.size}")
|
||||||
|
|
||||||
// Log the extrinsic address type if available
|
|
||||||
Log.d("LiveTransferTest", "RuntimeFactory diagnostics: ${io.novafoundation.nova.runtime.multiNetwork.runtime.RuntimeFactory.lastDiagnostics}")
|
|
||||||
|
|
||||||
println("Type resolution results:\n${results.joinToString("\n")}")
|
println("Type resolution results:\n${results.joinToString("\n")}")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
buildscript {
|
buildscript {
|
||||||
ext {
|
ext {
|
||||||
// App version
|
// App version
|
||||||
versionName = '1.0.4'
|
versionName = '1.1.1'
|
||||||
versionCode = 1
|
versionCode = 1
|
||||||
|
|
||||||
applicationId = "io.pezkuwichain.wallet"
|
applicationId = "io.pezkuwichain.wallet"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 8.0 KiB |
|
Before Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 201 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 204 KiB After Width: | Height: | Size: 186 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 135 KiB After Width: | Height: | Size: 129 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 191 KiB |
|
Before Width: | Height: | Size: 343 KiB After Width: | Height: | Size: 298 KiB |
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 208 KiB After Width: | Height: | Size: 200 KiB |
|
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 55 KiB |
@@ -1,4 +1,21 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
Pezkuwi Wallet — common/src/main/res/values/colors.xml
|
||||||
|
REDESIGN per Pezkuwi Wallet Design System (brand book).
|
||||||
|
|
||||||
|
This is a DROP-IN replacement for the current file: every color NAME is
|
||||||
|
preserved (so no Kotlin/XML references break), only VALUES change.
|
||||||
|
|
||||||
|
What changed vs. the shipped file — and why:
|
||||||
|
• Purged forbidden Nova-legacy PINK / MAGENTA / PURPLE. The brand permits ONLY
|
||||||
|
the Kurdistan palette (kesk green / sor red / zer gold / fire) + navy/neutral.
|
||||||
|
- crowdloan_banner_gradient_start #BD387F (magenta) -> #009639 (kesk)
|
||||||
|
- networks_banner_gradient_end #661D78 (purple) -> #017A2F (kesk-700)
|
||||||
|
- chip_on_card_background #443679 (purple) -> #3D999EC7 (frosted)
|
||||||
|
• Everything else is unchanged from the already-Kurdistan-themed file.
|
||||||
|
|
||||||
|
Search the file for "REDESIGN:" to see each changed line.
|
||||||
|
-->
|
||||||
<resources>
|
<resources>
|
||||||
<!-- Colors not included in the design system -->
|
<!-- Colors not included in the design system -->
|
||||||
<color name="address_icon_background">#eeeeee</color>
|
<color name="address_icon_background">#eeeeee</color>
|
||||||
@@ -44,11 +61,13 @@
|
|||||||
<color name="staking_type_banner_text_inactive">#52FFFFFF</color>
|
<color name="staking_type_banner_text_inactive">#52FFFFFF</color>
|
||||||
<color name="tinder_gov_banner_secondary_text">#A3FFFFFF</color>
|
<color name="tinder_gov_banner_secondary_text">#A3FFFFFF</color>
|
||||||
|
|
||||||
<color name="crowdloan_banner_gradient_start">#BD387F</color>
|
<!-- REDESIGN: crowdloan banner is now the Newroz-flame gradient (kesk -> fire), not magenta -> orange -->
|
||||||
|
<color name="crowdloan_banner_gradient_start">#009639</color>
|
||||||
<color name="crowdloan_banner_gradient_end">#FF7A00</color>
|
<color name="crowdloan_banner_gradient_end">#FF7A00</color>
|
||||||
|
|
||||||
|
<!-- REDESIGN: networks banner is now navy -> kesk green, not navy -> purple -->
|
||||||
<color name="networks_banner_gradient_start">#00072E</color>
|
<color name="networks_banner_gradient_start">#00072E</color>
|
||||||
<color name="networks_banner_gradient_end">#661D78</color>
|
<color name="networks_banner_gradient_end">#017A2F</color>
|
||||||
|
|
||||||
<!-- Icon Colors -->
|
<!-- Icon Colors -->
|
||||||
<color name="icon_primary">#E0FFFFFF</color>
|
<color name="icon_primary">#E0FFFFFF</color>
|
||||||
@@ -70,12 +89,12 @@
|
|||||||
<color name="bottom_sheet_background">#181920</color>
|
<color name="bottom_sheet_background">#181920</color>
|
||||||
<color name="block_background">#1A999EC7</color>
|
<color name="block_background">#1A999EC7</color>
|
||||||
<color name="hided_networks_block_background">#3D999EC7</color>
|
<color name="hided_networks_block_background">#3D999EC7</color>
|
||||||
<!-- TODO update name once in design system-->
|
|
||||||
<color name="block_background_dark">#5205081C</color>
|
<color name="block_background_dark">#5205081C</color>
|
||||||
<color name="cell_background_pressed">#291F78FF</color>
|
<color name="cell_background_pressed">#291F78FF</color>
|
||||||
<color name="input_background">#1A999EC7</color>
|
<color name="input_background">#1A999EC7</color>
|
||||||
<color name="chips_background">#29999EC7</color>
|
<color name="chips_background">#29999EC7</color>
|
||||||
<color name="chip_on_card_background">#443679</color>
|
<!-- REDESIGN: was #443679 (purple). Now frosted periwinkle, on-brand. -->
|
||||||
|
<color name="chip_on_card_background">#3D999EC7</color>
|
||||||
<color name="container_background">#1A999EC7</color>
|
<color name="container_background">#1A999EC7</color>
|
||||||
<color name="token_container_background">#3D08090E</color>
|
<color name="token_container_background">#3D08090E</color>
|
||||||
<color name="segmented_background">#5208090E</color>
|
<color name="segmented_background">#5208090E</color>
|
||||||
@@ -109,7 +128,8 @@
|
|||||||
<color name="button_background_inactive_on_gradient">#1A999EC7</color>
|
<color name="button_background_inactive_on_gradient">#1A999EC7</color>
|
||||||
<color name="button_background_inactive">#181920</color>
|
<color name="button_background_inactive">#181920</color>
|
||||||
|
|
||||||
<color name="button_wallet_connect_background">#353D67</color>
|
<!-- REDESIGN: WalletConnect button retinted off the indigo #353D67 to a neutral navy. -->
|
||||||
|
<color name="button_wallet_connect_background">#1F2A4D</color>
|
||||||
<color name="wallet_connections_background">#101636</color>
|
<color name="wallet_connections_background">#101636</color>
|
||||||
|
|
||||||
<!-- Border Colors - Kurdistan Green -->
|
<!-- Border Colors - Kurdistan Green -->
|
||||||
|
|||||||
@@ -245,7 +245,7 @@
|
|||||||
|
|
||||||
<style name="TextAppearance.NovaFoundation.Regular.Monospace">
|
<style name="TextAppearance.NovaFoundation.Regular.Monospace">
|
||||||
<item name="android:textSize">12sp</item>
|
<item name="android:textSize">12sp</item>
|
||||||
<item name="android:fontFamily">monospace</item>
|
<item name="android:fontFamily">@font/jetbrains_mono_regular</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<!-- Buttons -->
|
<!-- Buttons -->
|
||||||
|
|||||||
@@ -30,12 +30,12 @@
|
|||||||
<item name="textSizeSubHeadline">@dimen/text_size_subheadline</item>
|
<item name="textSizeSubHeadline">@dimen/text_size_subheadline</item>
|
||||||
<!--text sizes-->
|
<!--text sizes-->
|
||||||
|
|
||||||
<!--fonts-->
|
<!--fonts: brand book — Plus Jakarta Sans (body) + Space Grotesk (display/bold)-->
|
||||||
<item name="fontSemiBold">@font/public_sans_semi_bold</item>
|
<item name="fontSemiBold">@font/plus_jakarta_sans_semi_bold</item>
|
||||||
<item name="fontBold">@font/public_sans_bold</item>
|
<item name="fontBold">@font/space_grotesk_bold</item>
|
||||||
<item name="fontExtraBold">@font/public_sans_extra_bold</item>
|
<item name="fontExtraBold">@font/space_grotesk_bold</item>
|
||||||
<item name="fontRegular">@font/public_sans_regular</item>
|
<item name="fontRegular">@font/plus_jakarta_sans_regular</item>
|
||||||
<item name="fontExtraLight">@font/public_sans_extra_light</item>
|
<item name="fontExtraLight">@font/plus_jakarta_sans_light</item>
|
||||||
<!--fonts-->
|
<!--fonts-->
|
||||||
|
|
||||||
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
|
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
|
||||||
|
|||||||
|
After Width: | Height: | Size: 4.1 KiB |
@@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Brand: primary action circle — kesk green -->
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
|
||||||
|
<solid android:color="#009639" />
|
||||||
|
</shape>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Brand: secondary action circle — frosted dark -->
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
|
||||||
|
<solid android:color="#242838" />
|
||||||
|
<stroke android:width="1dp" android:color="#29999EC7" />
|
||||||
|
</shape>
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Brand book: frosted dark-navy surface + 1px periwinkle hairline (no blue/indigo gradient) -->
|
||||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:shape="rectangle">
|
android:shape="rectangle">
|
||||||
|
|
||||||
<gradient
|
<solid android:color="#1C1F2E" />
|
||||||
android:angle="135"
|
|
||||||
android:startColor="#FF1A237E"
|
|
||||||
android:centerColor="#FF283593"
|
|
||||||
android:endColor="#FF3949AB"
|
|
||||||
android:type="linear" />
|
|
||||||
|
|
||||||
<corners android:radius="16dp" />
|
<stroke
|
||||||
|
android:width="1dp"
|
||||||
|
android:color="#33999EC7" />
|
||||||
|
|
||||||
|
<corners android:radius="20dp" />
|
||||||
</shape>
|
</shape>
|
||||||
|
|||||||
@@ -4,7 +4,8 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginHorizontal="16dp"
|
android:layout_marginHorizontal="16dp"
|
||||||
app:cardCornerRadius="16dp"
|
app:cardBackgroundColor="@android:color/transparent"
|
||||||
|
app:cardCornerRadius="20dp"
|
||||||
app:cardElevation="0dp"
|
app:cardElevation="0dp"
|
||||||
app:strokeWidth="0dp">
|
app:strokeWidth="0dp">
|
||||||
|
|
||||||
@@ -13,14 +14,20 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@drawable/bg_pezkuwi_dashboard"
|
android:background="@drawable/bg_pezkuwi_dashboard"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:padding="16dp">
|
android:padding="18dp">
|
||||||
|
|
||||||
<!-- Top row: Title + Logo -->
|
<!-- Header: flame badge + title/roles (left), citizen count (right) -->
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal"
|
android:gravity="center_vertical"
|
||||||
android:gravity="center_vertical">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="40dp"
|
||||||
|
android:layout_height="40dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:src="@drawable/ic_nevroz_flame" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
@@ -33,7 +40,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/pezkuwi_dashboard_title"
|
android:text="@string/pezkuwi_dashboard_title"
|
||||||
android:textColor="@android:color/white"
|
android:textColor="#E0FFFFFF"
|
||||||
android:textSize="18sp"
|
android:textSize="18sp"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
|
|
||||||
@@ -41,24 +48,50 @@
|
|||||||
android:id="@+id/pezkuwiDashboardRoles"
|
android:id="@+id/pezkuwiDashboardRoles"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginTop="3dp"
|
||||||
app:flexWrap="wrap"
|
|
||||||
app:alignItems="center"
|
app:alignItems="center"
|
||||||
|
app:flexWrap="wrap"
|
||||||
app:justifyContent="flex_start" />
|
app:justifyContent="flex_start" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<!-- Trust Score -->
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
android:gravity="end"
|
||||||
android:orientation="horizontal"
|
android:orientation="vertical">
|
||||||
android:gravity="center_vertical">
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/pezkuwiDashboardWelatiCount"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="end"
|
||||||
|
android:textColor="#2FC864"
|
||||||
|
android:textSize="24sp"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="end"
|
||||||
|
android:text="@string/pezkuwi_dashboard_kurds_title"
|
||||||
|
android:textColor="#7AFFFFFF"
|
||||||
|
android:textSize="10sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<!-- Trust score -->
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="14dp"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/pezkuwi_dashboard_trust_score"
|
android:text="@string/pezkuwi_dashboard_trust_score"
|
||||||
android:textColor="#B0BEC5"
|
android:textColor="#7AFFFFFF"
|
||||||
android:textSize="12sp" />
|
android:textSize="12sp" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@@ -66,7 +99,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="8dp"
|
android:layout_marginStart="8dp"
|
||||||
android:textColor="#FFD54F"
|
android:textColor="#FDB813"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
|
|
||||||
@@ -83,67 +116,45 @@
|
|||||||
android:textColor="@android:color/white"
|
android:textColor="@android:color/white"
|
||||||
android:textSize="11sp"
|
android:textSize="11sp"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:backgroundTint="#FF9800"
|
app:backgroundTint="#009639"
|
||||||
app:cornerRadius="8dp" />
|
app:cornerRadius="8dp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
<!-- Action buttons -->
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:gravity="center"
|
|
||||||
android:layout_marginEnd="12dp">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/pezkuwiDashboardWelatiCount"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:textColor="#4CAF50"
|
|
||||||
android:textSize="22sp"
|
|
||||||
android:textStyle="bold" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/pezkuwi_dashboard_kurds_title"
|
|
||||||
android:textColor="#CFD8DC"
|
|
||||||
android:textSize="10sp" />
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<!-- Action buttons: Kesk (green), Sor (red), Zer (yellow) -->
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
android:id="@+id/pezkuwiDashboardBasvuruButton"
|
android:id="@+id/pezkuwiDashboardBasvuruButton"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="48dp"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="16dp"
|
||||||
android:text="@string/pezkuwi_dashboard_basvuru"
|
android:text="@string/pezkuwi_dashboard_basvuru"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="@android:color/white"
|
android:textColor="@android:color/white"
|
||||||
app:backgroundTint="#4CAF50"
|
android:textStyle="bold"
|
||||||
app:cornerRadius="8dp" />
|
app:backgroundTint="#009639"
|
||||||
|
app:cornerRadius="14dp" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
android:id="@+id/pezkuwiDashboardSignButton"
|
android:id="@+id/pezkuwiDashboardSignButton"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="48dp"
|
||||||
android:layout_marginTop="6dp"
|
android:layout_marginTop="8dp"
|
||||||
android:text="@string/citizenship_sign"
|
android:text="@string/citizenship_sign"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="@android:color/white"
|
android:textColor="@android:color/white"
|
||||||
app:backgroundTint="#E53935"
|
app:backgroundTint="#E2231A"
|
||||||
app:cornerRadius="8dp" />
|
app:cornerRadius="14dp" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
android:id="@+id/pezkuwiDashboardShareButton"
|
android:id="@+id/pezkuwiDashboardShareButton"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="48dp"
|
||||||
android:layout_marginTop="6dp"
|
android:layout_marginTop="8dp"
|
||||||
android:text="@string/citizenship_share_button"
|
android:text="@string/citizenship_share_button"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="#212121"
|
android:textColor="#E0FFFFFF"
|
||||||
app:backgroundTint="#FDD835"
|
app:backgroundTint="#2A2F45"
|
||||||
app:cornerRadius="8dp" />
|
app:cornerRadius="14dp"
|
||||||
|
app:strokeColor="#33999EC7"
|
||||||
|
app:strokeWidth="1dp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</com.google.android.material.card.MaterialCardView>
|
</com.google.android.material.card.MaterialCardView>
|
||||||
|
|||||||
@@ -124,71 +124,145 @@
|
|||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/viewAssetsTotalBalanceContainer">
|
app:layout_constraintTop_toBottomOf="@id/viewAssetsTotalBalanceContainer">
|
||||||
|
|
||||||
<TextView
|
<LinearLayout
|
||||||
android:id="@+id/viewAssetsTotalBalanceSend"
|
android:id="@+id/viewAssetsTotalBalanceSend"
|
||||||
style="@style/Widget.Nova.ActionButton"
|
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:breakStrategy="high_quality"
|
android:orientation="vertical"
|
||||||
android:hyphenationFrequency="full"
|
android:gravity="center"
|
||||||
android:paddingBottom="8dp"
|
android:clickable="true"
|
||||||
|
android:focusable="true"
|
||||||
|
android:paddingVertical="6dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="48dp"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:background="@drawable/bg_action_circle_primary"
|
||||||
|
android:padding="13dp"
|
||||||
|
android:src="@drawable/ic_send_tokens"
|
||||||
|
app:tint="@android:color/white" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
android:text="@string/wallet_asset_send"
|
android:text="@string/wallet_asset_send"
|
||||||
app:drawableTopCompat="@drawable/ic_send_tokens"
|
android:textColor="@color/text_secondary"
|
||||||
tools:drawableTop="@drawable/ic_send_tokens" />
|
android:textSize="11sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<TextView
|
<LinearLayout
|
||||||
android:id="@+id/viewAssetsTotalBalanceReceive"
|
android:id="@+id/viewAssetsTotalBalanceReceive"
|
||||||
style="@style/Widget.Nova.ActionButton"
|
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:breakStrategy="high_quality"
|
android:orientation="vertical"
|
||||||
android:hyphenationFrequency="full"
|
android:gravity="center"
|
||||||
android:paddingBottom="8dp"
|
android:clickable="true"
|
||||||
|
android:focusable="true"
|
||||||
|
android:paddingVertical="6dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="48dp"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:background="@drawable/bg_action_circle_secondary"
|
||||||
|
android:padding="13dp"
|
||||||
|
android:src="@drawable/ic_receive_tokens"
|
||||||
|
app:tint="@color/icon_primary" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
android:text="@string/wallet_asset_receive"
|
android:text="@string/wallet_asset_receive"
|
||||||
app:drawableTopCompat="@drawable/ic_receive_tokens"
|
android:textColor="@color/text_secondary"
|
||||||
tools:drawableTop="@drawable/ic_receive_tokens"
|
android:textSize="11sp" />
|
||||||
tools:text="Получить" />
|
</LinearLayout>
|
||||||
|
|
||||||
<TextView
|
<LinearLayout
|
||||||
android:id="@+id/viewAssetsTotalBalanceSwap"
|
android:id="@+id/viewAssetsTotalBalanceSwap"
|
||||||
style="@style/Widget.Nova.ActionButton"
|
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:breakStrategy="high_quality"
|
android:orientation="vertical"
|
||||||
android:hyphenationFrequency="full"
|
android:gravity="center"
|
||||||
android:paddingBottom="8dp"
|
android:clickable="true"
|
||||||
|
android:focusable="true"
|
||||||
|
android:paddingVertical="6dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="48dp"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:background="@drawable/bg_action_circle_secondary"
|
||||||
|
android:padding="13dp"
|
||||||
|
android:src="@drawable/ic_swap"
|
||||||
|
app:tint="@color/icon_primary" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
android:text="@string/wallet_asset_swap"
|
android:text="@string/wallet_asset_swap"
|
||||||
app:drawableTopCompat="@drawable/ic_swap"
|
android:textColor="@color/text_secondary"
|
||||||
tools:drawableTop="@drawable/ic_swap" />
|
android:textSize="11sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<TextView
|
<LinearLayout
|
||||||
android:id="@+id/viewAssetsTotalBalanceBuy"
|
android:id="@+id/viewAssetsTotalBalanceBuy"
|
||||||
style="@style/Widget.Nova.ActionButton"
|
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:breakStrategy="high_quality"
|
android:orientation="vertical"
|
||||||
android:hyphenationFrequency="full"
|
android:gravity="center"
|
||||||
android:paddingBottom="8dp"
|
android:clickable="true"
|
||||||
android:text="@string/wallet_asset_buy_sell"
|
android:focusable="true"
|
||||||
app:drawableTopCompat="@drawable/ic_buy_tokens"
|
android:paddingVertical="6dp">
|
||||||
tools:drawableTop="@drawable/ic_buy" />
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="48dp"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:background="@drawable/bg_action_circle_secondary"
|
||||||
|
android:padding="13dp"
|
||||||
|
android:src="@drawable/ic_buy_tokens"
|
||||||
|
app:tint="@color/icon_primary" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
|
android:text="@string/wallet_asset_buy_sell"
|
||||||
|
android:textColor="@color/text_secondary"
|
||||||
|
android:textSize="11sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
android:id="@+id/viewAssetsTotalBalanceGift"
|
android:id="@+id/viewAssetsTotalBalanceGift"
|
||||||
style="@style/Widget.Nova.ActionButton"
|
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:breakStrategy="high_quality"
|
android:orientation="vertical"
|
||||||
android:hyphenationFrequency="full"
|
android:gravity="center"
|
||||||
android:paddingBottom="8dp"
|
android:clickable="true"
|
||||||
|
android:focusable="true"
|
||||||
|
android:paddingVertical="6dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="48dp"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:background="@drawable/bg_action_circle_secondary"
|
||||||
|
android:padding="13dp"
|
||||||
|
android:src="@drawable/ic_gift_card"
|
||||||
|
app:tint="@color/icon_primary" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
android:text="@string/common_gift"
|
android:text="@string/common_gift"
|
||||||
app:drawableTopCompat="@drawable/ic_gift_card"
|
android:textColor="@color/text_secondary"
|
||||||
tools:drawableTop="@drawable/ic_gift_card" />
|
android:textSize="11sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
android:id="@+id/logoImg"
|
android:id="@+id/logoImg"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:scaleType="centerCrop"
|
android:scaleType="fitCenter"
|
||||||
android:src="@drawable/ic_create_wallet_background"
|
android:src="@drawable/ic_create_wallet_background"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/welcomeCreateWalletButton"
|
app:layout_constraintBottom_toTopOf="@+id/welcomeCreateWalletButton"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
|||||||
@@ -160,15 +160,11 @@ internal class FeeLoaderV2Provider<F, D>(
|
|||||||
|
|
||||||
fee.emit(FeeStatus.Error)
|
fee.emit(FeeStatus.Error)
|
||||||
|
|
||||||
// Show detailed error in retry dialog with runtime diagnostics
|
|
||||||
val diagnostics = try {
|
|
||||||
io.novafoundation.nova.runtime.multiNetwork.runtime.RuntimeFactory.lastDiagnostics
|
|
||||||
} catch (e: Exception) { "N/A" }
|
|
||||||
retryEvent.postValue(
|
retryEvent.postValue(
|
||||||
Event(
|
Event(
|
||||||
RetryPayload(
|
RetryPayload(
|
||||||
title = resourceManager.getString(R.string.choose_amount_network_error),
|
title = resourceManager.getString(R.string.choose_amount_network_error),
|
||||||
message = "DEBUG: $errorMsg | Runtime: $diagnostics",
|
message = resourceManager.getString(R.string.choose_amount_error_fee),
|
||||||
onRetry = { loadFee(feeConstructor) },
|
onRetry = { loadFee(feeConstructor) },
|
||||||
onCancel = { }
|
onCancel = { }
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -47,10 +47,6 @@ class RuntimeFactory(
|
|||||||
private val gson: Gson,
|
private val gson: Gson,
|
||||||
private val concurrencyLimit: Int = 1
|
private val concurrencyLimit: Int = 1
|
||||||
) {
|
) {
|
||||||
companion object {
|
|
||||||
@Volatile
|
|
||||||
var lastDiagnostics: String = "not yet initialized"
|
|
||||||
}
|
|
||||||
|
|
||||||
private val dispatcher = newLimitedThreadPoolExecutor(concurrencyLimit).asCoroutineDispatcher()
|
private val dispatcher = newLimitedThreadPoolExecutor(concurrencyLimit).asCoroutineDispatcher()
|
||||||
private val semaphore = Semaphore(concurrencyLimit)
|
private val semaphore = Semaphore(concurrencyLimit)
|
||||||
@@ -110,11 +106,6 @@ class RuntimeFactory(
|
|||||||
|
|
||||||
val typeRegistry = TypeRegistry(finalTypes, DynamicTypeResolver(DynamicTypeResolver.DEFAULT_COMPOUND_EXTENSIONS + GenericsExtension))
|
val typeRegistry = TypeRegistry(finalTypes, DynamicTypeResolver(DynamicTypeResolver.DEFAULT_COMPOUND_EXTENSIONS + GenericsExtension))
|
||||||
|
|
||||||
// Store diagnostic info for error messages
|
|
||||||
val hasExtrinsicSignature = typeRegistry["ExtrinsicSignature"] != null
|
|
||||||
val hasAddress = typeRegistry["Address"] != null
|
|
||||||
lastDiagnostics = "typesUsage=$typesUsage, ExtrinsicSig=$hasExtrinsicSignature, Address=$hasAddress, typeCount=${finalTypes.size}"
|
|
||||||
|
|
||||||
val runtimeMetadata = VersionedRuntimeBuilder.buildMetadata(metadataReader, typeRegistry)
|
val runtimeMetadata = VersionedRuntimeBuilder.buildMetadata(metadataReader, typeRegistry)
|
||||||
|
|
||||||
ConstructedRuntime(
|
ConstructedRuntime(
|
||||||
|
|||||||