Major fixes:
- Replace `any` types with proper TypeScript types across all files
- Convert require() imports to ES module imports
- Add __DEV__ guards to console statements
- Escape special characters in JSX (' and ")
- Fix unused variables (prefix with _ or remove)
- Fix React hooks violations (useCallback, useMemo patterns)
- Convert wasm-crypto-shim.js to TypeScript
- Add eslint-disable comments for valid setState patterns
Files affected: 50+ screens, components, contexts, and services
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add expo-camera package for QR scanning
- Create QRScannerModal component with camera permission handling
- Integrate scanner into WalletScreen scan button
- Support substrate: and pezkuwi: URI formats with amount parameter
- Add address validation before opening send modal
- Configure camera permissions for iOS and Android in app.json
BREAKING: Removed multi-language support (i18n) - will be re-added later
Changes:
- Removed i18n system (6 language files, LanguageContext)
- Expanded WalletScreen, SettingsScreen, SwapScreen with more features
- Added KurdistanSun component, HEZ/PEZ token icons
- Added EditProfileScreen, WalletSetupScreen
- Added button e2e tests (Profile, Settings, Wallet)
- Updated plan: honest assessment - 42 nav buttons with mock data
- Fixed terminology: Polkadot→Pezkuwi, Substrate→Bizinikiwi
Reality check: UI complete with mock data, converting to production one-by-one
Changed token logos to match web interface:
- HEZ: 💎 → 🟡 (yellow circle)
- PEZ: 🪙 → 🟣 (purple circle)
- USDT: 💵 (unchanged)
This ensures consistent branding across web and mobile platforms.
User experience improvement:
- Display "USDT" (Tether USD) in UI instead of "wUSDT"
- Backend still uses wUSDT (asset ID 2) for blockchain transactions
- Similar to trcUSDT on Tron - users see USDT, wrapped token works behind the scenes
- Updated all references: symbol, balance keys, transaction logic
This maintains the wrapped token architecture while providing familiar USDT branding.
This commit implements the complete blockchain integration for the mobile app's wallet functionality:
**Polkadot.js Integration:**
- Created PolkadotContext for mobile with full blockchain connectivity
- Implemented wallet creation with mnemonic seed phrases
- Added secure key management with AsyncStorage
- Connected to Pezkuwi testnet (wss://beta-rpc.pezkuwi.art)
**WalletScreen Enhancements:**
- Live blockchain balance fetching for HEZ (native token)
- Live balance fetching for PEZ and wUSDT (assets)
- Real-time balance updates every 30 seconds
- Actual send transactions using api.tx.balances.transfer (HEZ)
- Actual send transactions using api.tx.assets.transfer (PEZ, wUSDT)
- Transaction signing with user's keypair
- Loading states and error handling
- Wallet creation flow for new users
- Connect/disconnect wallet functionality
**Bottom Navigation:**
- Created BottomTabNavigator with 5 tabs
- Added WalletScreen with live blockchain integration
- Added BeCitizenScreen (citizenship application)
- Added ReferralScreen (referral program)
- Renamed SettingsScreen to ProfileScreen
- Custom center button for "Be Citizen" feature
**App Structure:**
- Wrapped app with PolkadotProvider in App.tsx
- Updated AppNavigator to use BottomTabNavigator
- Integrated language selection flow with blockchain features
All wallet features now use live blockchain data instead of mock data.