feat: Complete User Phase 9 Investment screens migration + note known upload issue

- Migrate 24 investment screens to OS_Wrapper (tabs, list, detail, forms, transaction flow)
- Add contentPadding={PADDING_INLINE} to 9 list/tabs screens for consistent spacing
- Add enableKeyboardHandling to 6 form screens
- Fix investment tabs layout height to use OS_IOS_HEIGHT/OS_ANDROID_HEIGHT constants
- Update TASK-005 with known issue: upload image returns 500 error in dev env
- Note: Investment feature not fully complete - upload issue needs investigation tomorrow

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
2026-04-13 17:56:49 +08:00
parent 2f87776d8b
commit eb64c30d49
27 changed files with 153 additions and 123 deletions

View File

@@ -1,7 +1,6 @@
/* eslint-disable react-hooks/exhaustive-deps */
import { TextCustom } from "@/components";
import NewWrapper from "@/components/_ShareComponent/NewWrapper";
import { PAGINATION_DEFAULT_TAKE } from "@/constants/constans-value";
import { TextCustom, OS_Wrapper } from "@/components";
import { PAGINATION_DEFAULT_TAKE, PADDING_INLINE } from "@/constants/constans-value";
import { createPaginationComponents } from "@/helpers/paginationHelpers";
import { usePagination } from "@/hooks/use-pagination";
import Investment_BoxDetailDocument from "@/screens/Invesment/Document/RecapBoxDetail";
@@ -58,8 +57,9 @@ export default function Investment_ScreenListOfDocument() {
);
return (
<NewWrapper
<OS_Wrapper
hideFooter
contentPadding={PADDING_INLINE}
listData={pagination.listData}
renderItem={renderDocumentItem}
refreshControl={

View File

@@ -4,13 +4,13 @@ import {
BackButton,
DotButton,
DrawerCustom,
MenuDrawerDynamicGrid
MenuDrawerDynamicGrid,
OS_Wrapper,
} from "@/components";
import AppHeader from "@/components/_ShareComponent/AppHeader";
import { IconEdit } from "@/components/_Icon";
import NewWrapper from "@/components/_ShareComponent/NewWrapper";
import { MainColor } from "@/constants/color-palet";
import { ICON_SIZE_SMALL, PAGINATION_DEFAULT_TAKE } from "@/constants/constans-value";
import { ICON_SIZE_SMALL, PAGINATION_DEFAULT_TAKE, PADDING_INLINE } from "@/constants/constans-value";
import { createPaginationComponents } from "@/helpers/paginationHelpers";
import { usePagination } from "@/hooks/use-pagination";
import Investment_BoxDetailDocument from "@/screens/Invesment/Document/RecapBoxDetail";
@@ -143,8 +143,9 @@ export default function Investment_ScreenRecapOfDocument() {
}}
/>
<NewWrapper
<OS_Wrapper
hideFooter
contentPadding={PADDING_INLINE}
listData={pagination.listData}
renderItem={renderDocumentItem}
refreshControl={

View File

@@ -5,11 +5,12 @@ import {
DrawerCustom,
LoaderCustom,
MenuDrawerDynamicGrid,
OS_Wrapper,
TextCustom,
} from "@/components";
import AppHeader from "@/components/_ShareComponent/AppHeader";
import { IconPlus } from "@/components/_Icon";
import NewWrapper from "@/components/_ShareComponent/NewWrapper";
import { PADDING_INLINE } from "@/constants/constans-value";
import { usePagination } from "@/hooks/use-pagination";
import { apiInvestmentGetNews } from "@/service/api-client/api-investment";
import { router, Stack, useFocusEffect } from "expo-router";
@@ -75,8 +76,9 @@ export default function Investment_ScreenListOfNews({
}}
/>
<NewWrapper
<OS_Wrapper
hideFooter
contentPadding={PADDING_INLINE}
listData={pagination.listData}
renderItem={renderItem}
onEndReached={pagination.loadMore}

View File

@@ -6,19 +6,19 @@ import {
DrawerCustom,
LoaderCustom,
MenuDrawerDynamicGrid,
OS_Wrapper,
Spacing,
TextCustom,
} from "@/components";
import AppHeader from "@/components/_ShareComponent/AppHeader";
import { IconPlus } from "@/components/_Icon";
import NewWrapper from "@/components/_ShareComponent/NewWrapper";
import { PAGINATION_DEFAULT_TAKE, PADDING_INLINE } from "@/constants/constans-value";
import { createPaginationComponents } from "@/helpers/paginationHelpers";
import { usePagination } from "@/hooks/use-pagination";
import { apiInvestmentGetNews } from "@/service/api-client/api-investment";
import { router, Stack, useFocusEffect } from "expo-router";
import { useCallback, useState } from "react";
import { RefreshControl } from "react-native";
import { createPaginationComponents } from "@/helpers/paginationHelpers";
import { PAGINATION_DEFAULT_TAKE } from "@/constants/constans-value";
import Investment_BoxNews from "./BoxNews";
interface InvestmentRecapOfNewsProps {
@@ -76,8 +76,9 @@ export default function Investment_ScreenRecapOfNews({
),
}}
/>
<NewWrapper
<OS_Wrapper
hideFooter
contentPadding={PADDING_INLINE}
listData={pagination.listData}
renderItem={renderItem}
onEndReached={pagination.loadMore}

View File

@@ -1,8 +1,9 @@
import {
FloatingButton,
OS_Wrapper,
TextCustom,
} from "@/components";
import NewWrapper from "@/components/_ShareComponent/NewWrapper";
import { PADDING_INLINE } from "@/constants/constans-value";
import { PAGINATION_DEFAULT_TAKE } from "@/constants/constans-value";
import { createPaginationComponents } from "@/helpers/paginationHelpers";
import { usePagination } from "@/hooks/use-pagination";
@@ -46,7 +47,8 @@ export default function Investment_ScreenBursa() {
);
return (
<NewWrapper
<OS_Wrapper
contentPadding={PADDING_INLINE}
listData={pagination.listData}
renderItem={renderInvestmentItem}
refreshControl={

View File

@@ -3,12 +3,12 @@ import {
AvatarUsernameAndOtherComponent,
BoxWithHeaderSection,
CenterCustom,
OS_Wrapper,
Spacing,
StackCustom,
TextCustom,
} from "@/components";
import NewWrapper from "@/components/_ShareComponent/NewWrapper";
import { PAGINATION_DEFAULT_TAKE } from "@/constants/constans-value";
import { PAGINATION_DEFAULT_TAKE, PADDING_INLINE } from "@/constants/constans-value";
import { createPaginationComponents } from "@/helpers/paginationHelpers";
import { usePagination } from "@/hooks/use-pagination";
import { apiInvestmentGetInvestorById } from "@/service/api-client/api-investment";
@@ -66,8 +66,9 @@ export default function Investment_ScreenInvestor({
});
return (
<NewWrapper
<OS_Wrapper
hideFooter
contentPadding={PADDING_INLINE}
listData={pagination.listData}
renderItem={renderItem}
onEndReached={pagination.loadMore}

View File

@@ -5,10 +5,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";
@@ -94,7 +94,7 @@ export default function Investment_ScreenInvoice() {
return (
<>
<ViewWrapper>
<OS_Wrapper>
<StackCustom>
<InformationBox text="Mohon transfer ke rekening dibawah" />
<BaseBox>
@@ -224,7 +224,7 @@ export default function Investment_ScreenInvoice() {
</ButtonCustom>
</StackCustom>
<Spacing />
</ViewWrapper>
</OS_Wrapper>
</>
);
}

View File

@@ -1,11 +1,12 @@
/* eslint-disable react-hooks/exhaustive-deps */
import {
BaseBox,
OS_Wrapper,
ProgressCustom,
StackCustom,
TextCustom
} from "@/components";
import NewWrapper from "@/components/_ShareComponent/NewWrapper";
import { PADDING_INLINE } from "@/constants/constans-value";
import { PAGINATION_DEFAULT_TAKE } from "@/constants/constans-value";
import { createPaginationComponents } from "@/helpers/paginationHelpers";
import { useAuth } from "@/hooks/use-auth";
@@ -73,7 +74,8 @@ export default function Investment_ScreenMyHolding() {
});
return (
<NewWrapper
<OS_Wrapper
contentPadding={PADDING_INLINE}
listData={pagination.listData}
renderItem={renderItem}
onEndReached={pagination.loadMore}

View File

@@ -1,6 +1,6 @@
/* eslint-disable react-hooks/exhaustive-deps */
import { ScrollableCustom, TextCustom } from "@/components";
import NewWrapper from "@/components/_ShareComponent/NewWrapper";
import { OS_Wrapper, ScrollableCustom, TextCustom } from "@/components";
import { PADDING_INLINE } from "@/constants/constans-value";
import { PAGINATION_DEFAULT_TAKE } from "@/constants/constans-value";
import { createPaginationComponents } from "@/helpers/paginationHelpers";
import { useAuth } from "@/hooks/use-auth";
@@ -83,7 +83,8 @@ export default function Investment_ScreenPortofolio() {
);
return (
<NewWrapper
<OS_Wrapper
contentPadding={PADDING_INLINE}
hideFooter
headerComponent={tabsComponent}
listData={pagination.listData}

View File

@@ -3,12 +3,13 @@ import {
BadgeCustom,
BaseBox,
Grid,
OS_Wrapper,
Spacing,
StackCustom,
TextCustom,
} from "@/components";
import NewWrapper from "@/components/_ShareComponent/NewWrapper";
import NoDataText from "@/components/_ShareComponent/NoDataText";
import { PADDING_INLINE } from "@/constants/constans-value";
import { PAGINATION_DEFAULT_TAKE } from "@/constants/constans-value";
import { createPaginationComponents } from "@/helpers/paginationHelpers";
import { useAuth } from "@/hooks/use-auth";
@@ -128,7 +129,8 @@ export default function Investment_ScreenTransaction() {
);
return (
<NewWrapper
<OS_Wrapper
contentPadding={PADDING_INLINE}
hideFooter
listData={pagination.listData}
renderItem={renderTransactionItem}