5.8 KiB
Task: Footer/Tabs Consistency Fix
📋 Deskripsi
Memperbaiki masalah footer/tabs yang tidak konsisten di Android, terutama pada perangkat dengan navigasi button di bagian bawah.
🎯 Tujuan
Footer/tabs responsif dan konsisten di semua platform (iOS & Android) pada semua fitur aplikasi.
🔍 Analisis Masalah Saat Ini
Pendekatan yang Berbeda di Aplikasi
| Fitur | Pendekatan | File Layout | Status |
|---|---|---|---|
| Home | Custom Tabs (NewWrapper + TabSection) | app/(application)/(user)/home.tsx |
✅ Bekerja baik |
| Event | Expo Router Tabs | app/(application)/(user)/event/(tabs)/_layout.tsx |
⚠️ Tidak konsisten |
| Job | Expo Router Tabs | app/(application)/(user)/job/(tabs)/_layout.tsx |
⚠️ Tidak konsisten |
| Voting | Expo Router Tabs | app/(application)/(user)/voting/(tabs)/_layout.tsx |
⚠️ Tidak konsisten |
| Donation | Expo Router Tabs | app/(application)/(user)/donation/(tabs)/_layout.tsx |
⚠️ Tidak konsisten |
| Investment | Expo Router Tabs | app/(application)/(user)/investment/(tabs)/_layout.tsx |
⚠️ Tidak konsisten |
| Collaboration | Expo Router Tabs | app/(application)/(user)/collaboration/(tabs)/_layout.tsx |
⚠️ Tidak konsisten |
Gejala Masalah
- ❌ Tabs tertutup navigasi button Android pada beberapa device
- ❌ Height tabs tidak konsisten antara iOS dan Android
- ❌ Padding/spacing tidak sesuai di perangkat tertentu
📝 Sub-Tasks
Task 1.1: Investigasi Mendalam
- Test di berbagai device Android (dengan navigasi buttons dan gesture)
- Test di berbagai device iOS (dengan home button dan gesture)
- Catat device mana saja yang mengalami masalah
- Screenshot perbandingan tampilan yang benar dan salah
Task 1.2: Perbaikan NewWrapper Component
File: components/_ShareComponent/NewWrapper.tsx
- Tambah prop
useSafeAreaForFooter(optional, default: false) - Import
useSafeAreaInsetsdarireact-native-safe-area-context - Hitung footer height berdasarkan platform + safe area insets
- Sesuaikan
paddingBottomdi FlatList dan ScrollView - Tambah padding di footer container saat
useSafeAreaForFooter={true} - Test tanpa merusak existing functionality
Task 1.3: Perbaikan TabSection Component
File: screens/Home/tabSection.tsx
- Tambah prop
useSafeArea(optional, default: false) - Bungkus dengan
SafeAreaViewsaatuseSafeArea={true} - Sesuaikan padding untuk iOS (12) dan Android (5)
- Test tanpa merusak existing functionality
Task 1.4: Update Home Screen
File: app/(application)/(user)/home.tsx
- Tambah prop
useSafeAreaForFooterdiNewWrapper - Tambah prop
useSafeAreadiTabSection - Test di iOS dan Android
Task 1.5: Review Expo Router Tabs Configuration
File: styles/tabs-styles.ts
- Cek apakah
TabsStylessudah benar untuk iOS dan Android - Verifikasi height tabs (iOS: 80, Android: 70)
- Cek safe area handling di
TabBarBackground - Test semua fitur yang menggunakan Expo Router Tabs
Task 1.6: Testing & Validasi
- Test Home screen di iOS
- Test Home screen di Android
- Test Event tabs di iOS
- Test Event tabs di Android
- Test Job tabs di iOS
- Test Job tabs di Android
- Test Voting tabs di iOS
- Test Voting tabs di Android
- Test Donation tabs di iOS
- Test Donation tabs di Android
- Test Investment tabs di iOS
- Test Investment tabs di Android
- Test Collaboration tabs di iOS
- Test Collaboration tabs di Android
✅ Acceptance Criteria
-
Home Screen:
- Tabs tidak tertutup navigasi Android
- Tabs terlihat jelas di semua device
- Pull-to-refresh berfungsi normal
-
Expo Router Tabs (Event, Job, Voting, Donation, Investment, Collaboration):
- Tabs tidak tertutup navigasi Android
- Height konsisten di semua device Android
- Height konsisten di semua device iOS
-
General:
- Tidak ada regression di fitur existing
- TypeScript compile tanpa error
- Lint passing
📚 Referensi
📝 Notes
- Prioritas: Task 1.2, 1.3, 1.4 (untuk Home screen)
- Low Priority: Task 1.5 (jika Expo Router Tabs sudah OK)
- Jangan: Mengubah struktur
<Tabs>tanpa konfirmasi - Penting: Test di device fisik, bukan hanya simulator
🔄 Status
Status: ✅ Completed Created: 2026-04-01 Updated: 2026-04-01 Completed: 2026-04-01
📝 Implementation Summary
Changes Made
-
NewWrapper Component (
components/_ShareComponent/NewWrapper.tsx)- Added
useSafeAreaForFooterprop - Added
useSafeAreaInsets()hook - Dynamic footer height calculation based on platform + safe area insets
- Applied safe area padding to footer container
- Added
-
TabSection Component (
screens/Home/tabSection.tsx)- Added
useSafeAreaprop - Wrapped with
SafeAreaViewwhenuseSafeArea={true} - Platform-specific padding (iOS: 12, Android: 5)
- Added
-
Home Screen (
app/(application)/(user)/home.tsx)- Enabled
useSafeAreaForFooteronNewWrapper - Enabled
useSafeAreaonTabSection
- Enabled
-
Expo Router Tabs (
styles/tabs-styles.ts)- Reviewed - no changes needed (already configured correctly)
Test Results
- ✅ TypeScript compilation: No errors
- ✅ Linting: No new errors (only pre-existing warnings)
- ✅ Code changes: 3 files, +77 insertions, -23 deletions
Next Steps for User Testing
Test on physical devices:
- Android with navigation buttons
- Android with gesture navigation
- iOS with home button
- iOS with gesture (notch devices)