feat: Complete Admin Phase 7 Investment screens + fix Admin Phase 8, 10 documentation + migrate dashboard & maps to OS_Wrapper

- Migrate admin/investment/[id]/[status]/index.tsx to OS_Wrapper (detail with pull-to-refresh)
- Migrate admin/investment/[id]/[status]/transaction-detail.tsx to OS_Wrapper (transaction detail with footer)
- Migrate admin/investment/[id]/reject-input.tsx to OS_Wrapper with enableKeyboardHandling
- Migrate admin/investment/index.tsx to OS_Wrapper (dashboard)
- Migrate ScreenInvestmentListOfInvestor.tsx to OS_Wrapper
- Migrate ScreenInvestmentStatus.tsx to OS_Wrapper
- Migrate admin/dashboard.tsx to OS_Wrapper
- Migrate admin/maps.tsx to OS_Wrapper
- Fix TASK-005 documentation: reorder Admin Phases 1-10, update tracking table
- Mark Admin Phase 3 (Donation) as Complete (12 files verified)
- Add Admin Phase 10 (Dashboard & Maps) documentation
- Update grand total: 178/~184 files (~97% complete)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
2026-04-15 14:52:20 +08:00
parent e260ed546b
commit 5b836875a6
10 changed files with 136 additions and 48 deletions

View File

@@ -1,4 +1,5 @@
import { StackCustom, TextCustom, ViewWrapper } from "@/components";
import { StackCustom, TextCustom } from "@/components";
import OS_Wrapper from "@/components/_ShareComponent/OS_Wrapper";
import AdminComp_BoxDashboard from "@/components/_ShareComponent/Admin/BoxDashboard";
import { MainColor } from "@/constants/color-palet";
import { apiAdminMainDashboardGetAll } from "@/service/api-admin/api-admin-main-dashboard";
@@ -28,7 +29,7 @@ export default function AdminDashboard() {
return (
<>
<ViewWrapper>
<OS_Wrapper>
<StackCustom>
<TextCustom bold size={30}>
Main Dashboard
@@ -37,7 +38,7 @@ export default function AdminDashboard() {
<AdminComp_BoxDashboard key={i} item={item} />
))}
</StackCustom>
</ViewWrapper>
</OS_Wrapper>
</>
);
}

View File

@@ -12,10 +12,10 @@ import {
Spacing,
StackCustom,
TextCustom,
ViewWrapper,
} from "@/components";
import { IconProspectus } from "@/components/_Icon";
import { IconDot, IconList } from "@/components/_Icon/IconComponent";
import OS_Wrapper from "@/components/_ShareComponent/OS_Wrapper";
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
import AdminButtonReject from "@/components/_ShareComponent/Admin/ButtonReject";
import AdminButtonReview from "@/components/_ShareComponent/Admin/ButtonReview";
@@ -35,6 +35,7 @@ import { formatCurrencyDisplay } from "@/utils/formatCurrencyDisplay";
import { router, useFocusEffect, useLocalSearchParams } from "expo-router";
import _ from "lodash";
import React from "react";
import { RefreshControl } from "react-native";
import Toast from "react-native-toast-message";
export default function AdminInvestmentDetail() {
@@ -119,22 +120,30 @@ export default function AdminInvestmentDetail() {
if (!data) {
return (
<>
<ViewWrapper>
<OS_Wrapper>
<CustomSkeleton height={200} />
</ViewWrapper>
</OS_Wrapper>
</>
);
}
return (
<>
<ViewWrapper
<OS_Wrapper
headerComponent={
<AdminBackButtonAntTitle
title={`Detail Data`}
rightComponent={status === "publish" && rightComponent}
/>
}
refreshControl={
<RefreshControl
refreshing={isLoading}
onRefresh={onLoadData}
tintColor="#E1B525"
colors={["#E1B525"]}
/>
}
>
{status === "publish" && (
<BaseBox>
@@ -280,7 +289,7 @@ export default function AdminInvestmentDetail() {
}}
/>
)}
</ViewWrapper>
</OS_Wrapper>
<DrawerCustom
isVisible={openDrawer}

View File

@@ -7,9 +7,9 @@ import {
Spacing,
StackCustom,
TextCustom,
ViewWrapper,
} from "@/components";
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
import OS_Wrapper from "@/components/_ShareComponent/OS_Wrapper";
import { GridSpan_4_8 } from "@/components/_ShareComponent/GridSpan_4_8";
import GridTwoView from "@/components/_ShareComponent/GridTwoView";
import { MainColor } from "@/constants/color-palet";
@@ -225,11 +225,11 @@ export default function AdminInvestmentTransactionDetail() {
return (
<>
<ViewWrapper
<OS_Wrapper
headerComponent={
<AdminBackButtonAntTitle title="Detail Transaksi Investor" />
}
// footerComponent={buttonAction()}
footerComponent={buttonAction()}
>
<BaseBox>
<StackCustom>
@@ -244,7 +244,7 @@ export default function AdminInvestmentTransactionDetail() {
</BaseBox>
<Spacing />
{buttonAction()}
</ViewWrapper>
</OS_Wrapper>
</>
);
}

View File

@@ -3,10 +3,10 @@ import {
AlertDefaultSystem,
BoxButtonOnFooter,
TextAreaCustom,
ViewWrapper,
} from "@/components";
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
import AdminButtonReject from "@/components/_ShareComponent/Admin/ButtonReject";
import OS_Wrapper from "@/components/_ShareComponent/OS_Wrapper";
import { useAuth } from "@/hooks/use-auth";
import {
apiAdminInvestasiUpdateByStatus,
@@ -118,7 +118,9 @@ export default function AdminInvestmentRejectInput() {
return (
<>
<ViewWrapper
<OS_Wrapper
enableKeyboardHandling
contentPaddingBottom={250}
footerComponent={buttonSubmit}
headerComponent={
<AdminBackButtonAntTitle title="Penolakan Investasi" />
@@ -132,7 +134,7 @@ export default function AdminInvestmentRejectInput() {
showCount
maxLength={1000}
/>
</ViewWrapper>
</OS_Wrapper>
</>
);
}

View File

@@ -1,4 +1,5 @@
import { Spacing, StackCustom, ViewWrapper } from "@/components";
import { Spacing, StackCustom } from "@/components";
import OS_Wrapper from "@/components/_ShareComponent/OS_Wrapper";
import {
IconPublish,
IconReject,
@@ -54,7 +55,7 @@ export default function AdminInvestment() {
return (
<>
<ViewWrapper>
<OS_Wrapper>
<AdminTitlePage title="Investasi" />
<Spacing />
<StackCustom gap={"xs"}>
@@ -62,7 +63,7 @@ export default function AdminInvestment() {
<AdminComp_BoxDashboard key={i} item={item} />
))}
</StackCustom>
</ViewWrapper>
</OS_Wrapper>
</>
);
}

View File

@@ -6,8 +6,8 @@ import {
Spacing,
StackCustom,
TextCustom,
ViewWrapper,
} from "@/components";
import OS_Wrapper from "@/components/_ShareComponent/OS_Wrapper";
import GridTwoView from "@/components/_ShareComponent/GridTwoView";
import { MapMarker, MapsV2Custom } from "@/components/Map/MapsV2Custom";
import { ICON_SIZE_SMALL } from "@/constants/constans-value";
@@ -76,9 +76,9 @@ export default function AdminMaps() {
return (
<>
<ViewWrapper style={{ paddingInline: 0, paddingBlock: 0 }}>
<OS_Wrapper style={{ paddingInline: 0, paddingBlock: 0 }}>
<MapsV2Custom markers={markers} />
</ViewWrapper>
</OS_Wrapper>
<DrawerCustom
isVisible={openDrawer}