Skip to content

Commit fccf77d

Browse files
committed
Redesign home screen (Revolut-inspired) + harden database layer
Home screen redesign: - Large centered balance with fiat primary display (USD when price available) - FAIR amount as subtitle, 24h change pill (green/red) - Wallet name header with tap-to-switch + sync dot indicator - Quick action buttons row (Send, Receive, Contacts, Masternode) - Activity feed with 10 recent transactions (up from 5) - Cleaner dividers between sections, no more card-in-card nesting - Empty state with icon placeholder TransactionItem redesign: - MaterialCommunityIcons instead of Unicode arrows - Color-coded icon backgrounds per transaction type - PENDING badge for unconfirmed transactions - Cleaner time formatting (shows date after 7 days) - Removed confirmation count (shown in detail screen instead) Database hardening: - Single SQL batch for schema init (was 16 sequential awaits) - PRAGMA synchronous=NORMAL for WAL performance - UTXORow.value is now TEXT (was number) to preserve bigint precision - insertHeadersBatch() with prepared statement for SPV sync performance - getHeaderByHash() for SPV chain validation - updateTransactionConfirmation() for confirmation updates - getUTXOCount() for stats - withTransaction() for atomic multi-write operations - Compound index on utxos(spent, address) for common queries - searchContacts escapes LIKE wildcards in user input - insertUTXO accepts bigint or string for value parameter
1 parent 5206839 commit fccf77d

27 files changed

Lines changed: 565 additions & 331 deletions

.github/workflows/build-android.yml

Lines changed: 5 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ jobs:
2323
- name: Checkout repository
2424
uses: actions/checkout@v4
2525

26-
- name: Set up Java 17
26+
- name: Set up Java 21
2727
uses: actions/setup-java@v4
2828
with:
2929
distribution: "temurin"
30-
java-version: "17"
30+
java-version: "21"
3131

3232
- name: Set up Node.js
3333
uses: actions/setup-node@v4
@@ -48,31 +48,7 @@ jobs:
4848
- name: Prebuild Android project
4949
run: bunx expo prebuild --platform android --clean
5050

51-
- name: Enable ProGuard and ABI splits
52-
run: |
53-
# Enable ProGuard/R8 minification and per-ABI split
54-
cat >> android/app/build.gradle << 'GRADLE'
55-
56-
android {
57-
buildTypes {
58-
release {
59-
minifyEnabled true
60-
shrinkResources true
61-
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
62-
}
63-
}
64-
splits {
65-
abi {
66-
enable true
67-
reset()
68-
include "arm64-v8a", "armeabi-v7a", "x86_64"
69-
universalApk true
70-
}
71-
}
72-
}
73-
GRADLE
74-
75-
- name: Build Release APKs
51+
- name: Build Release APK
7652
run: |
7753
cd android
7854
chmod +x gradlew
@@ -84,31 +60,17 @@ jobs:
8460
run: |
8561
VERSION="${GITHUB_REF_NAME:-${{ github.event.inputs.release_tag || 'dev' }}}"
8662
mkdir -p apk-output
87-
88-
# Find all release APKs
8963
for apk in $(find android/app/build/outputs/apk/release -name "*.apk"); do
9064
filename=$(basename "$apk")
91-
if echo "$filename" | grep -q "arm64"; then
92-
cp "$apk" "apk-output/FAIRWallet-${VERSION}-arm64.apk"
93-
elif echo "$filename" | grep -q "armeabi"; then
94-
cp "$apk" "apk-output/FAIRWallet-${VERSION}-arm32.apk"
95-
elif echo "$filename" | grep -q "x86_64"; then
96-
cp "$apk" "apk-output/FAIRWallet-${VERSION}-x86_64.apk"
97-
elif echo "$filename" | grep -q "universal"; then
98-
cp "$apk" "apk-output/FAIRWallet-${VERSION}-universal.apk"
99-
else
100-
cp "$apk" "apk-output/FAIRWallet-${VERSION}.apk"
101-
fi
65+
cp "$apk" "apk-output/FAIRWallet-${VERSION}.apk"
10266
done
103-
10467
echo "=== Built APKs ==="
10568
ls -lh apk-output/
106-
echo "APK_DIR=apk-output" >> $GITHUB_ENV
10769
10870
- name: Upload APKs as artifact
10971
uses: actions/upload-artifact@v4
11072
with:
111-
name: FAIRWallet-APKs
73+
name: FAIRWallet-APK
11274
path: apk-output/*.apk
11375
retention-days: 90
11476

app.json

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,7 @@
2424
{
2525
"action": "VIEW",
2626
"autoVerify": false,
27-
"data": [
28-
{
29-
"scheme": "faircoin"
30-
}
31-
],
27+
"data": [{ "scheme": "faircoin" }],
3228
"category": ["DEFAULT", "BROWSABLE"]
3329
}
3430
]
@@ -43,12 +39,8 @@
4339
"expo-secure-store",
4440
"expo-sqlite",
4541
"expo-local-authentication",
46-
[
47-
"expo-camera",
48-
{
49-
"cameraPermission": "FAIRWallet needs camera access to scan QR codes."
50-
}
51-
]
42+
["expo-camera", { "cameraPermission": "FAIRWallet needs camera access to scan QR codes." }],
43+
"./plugins/withGradle813"
5244
],
5345
"experiments": {
5446
"typedRoutes": true

0 commit comments

Comments
 (0)