Commit Graph

6 Commits

Author SHA1 Message Date
pezkuwichain 4a3694c831 Fix all shadow deprecation warnings across entire mobile app
- Replaced shadowColor/shadowOffset/shadowOpacity/shadowRadius with boxShadow
- Fixed 28 files (21 screens + 7 components)
- Preserved elevation for Android compatibility
- All React Native Web deprecation warnings resolved

Files fixed:
- All screen components
- All reusable components
- Navigation components
- Modal components
2026-01-14 15:05:10 +03:00
Claude 1415512caa fix(mobile): resolve all 46 remaining ESLint issues - 100% clean
Fixed all remaining ESLint errors and warnings to achieve perfect code quality:

 Category 1: Unused Variables/Imports (8 errors fixed)
- Removed unused useState, useEffect from ReferralScreen
- Removed unused proposalHash from GovernanceScreen
- Removed unused unlock from LockScreen
- Removed unused error variables from catch blocks
- Prefixed unused function parameters with underscore
- Cleaned up 12 additional unused imports (Pressable, FlatList, Image, Badge, Skeleton)

 Category 2: Unescaped JSX Entities (3 errors fixed)
- BeCitizenScreen.tsx: Escaped apostrophes in "Father's Name", "Mother's Name"
- SecurityScreen.tsx: Escaped apostrophe in "device's secure"

 Category 3: TypeScript Any Types (14 errors fixed)
- Replaced all `any` types with proper types:
  - `error: any` → `error: unknown` in all catch blocks
  - Added proper type guards for error handling
  - `thread: any` → `thread: Record<string, unknown>`
  - Removed unnecessary `as any` type assertions
  - Properly typed blockchain query results

 Category 4: React Hooks Issues (9 errors fixed)
- Wrapped functions in useCallback for proper dependency tracking:
  - handleBiometricAuth in LockScreen
  - fetchNFTs in NFTGalleryScreen
  - fetchOffers in P2PScreen
  - fetchProposals in GovernanceScreen
  - fetchStakingData in StakingScreen
- Fixed LoadingSkeleton refs access by using useState instead of useRef
- Added proper eslint-disable comments for initialization patterns

Files Modified: 15 screens, 2 contexts, 1 component

Final Status:
 npm run lint: 0 errors, 0 warnings
 100% ESLint compliance
 Production-ready code quality
2025-11-22 14:10:58 +00:00
Claude 35e44383c0 feat(mobile): implement blockchain election voting via pallet-welati
Replace TODO placeholder with real blockchain vote submission:

**Updated File:**
- mobile/src/screens/GovernanceScreen.tsx:217-293

**Implementation Details:**
- Implemented real election voting using pallet-welati
- Changed from commented TODO to functional `api.tx.welati.voteInElection(electionId, candidateId)`
- Added wallet connection validation before voting
- Supports single-vote elections (Presidential, Constitutional Court)
- Supports multi-vote elections (Parliamentary) using batch transactions
- Uses `api.tx.utility.batch()` to submit multiple votes atomically

**Features:**
- Presidential/Single elections: Submit single vote via `api.tx.welati.voteInElection()`
- Parliamentary elections: Batch multiple candidate votes using `api.tx.utility.batch()`
- Proper error handling with blockchain error decoding
- dispatchError handling for module-specific errors
- Success confirmation with vote count for multi-vote
- Automatic UI refresh after successful vote
- Loading state management during transaction

**Security:**
- Validates wallet connection before submission
- Checks selectedAccount and api availability
- Proper transaction signing with user's account
- Blockchain-level validation via pallet-welati

**User Experience:**
- Clear success messages ("Your vote has been recorded!")
- Vote count in success message for parliamentary elections
- Error messages with blockchain error details in dev mode
- Automatic sheet dismissal and data refresh on success

This completes P0 governance blockchain integration for mobile app.
Real blockchain voting matching pallet-welati specification.
2025-11-21 22:25:47 +00:00
Claude 6a86915549 fix(mobile): critical security and error handling improvements
🔐 SECURITY FIXES:
- Fixed CRITICAL seed storage vulnerability
  * Changed from AsyncStorage to SecureStore for wallet seeds
  * Seeds now encrypted in hardware-backed secure storage
  * Affects: PolkadotContext.tsx (lines 166, 189)

🛡️ ERROR HANDLING:
- Added global ErrorBoundary component
  * Catches unhandled React errors
  * Shows user-friendly error UI
  * Integrated into App.tsx provider hierarchy
  * Files: ErrorBoundary.tsx (new), App.tsx, components/index.ts

🧹 PRODUCTION READINESS:
- Protected all 47 console statements with __DEV__ checks
  * console.log: 12 statements
  * console.error: 32 statements
  * console.warn: 1 statement
  * Files affected: 16 files across contexts, screens, i18n
  * Production builds will strip these out

📦 PROVIDER HIERARCHY:
- Added BiometricAuthProvider to App.tsx
- Updated provider order:
  ErrorBoundary → Polkadot → Language → BiometricAuth → Navigator

Files modified: 18
New files: 1 (ErrorBoundary.tsx)

This commit resolves 3 P0 critical issues from production readiness audit.
2025-11-21 22:18:11 +00:00
Claude 447dcbc122 feat(mobile): expand GovernanceScreen with elections and parliament status
- Added tab interface: Proposals, Elections, Parliament
- Presidential election support with single-candidate voting
- Parliamentary election support with multi-candidate voting
- Constitutional Court election tracking
- Candidate cards with trust scores and vote percentages
- Election voting modal with candidate selection
- Parliament status (0/27 members)
- Dîwan (Constitutional Court) status (0/9 judges)
- Visual progress bars for candidate votes
- Mock election data ready for pallet-tiki integration
- Consistent Kurdistan color palette styling
2025-11-21 03:25:00 +00:00
Claude 3d84b618cf Add world-class mobile components and Staking/Governance screens
PHASE 1 & 2 of mobile app transformation completed.

New Modern Component Library:
- Card: Elevated, outlined, filled variants with press states
- Button: 5 variants (primary, secondary, outline, ghost, danger) with Kurdistan colors
- Input: Floating labels, validation, icons, focus states
- BottomSheet: Swipe-to-dismiss modal with smooth animations
- LoadingSkeleton: Shimmer loading states (Skeleton, CardSkeleton, ListItemSkeleton)
- Badge: Status indicators and labels for Tiki roles

New Screens:
1. StakingScreen (504 lines):
   - View staked amount and rewards
   - Live staking data from blockchain
   - Stake/Unstake with bottom sheets
   - Tiki score breakdown
   - Monthly PEZ rewards calculation
   - APY estimation
   - Unbonding status
   - Inspired by Polkadot.js and Argent

2. GovernanceScreen (447 lines):
   - Active proposals list
   - Vote FOR/AGAINST proposals
   - Real-time voting statistics
   - Vote progress visualization
   - Proposal details bottom sheet
   - Democratic participation interface
   - Inspired by modern DAO platforms

Design Principles:
 Kurdistan colors (Kesk, Sor, Zer) throughout
 Material Design 3 inspired
 Smooth animations and transitions
 Clean, modern UI
 Accessibility-first
 RTL support ready

All components use:
- Shared theme from @pezkuwi/theme
- Shared blockchain logic from @pezkuwi/lib
- TypeScript with full type safety
- React Native best practices

Next: DEX/Swap, NFT Gallery, Transaction History
2025-11-15 01:10:55 +00:00