diff --git a/QWEN.md b/QWEN.md index b7954b6..d0ee346 100644 --- a/QWEN.md +++ b/QWEN.md @@ -540,3 +540,4 @@ Contoh: - User akan review dan tambahkan sendiri jika perlu Profile screens: PADDING_INLINE dihapus dari edit.tsx dan create.tsx +- User ingin mengecek semua user layout tabs setelah perubahan height layout tabs donation di constants. Pattern yang perlu dicek: semua tabs screens harus pakai contentPadding={PADDING_INLINE} untuk konsistensi layout. diff --git a/app/(application)/(user)/crowdfunding/index.tsx b/app/(application)/(user)/crowdfunding/index.tsx index 0a5a76a..ee9d6ab 100644 --- a/app/(application)/(user)/crowdfunding/index.tsx +++ b/app/(application)/(user)/crowdfunding/index.tsx @@ -1,9 +1,9 @@ import { BaseBox, Grid, + OS_Wrapper, StackCustom, TextCustom, - ViewWrapper, } from "@/components"; import { MainColor } from "@/constants/color-palet"; import { ICON_SIZE_SMALL } from "@/constants/constans-value"; @@ -25,7 +25,7 @@ export default function Crowdfunding() { ]; return ( - + ))} - + ); } diff --git a/app/(application)/(user)/donation/(tabs)/_layout.tsx b/app/(application)/(user)/donation/(tabs)/_layout.tsx index 88a7d59..45348a2 100644 --- a/app/(application)/(user)/donation/(tabs)/_layout.tsx +++ b/app/(application)/(user)/donation/(tabs)/_layout.tsx @@ -1,5 +1,5 @@ import { IconHome, IconStatus } from "@/components/_Icon"; -import { ICON_SIZE_SMALL } from "@/constants/constans-value"; +import { ICON_SIZE_SMALL, OS_ANDROID_HEIGHT, OS_IOS_HEIGHT } from "@/constants/constans-value"; import { TabsStyles } from "@/styles/tabs-styles"; import { FontAwesome5 @@ -23,12 +23,12 @@ function DonationTabsWrapper() { ios: { borderTopWidth: 0, paddingTop: 12, - height: 80, + height: OS_IOS_HEIGHT, }, android: { borderTopWidth: 0, paddingTop: 5, - height: 70 + paddingBottom, + height: OS_ANDROID_HEIGHT + paddingBottom, }, }), }} diff --git a/app/(application)/(user)/donation/[id]/(news)/[news]/edit-news.tsx b/app/(application)/(user)/donation/[id]/(news)/[news]/edit-news.tsx index 78094fa..eb29d72 100644 --- a/app/(application)/(user)/donation/[id]/(news)/[news]/edit-news.tsx +++ b/app/(application)/(user)/donation/[id]/(news)/[news]/edit-news.tsx @@ -5,11 +5,11 @@ import { ButtonCustom, InformationBox, LandscapeFrameUploaded, + OS_Wrapper, Spacing, StackCustom, TextAreaCustom, TextInputCustom, - ViewWrapper, } from "@/components"; import API_STRORAGE from "@/constants/base-url-api-strorage"; import DIRECTORY_ID from "@/constants/directory-id"; @@ -105,7 +105,9 @@ export default function DonationEditNews() { }; return ( - - + ); } diff --git a/app/(application)/(user)/donation/[id]/(news)/[news]/index.tsx b/app/(application)/(user)/donation/[id]/(news)/[news]/index.tsx index 4d9b4cd..27a6eab 100644 --- a/app/(application)/(user)/donation/[id]/(news)/[news]/index.tsx +++ b/app/(application)/(user)/donation/[id]/(news)/[news]/index.tsx @@ -7,9 +7,9 @@ import { DrawerCustom, DummyLandscapeImage, MenuDrawerDynamicGrid, + OS_Wrapper, StackCustom, TextCustom, - ViewWrapper, } from "@/components"; import AppHeader from "@/components/_ShareComponent/AppHeader"; import { IconEdit } from "@/components/_Icon"; @@ -28,6 +28,7 @@ import { } from "expo-router"; import { useCallback, useState } from "react"; import Toast from "react-native-toast-message"; +import { dateTimeView } from "@/utils/dateTimeView"; export default function DonationNews() { const { user } = useAuth(); @@ -71,11 +72,11 @@ export default function DonationNews() { ), }} /> - + - - {formatChatTime(data?.createdAt)} + + {dateTimeView({date: data?.createdAt})} {data && data.imageId && ( @@ -89,7 +90,7 @@ export default function DonationNews() { {data?.deskripsi || "-"} - + - + ); } diff --git a/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/failed.tsx b/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/failed.tsx index b715c52..4841ae0 100644 --- a/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/failed.tsx +++ b/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/failed.tsx @@ -2,10 +2,10 @@ import { BaseBox, Grid, + OS_Wrapper, Spacing, StackCustom, TextCustom, - ViewWrapper, } from "@/components"; import { MainColor } from "@/constants/color-palet"; import { apiDonationGetInvoiceById } from "@/service/api-client/api-donation"; @@ -63,7 +63,7 @@ export default function DonasiFailed() { ]; return ( - + @@ -105,6 +105,6 @@ export default function DonasiFailed() { - + ); } diff --git a/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/invoice.tsx b/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/invoice.tsx index 943ec6d..9fab646 100644 --- a/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/invoice.tsx +++ b/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/invoice.tsx @@ -6,10 +6,10 @@ import { ButtonCustom, Grid, InformationBox, + OS_Wrapper, Spacing, StackCustom, TextCustom, - ViewWrapper, } from "@/components"; import CopyButton from "@/components/Button/CoyButton"; import { MainColor } from "@/constants/color-palet"; @@ -101,8 +101,7 @@ export default function DonationInvoice() { return ( <> - - + ); } diff --git a/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/process.tsx b/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/process.tsx index d08401b..c1f2ede 100644 --- a/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/process.tsx +++ b/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/process.tsx @@ -1,11 +1,11 @@ -import { BaseBox, StackCustom, TextCustom, ViewWrapper } from "@/components"; +import { BaseBox, OS_Wrapper, StackCustom, TextCustom } from "@/components"; import MoneyTransferAnimation from "@/components/_ShareComponent/MoneyTransferAnimation"; import { View } from "react-native"; export default function DonationProcess() { return ( <> - + @@ -35,7 +35,7 @@ export default function DonationProcess() { */} - + ); } diff --git a/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/success.tsx b/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/success.tsx index eb9f456..903e428 100644 --- a/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/success.tsx +++ b/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/success.tsx @@ -2,10 +2,10 @@ import { BaseBox, Grid, + OS_Wrapper, Spacing, StackCustom, TextCustom, - ViewWrapper, } from "@/components"; import { MainColor } from "@/constants/color-palet"; import { apiDonationGetInvoiceById } from "@/service/api-client/api-donation"; @@ -63,7 +63,7 @@ export default function DonationSuccess() { ]; return ( - + @@ -105,7 +105,7 @@ export default function DonationSuccess() { - + ); } diff --git a/app/(application)/(user)/donation/[id]/(transaction-flow)/index.tsx b/app/(application)/(user)/donation/[id]/(transaction-flow)/index.tsx index ef31135..972730a 100644 --- a/app/(application)/(user)/donation/[id]/(transaction-flow)/index.tsx +++ b/app/(application)/(user)/donation/[id]/(transaction-flow)/index.tsx @@ -3,9 +3,9 @@ import { BoxButtonOnFooter, ButtonCustom, Grid, + OS_Wrapper, TextCustom, TextInputCustom, - ViewWrapper, } from "@/components"; import { MainColor } from "@/constants/color-palet"; import { ICON_SIZE_SMALL } from "@/constants/constans-value"; @@ -64,7 +64,7 @@ export default function InvestmentInputDonation() { ); return ( <> - + {listData.map((item, i) => ( setNominal(item.value)}> @@ -98,7 +98,7 @@ export default function InvestmentInputDonation() { Minimal donasi Rp. 10.000 - + ); } diff --git a/app/(application)/(user)/donation/[id]/(transaction-flow)/select-bank.tsx b/app/(application)/(user)/donation/[id]/(transaction-flow)/select-bank.tsx index 558bee0..a78d0c4 100644 --- a/app/(application)/(user)/donation/[id]/(transaction-flow)/select-bank.tsx +++ b/app/(application)/(user)/donation/[id]/(transaction-flow)/select-bank.tsx @@ -2,7 +2,7 @@ import { BaseBox, BoxButtonOnFooter, ButtonCustom, - ViewWrapper, + OS_Wrapper, } from "@/components"; import { RadioCustom, RadioGroup } from "@/components/Radio/RadioCustom"; import { LOCAL_STORAGE_KEY } from "@/constants/local-storage-key"; @@ -91,7 +91,7 @@ export default function DonationSelectBank() { ); }; return ( - + {_.isEmpty(listBank) ? [] @@ -101,6 +101,6 @@ export default function DonationSelectBank() { ))} - + ); } diff --git a/app/(application)/(user)/donation/[id]/[status]/detail.tsx b/app/(application)/(user)/donation/[id]/[status]/detail.tsx index a67320f..c1fa59b 100644 --- a/app/(application)/(user)/donation/[id]/[status]/detail.tsx +++ b/app/(application)/(user)/donation/[id]/[status]/detail.tsx @@ -4,7 +4,7 @@ import { DotButton, DrawerCustom, MenuDrawerDynamicGrid, - NewWrapper, + OS_Wrapper, Spacing, } from "@/components"; import AppHeader from "@/components/_ShareComponent/AppHeader"; @@ -113,7 +113,7 @@ export default function DonasiDetailStatus() { ), }} /> - )} - + + {data?.pembukaan || "-"} {data?.cerita || "-"} - + ); } diff --git a/app/(application)/(user)/donation/[id]/edit-rekening.tsx b/app/(application)/(user)/donation/[id]/edit-rekening.tsx index 7e71a1e..25c2250 100644 --- a/app/(application)/(user)/donation/[id]/edit-rekening.tsx +++ b/app/(application)/(user)/donation/[id]/edit-rekening.tsx @@ -1,6 +1,6 @@ /* eslint-disable react-hooks/exhaustive-deps */ import { - ViewWrapper, + OS_Wrapper, StackCustom, InformationBox, TextInputCustom, @@ -76,7 +76,7 @@ export default function DonationEditRekening() { }; return ( - + - + ); } diff --git a/app/(application)/(user)/donation/[id]/edit-story.tsx b/app/(application)/(user)/donation/[id]/edit-story.tsx index b0aef59..02af19a 100644 --- a/app/(application)/(user)/donation/[id]/edit-story.tsx +++ b/app/(application)/(user)/donation/[id]/edit-story.tsx @@ -4,10 +4,10 @@ import { ButtonCustom, InformationBox, LandscapeFrameUploaded, + OS_Wrapper, Spacing, StackCustom, TextAreaCustom, - ViewWrapper, } from "@/components"; import API_IMAGE from "@/constants/api-storage"; import DIRECTORY_ID from "@/constants/directory-id"; @@ -93,7 +93,7 @@ export default function DonationEditStory() { }; return ( - + - + ); } diff --git a/app/(application)/(user)/donation/[id]/edit.tsx b/app/(application)/(user)/donation/[id]/edit.tsx index 1d4d7fa..77bc5e2 100644 --- a/app/(application)/(user)/donation/[id]/edit.tsx +++ b/app/(application)/(user)/donation/[id]/edit.tsx @@ -6,12 +6,11 @@ import { InformationBox, LandscapeFrameUploaded, LoaderCustom, - NewWrapper, + OS_Wrapper, SelectCustom, Spacing, StackCustom, TextInputCustom, - ViewWrapper, } from "@/components"; import ListSkeletonComponent from "@/components/_ShareComponent/ListSkeletonComponent"; import API_IMAGE from "@/constants/api-storage"; @@ -184,7 +183,9 @@ export default function DonationEdit() { }; return ( - )} - + ); } diff --git a/app/(application)/(user)/donation/[id]/index.tsx b/app/(application)/(user)/donation/[id]/index.tsx index 06c0429..85ecaa0 100644 --- a/app/(application)/(user)/donation/[id]/index.tsx +++ b/app/(application)/(user)/donation/[id]/index.tsx @@ -6,9 +6,8 @@ import { DotButton, DrawerCustom, MenuDrawerDynamicGrid, - NewWrapper, + OS_Wrapper, StackCustom, - ViewWrapper, } from "@/components"; import AppHeader from "@/components/_ShareComponent/AppHeader"; import { IconNews } from "@/components/_Icon"; @@ -104,7 +103,7 @@ export default function DonasiDetailBeranda() { ), }} /> - + {!data ? ( ) : ( @@ -127,7 +126,7 @@ export default function DonasiDetailBeranda() { /> )} - + - + @@ -80,7 +80,7 @@ export default function DonationInformationFunrising() { )) )} - + ); } diff --git a/app/(application)/(user)/donation/create-story.tsx b/app/(application)/(user)/donation/create-story.tsx index bd325c3..dc38f1d 100644 --- a/app/(application)/(user)/donation/create-story.tsx +++ b/app/(application)/(user)/donation/create-story.tsx @@ -10,7 +10,7 @@ import { TextAreaCustom, TextInputCustom, } from "@/components"; -import NewWrapper from "@/components/_ShareComponent/NewWrapper"; +import OS_Wrapper from "@/components/_ShareComponent/OS_Wrapper"; import DIRECTORY_ID from "@/constants/directory-id"; import { useAuth } from "@/hooks/use-auth"; import { @@ -113,7 +113,9 @@ export default function DonationCreateStory() { }; return ( - @@ -184,6 +186,6 @@ export default function DonationCreateStory() { /> - + ); } diff --git a/app/(application)/(user)/donation/create.tsx b/app/(application)/(user)/donation/create.tsx index 330f751..6157826 100644 --- a/app/(application)/(user)/donation/create.tsx +++ b/app/(application)/(user)/donation/create.tsx @@ -5,12 +5,12 @@ import { InformationBox, LandscapeFrameUploaded, LoaderCustom, + OS_Wrapper, SelectCustom, Spacing, StackCustom, TextInputCustom, } from "@/components"; -import NewWrapper from "@/components/_ShareComponent/NewWrapper"; import DIRECTORY_ID from "@/constants/directory-id"; import { apiDonationCreate } from "@/service/api-client/api-donation"; import { apiMasterDonation } from "@/service/api-client/api-master"; @@ -126,7 +126,9 @@ export default function DonationCreate() { }; return ( - @@ -220,6 +222,6 @@ export default function DonationCreate() { )} - + ); } diff --git a/app/(application)/(user)/voting/(tabs)/_layout.tsx b/app/(application)/(user)/voting/(tabs)/_layout.tsx index 7b956b5..8eac092 100644 --- a/app/(application)/(user)/voting/(tabs)/_layout.tsx +++ b/app/(application)/(user)/voting/(tabs)/_layout.tsx @@ -6,6 +6,7 @@ import { } from "@/components/_Icon"; import AppHeader from "@/components/_ShareComponent/AppHeader"; import BackButtonFromNotification from "@/components/Button/BackButtonFromNotification"; +import { OS_ANDROID_HEIGHT, OS_IOS_HEIGHT } from "@/constants/constans-value"; import { TabsStyles } from "@/styles/tabs-styles"; import { router, Tabs, useLocalSearchParams } from "expo-router"; import { View } from "react-native"; @@ -30,12 +31,12 @@ function VotingTabsWrapper() { ios: { borderTopWidth: 0, paddingTop: 12, - height: 80, + height: OS_IOS_HEIGHT, }, android: { borderTopWidth: 0, paddingTop: 5, - height: 70 + paddingBottom, + height: OS_ANDROID_HEIGHT + paddingBottom, }, }), header: () => ( diff --git a/ios/HIPMIBadungConnect.xcodeproj/project.pbxproj b/ios/HIPMIBadungConnect.xcodeproj/project.pbxproj index a315e55..baa851f 100644 --- a/ios/HIPMIBadungConnect.xcodeproj/project.pbxproj +++ b/ios/HIPMIBadungConnect.xcodeproj/project.pbxproj @@ -156,6 +156,7 @@ 92A25C61F4E34FB6A36E415B /* Remove signature files (Xcode workaround) */, B122FE573BBA4E8C86B8F1C3 /* Remove signature files (Xcode workaround) */, ADB72F0A1419463BA2155F49 /* Remove signature files (Xcode workaround) */, + 21D46E3C915645A094ACF413 /* Remove signature files (Xcode workaround) */, ); buildRules = ( ); @@ -489,6 +490,23 @@ shellPath = /bin/sh; shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-HIPMIBadungConnect/expo-configure-project.sh\"\n"; }; + 21D46E3C915645A094ACF413 /* Remove signature files (Xcode workaround) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + name = "Remove signature files (Xcode workaround)"; + inputPaths = ( + ); + outputPaths = ( + ); + shellPath = /bin/sh; + shellScript = " + echo \"Remove signature files (Xcode workaround)\"; + rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\"; + "; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -531,7 +549,7 @@ ); OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; PRODUCT_BUNDLE_IDENTIFIER = "com.anonymous.hipmi-mobile"; - PRODUCT_NAME = HIPMIBadungConnect; + PRODUCT_NAME = "HIPMIBadungConnect"; SWIFT_OBJC_BRIDGING_HEADER = "HIPMIBadungConnect/HIPMIBadungConnect-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -562,7 +580,7 @@ ); OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = "com.anonymous.hipmi-mobile"; - PRODUCT_NAME = HIPMIBadungConnect; + PRODUCT_NAME = "HIPMIBadungConnect"; SWIFT_OBJC_BRIDGING_HEADER = "HIPMIBadungConnect/HIPMIBadungConnect-Bridging-Header.h"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; diff --git a/screens/Donation/ScreenBeranda.tsx b/screens/Donation/ScreenBeranda.tsx index 95b8842..8ca2892 100644 --- a/screens/Donation/ScreenBeranda.tsx +++ b/screens/Donation/ScreenBeranda.tsx @@ -1,7 +1,7 @@ import FloatingButton from "@/components/Button/FloatingButton"; -import NewWrapper from "@/components/_ShareComponent/NewWrapper"; +import { OS_Wrapper } from "@/components"; import { MainColor } from "@/constants/color-palet"; -import { PAGINATION_DEFAULT_TAKE } from "@/constants/constans-value"; +import { PADDING_INLINE, PAGINATION_DEFAULT_TAKE } from "@/constants/constans-value"; import { createPaginationComponents } from "@/helpers/paginationHelpers"; import { usePagination } from "@/hooks/use-pagination"; import Donation_BoxPublish from "@/screens/Donation/BoxPublish"; @@ -37,7 +37,8 @@ export default function Donation_ScreenBeranda() { }); return ( - ( diff --git a/screens/Donation/ScreenFundDisbursement.tsx b/screens/Donation/ScreenFundDisbursement.tsx index 3a3d358..22c6648 100644 --- a/screens/Donation/ScreenFundDisbursement.tsx +++ b/screens/Donation/ScreenFundDisbursement.tsx @@ -4,11 +4,13 @@ import { BaseBox, Grid, InformationBox, + OS_Wrapper, Spacing, StackCustom, TextCustom, } from "@/components"; import { MainColor } from "@/constants/color-palet"; +import { PADDING_INLINE } from "@/constants/constans-value"; import { usePagination } from "@/hooks/use-pagination"; import { apiDonationDisbursementOfFundsListById, @@ -23,7 +25,6 @@ import React, { useState } from "react"; import { RefreshControl, View } from "react-native"; import { createPaginationComponents } from "@/helpers/paginationHelpers"; import { PAGINATION_DEFAULT_TAKE } from "@/constants/constans-value"; -import NewWrapper from "@/components/_ShareComponent/NewWrapper"; import { Divider } from "react-native-paper"; interface Donation_ScreenFundDisbursementProps { @@ -155,7 +156,8 @@ export default function Donation_ScreenFundDisbursement({ ); return ( - - - **Created**: 2026-04-06 **Last Updated**: 2026-04-13 -**Status**: User Phase 1-7 Complete ✅ | Admin Phase 9 Complete ✅ (71 files migrated) -**Next**: User Phase 8 - Donation Screens OR Admin Phase 1-3 (HIGH Priority) +**Status**: User Phase 1-8 Complete ✅ | Admin Phase 9 Complete ✅ (104 files migrated) +**Next**: User Phase 9-11 (~6 files) OR Admin Phase 1-3 (HIGH Priority, ~9 files)