Compare commits
3 Commits
qc-wrapper
...
qc-wrapper
| Author | SHA1 | Date | |
|---|---|---|---|
| d0eb812adc | |||
| 6d4dc0f7f7 | |||
| 0823a1c26a |
@@ -118,20 +118,7 @@ export default function InvestmentCreate() {
|
||||
|
||||
try {
|
||||
setIsLoading(true);
|
||||
const responseUploadImage = await uploadFileService({
|
||||
imageUri: image,
|
||||
dirId: DIRECTORY_ID.investasi_image,
|
||||
});
|
||||
|
||||
if (!responseUploadImage.success) {
|
||||
Toast.show({
|
||||
type: "error",
|
||||
text1: "Gagal mengunggah gambar",
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const imageId = responseUploadImage.data.id;
|
||||
const responseUploadPdf = await uploadFileService({
|
||||
imageUri: pdf.uri,
|
||||
dirId: DIRECTORY_ID.investasi_prospektus,
|
||||
@@ -144,8 +131,22 @@ export default function InvestmentCreate() {
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const pdfId = responseUploadPdf.data.id;
|
||||
|
||||
const responseUploadImage = await uploadFileService({
|
||||
imageUri: image,
|
||||
dirId: DIRECTORY_ID.investasi_image,
|
||||
});
|
||||
|
||||
if (!responseUploadImage.success) {
|
||||
Toast.show({
|
||||
type: "error",
|
||||
text1: "Gagal mengunggah gambar",
|
||||
});
|
||||
return;
|
||||
}
|
||||
const imageId = responseUploadImage.data.id;
|
||||
|
||||
const newData = {
|
||||
title: data.title,
|
||||
targetDana: data.targetDana,
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
import {
|
||||
AlertDefaultSystem,
|
||||
BoxButtonOnFooter,
|
||||
OS_Wrapper,
|
||||
TextAreaCustom,
|
||||
ViewWrapper,
|
||||
} from "@/components";
|
||||
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
|
||||
import AdminButtonReject from "@/components/_ShareComponent/Admin/ButtonReject";
|
||||
@@ -107,20 +107,20 @@ export default function AdminEventRejectInput() {
|
||||
);
|
||||
|
||||
return (
|
||||
<>
|
||||
<ViewWrapper
|
||||
footerComponent={buttonSubmit}
|
||||
headerComponent={<AdminBackButtonAntTitle title="Penolakan Event" />}
|
||||
>
|
||||
<TextAreaCustom
|
||||
value={data}
|
||||
onChangeText={setData}
|
||||
placeholder="Masukan alasan"
|
||||
required
|
||||
showCount
|
||||
maxLength={1000}
|
||||
/>
|
||||
</ViewWrapper>
|
||||
</>
|
||||
<OS_Wrapper
|
||||
enableKeyboardHandling
|
||||
contentPaddingBottom={250}
|
||||
footerComponent={buttonSubmit}
|
||||
headerComponent={<AdminBackButtonAntTitle title="Penolakan Event" />}
|
||||
>
|
||||
<TextAreaCustom
|
||||
value={data}
|
||||
onChangeText={setData}
|
||||
placeholder="Masukan alasan"
|
||||
required
|
||||
showCount
|
||||
maxLength={1000}
|
||||
/>
|
||||
</OS_Wrapper>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Spacing, StackCustom, ViewWrapper } from "@/components";
|
||||
import { OS_Wrapper, Spacing, StackCustom } from "@/components";
|
||||
import { IconArchive } from "@/components/_Icon";
|
||||
import {
|
||||
IconList,
|
||||
@@ -65,17 +65,15 @@ export default function AdminVoting() {
|
||||
];
|
||||
|
||||
return (
|
||||
<>
|
||||
<ViewWrapper>
|
||||
<AdminTitlePage title="Event" />
|
||||
<Spacing />
|
||||
<OS_Wrapper>
|
||||
<AdminTitlePage title="Event" />
|
||||
<Spacing />
|
||||
|
||||
<StackCustom gap={"xs"}>
|
||||
{listData.map((item, i) => (
|
||||
<AdminComp_BoxDashboard key={i} item={item} />
|
||||
))}
|
||||
</StackCustom>
|
||||
</ViewWrapper>
|
||||
</>
|
||||
<StackCustom gap={"xs"}>
|
||||
{listData.map((item, i) => (
|
||||
<AdminComp_BoxDashboard key={i} item={item} />
|
||||
))}
|
||||
</StackCustom>
|
||||
</OS_Wrapper>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import {
|
||||
BoxButtonOnFooter,
|
||||
ButtonCustom,
|
||||
OS_Wrapper,
|
||||
TextInputCustom,
|
||||
ViewWrapper,
|
||||
} from "@/components";
|
||||
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
|
||||
import { apiEventCreateTypeOfEvent } from "@/service/api-admin/api-master-admin";
|
||||
@@ -50,17 +50,17 @@ export default function AdminEventTypeOfEventCreate() {
|
||||
</BoxButtonOnFooter>
|
||||
);
|
||||
return (
|
||||
<>
|
||||
<ViewWrapper
|
||||
headerComponent={<AdminBackButtonAntTitle title="Tambah Tipe Acara" />}
|
||||
footerComponent={buttonSubmit}
|
||||
>
|
||||
<TextInputCustom
|
||||
placeholder="Masukkan Tipe Acara"
|
||||
value={value}
|
||||
onChangeText={setValue}
|
||||
/>
|
||||
</ViewWrapper>
|
||||
</>
|
||||
<OS_Wrapper
|
||||
enableKeyboardHandling
|
||||
contentPaddingBottom={250}
|
||||
headerComponent={<AdminBackButtonAntTitle title="Tambah Tipe Acara" />}
|
||||
footerComponent={buttonSubmit}
|
||||
>
|
||||
<TextInputCustom
|
||||
placeholder="Masukkan Tipe Acara"
|
||||
value={value}
|
||||
onChangeText={setValue}
|
||||
/>
|
||||
</OS_Wrapper>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
import {
|
||||
BoxButtonOnFooter,
|
||||
ButtonCustom,
|
||||
OS_Wrapper,
|
||||
Spacing,
|
||||
TextCustom,
|
||||
TextInputCustom,
|
||||
ViewWrapper,
|
||||
} from "@/components";
|
||||
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
|
||||
import { MainColor } from "@/constants/color-palet";
|
||||
@@ -89,25 +89,25 @@ export default function AdminEventTypeOfEventUpdate() {
|
||||
</BoxButtonOnFooter>
|
||||
);
|
||||
return (
|
||||
<>
|
||||
<ViewWrapper
|
||||
headerComponent={<AdminBackButtonAntTitle title="Ubah Tipe Acara" />}
|
||||
footerComponent={buttonSubmit}
|
||||
>
|
||||
<TextInputCustom
|
||||
placeholder="Masukkan Tipe Acara"
|
||||
value={data.name}
|
||||
onChangeText={(text) => setData({ ...data, name: text })}
|
||||
/>
|
||||
<OS_Wrapper
|
||||
enableKeyboardHandling
|
||||
contentPaddingBottom={250}
|
||||
headerComponent={<AdminBackButtonAntTitle title="Ubah Tipe Acara" />}
|
||||
footerComponent={buttonSubmit}
|
||||
>
|
||||
<TextInputCustom
|
||||
placeholder="Masukkan Tipe Acara"
|
||||
value={data.name}
|
||||
onChangeText={(text) => setData({ ...data, name: text })}
|
||||
/>
|
||||
|
||||
<TextCustom>Aktivasi</TextCustom>
|
||||
<Spacing height={10} />
|
||||
<Switch
|
||||
color={MainColor.yellow}
|
||||
value={data.active}
|
||||
onValueChange={(value) => setData({ ...data, active: value })}
|
||||
/>
|
||||
</ViewWrapper>
|
||||
</>
|
||||
<TextCustom>Aktivasi</TextCustom>
|
||||
<Spacing height={10} />
|
||||
<Switch
|
||||
color={MainColor.yellow}
|
||||
value={data.active}
|
||||
onValueChange={(value) => setData({ ...data, active: value })}
|
||||
/>
|
||||
</OS_Wrapper>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -5,11 +5,10 @@ import {
|
||||
BaseBox,
|
||||
DummyLandscapeImage,
|
||||
Grid,
|
||||
NewWrapper,
|
||||
OS_Wrapper,
|
||||
Spacing,
|
||||
StackCustom,
|
||||
TextCustom,
|
||||
ViewWrapper,
|
||||
} from "@/components";
|
||||
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
|
||||
import AdminButtonReject from "@/components/_ShareComponent/Admin/ButtonReject";
|
||||
@@ -121,7 +120,7 @@ export default function AdminJobDetailStatus() {
|
||||
|
||||
return (
|
||||
<>
|
||||
<NewWrapper
|
||||
<OS_Wrapper
|
||||
headerComponent={<AdminBackButtonAntTitle title={`Detail Data`} />}
|
||||
>
|
||||
<BaseBox>
|
||||
@@ -185,7 +184,7 @@ export default function AdminJobDetailStatus() {
|
||||
/>
|
||||
)}
|
||||
<Spacing />
|
||||
</NewWrapper>
|
||||
</OS_Wrapper>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2,9 +2,8 @@
|
||||
import {
|
||||
AlertDefaultSystem,
|
||||
BoxButtonOnFooter,
|
||||
NewWrapper,
|
||||
OS_Wrapper,
|
||||
TextAreaCustom,
|
||||
ViewWrapper,
|
||||
} from "@/components";
|
||||
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
|
||||
import AdminButtonReject from "@/components/_ShareComponent/Admin/ButtonReject";
|
||||
@@ -101,7 +100,9 @@ export default function AdminJobRejectInput() {
|
||||
|
||||
return (
|
||||
<>
|
||||
<NewWrapper
|
||||
<OS_Wrapper
|
||||
enableKeyboardHandling
|
||||
contentPaddingBottom={250}
|
||||
footerComponent={buttonSubmit}
|
||||
headerComponent={<AdminBackButtonAntTitle title="Penolakan Job" />}
|
||||
>
|
||||
@@ -113,7 +114,7 @@ export default function AdminJobRejectInput() {
|
||||
showCount
|
||||
maxLength={1000}
|
||||
/>
|
||||
</NewWrapper>
|
||||
</OS_Wrapper>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* eslint-disable @typescript-eslint/no-unused-vars */
|
||||
import { Spacing, StackCustom, ViewWrapper } from "@/components";
|
||||
import { OS_Wrapper, Spacing, StackCustom } from "@/components";
|
||||
import {
|
||||
IconPublish,
|
||||
IconReject,
|
||||
@@ -42,7 +42,7 @@ export default function AdminJob() {
|
||||
|
||||
return (
|
||||
<>
|
||||
<ViewWrapper>
|
||||
<OS_Wrapper>
|
||||
<AdminTitlePage title="Job Vacancy" />
|
||||
<Spacing />
|
||||
<StackCustom gap={"xs"}>
|
||||
@@ -50,7 +50,7 @@ export default function AdminJob() {
|
||||
<AdminComp_BoxDashboard key={i} item={item} />
|
||||
))}
|
||||
</StackCustom>
|
||||
</ViewWrapper>
|
||||
</OS_Wrapper>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -5,11 +5,10 @@ import {
|
||||
BaseBox,
|
||||
CircleContainer,
|
||||
Grid,
|
||||
NewWrapper,
|
||||
OS_Wrapper,
|
||||
Spacing,
|
||||
StackCustom,
|
||||
TextCustom,
|
||||
ViewWrapper,
|
||||
} from "@/components";
|
||||
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
|
||||
import AdminButtonReject from "@/components/_ShareComponent/Admin/ButtonReject";
|
||||
@@ -169,11 +168,10 @@ export default function AdminVotingDetail() {
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<NewWrapper
|
||||
hideFooter
|
||||
headerComponent={<AdminBackButtonAntTitle title={`Detail Data`} />}
|
||||
>
|
||||
<OS_Wrapper
|
||||
hideFooter
|
||||
headerComponent={<AdminBackButtonAntTitle title={`Detail Data`} />}
|
||||
>
|
||||
<BaseBox>
|
||||
<StackCustom>
|
||||
{listData.map((item, i) => (
|
||||
@@ -253,7 +251,6 @@ export default function AdminVotingDetail() {
|
||||
/>
|
||||
)}
|
||||
<Spacing />
|
||||
</NewWrapper>
|
||||
</>
|
||||
</OS_Wrapper>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
import {
|
||||
AlertDefaultSystem,
|
||||
BoxButtonOnFooter,
|
||||
OS_Wrapper,
|
||||
TextAreaCustom,
|
||||
ViewWrapper,
|
||||
} from "@/components";
|
||||
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
|
||||
import AdminButtonReject from "@/components/_ShareComponent/Admin/ButtonReject";
|
||||
@@ -99,20 +99,20 @@ export default function AdminVotingRejectInput() {
|
||||
);
|
||||
|
||||
return (
|
||||
<>
|
||||
<ViewWrapper
|
||||
footerComponent={buttonSubmit}
|
||||
headerComponent={<AdminBackButtonAntTitle title="Penolakan Voting" />}
|
||||
>
|
||||
<TextAreaCustom
|
||||
value={data}
|
||||
onChangeText={setData}
|
||||
placeholder="Masukan alasan"
|
||||
required
|
||||
showCount
|
||||
maxLength={1000}
|
||||
/>
|
||||
</ViewWrapper>
|
||||
</>
|
||||
<OS_Wrapper
|
||||
enableKeyboardHandling
|
||||
contentPaddingBottom={250}
|
||||
footerComponent={buttonSubmit}
|
||||
headerComponent={<AdminBackButtonAntTitle title="Penolakan Voting" />}
|
||||
>
|
||||
<TextAreaCustom
|
||||
value={data}
|
||||
onChangeText={setData}
|
||||
placeholder="Masukan alasan"
|
||||
required
|
||||
showCount
|
||||
maxLength={1000}
|
||||
/>
|
||||
</OS_Wrapper>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Spacing, StackCustom, ViewWrapper } from "@/components";
|
||||
import { OS_Wrapper, Spacing, StackCustom } from "@/components";
|
||||
import { IconArchive } from "@/components/_Icon";
|
||||
import {
|
||||
IconPublish,
|
||||
@@ -59,16 +59,14 @@ export default function AdminVoting() {
|
||||
];
|
||||
|
||||
return (
|
||||
<>
|
||||
<ViewWrapper>
|
||||
<AdminTitlePage title="Voting" />
|
||||
<Spacing />
|
||||
<StackCustom gap={"xs"}>
|
||||
{listData.map((item, i) => (
|
||||
<AdminComp_BoxDashboard key={i} item={item} />
|
||||
))}
|
||||
</StackCustom>
|
||||
</ViewWrapper>
|
||||
</>
|
||||
<OS_Wrapper>
|
||||
<AdminTitlePage title="Voting" />
|
||||
<Spacing />
|
||||
<StackCustom gap={"xs"}>
|
||||
{listData.map((item, i) => (
|
||||
<AdminComp_BoxDashboard key={i} item={item} />
|
||||
))}
|
||||
</StackCustom>
|
||||
</OS_Wrapper>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
/* eslint-disable react-hooks/exhaustive-deps */
|
||||
import { ActionIcon, AlertDefaultSystem, Spacing } from "@/components";
|
||||
import { ActionIcon, AlertDefaultSystem, OS_Wrapper, Spacing } from "@/components";
|
||||
import { IconDot } from "@/components/_Icon/IconComponent";
|
||||
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
|
||||
import AdminButtonReject from "@/components/_ShareComponent/Admin/ButtonReject";
|
||||
import AdminButtonReview from "@/components/_ShareComponent/Admin/ButtonReview";
|
||||
import NewWrapper from "@/components/_ShareComponent/NewWrapper";
|
||||
import ReportBox from "@/components/Box/ReportBox";
|
||||
import { ICON_SIZE_BUTTON } from "@/constants/constans-value";
|
||||
import { useAuth } from "@/hooks/use-auth";
|
||||
@@ -133,7 +132,7 @@ export function Admin_ScreenEventDetail() {
|
||||
|
||||
return (
|
||||
<>
|
||||
<NewWrapper
|
||||
<OS_Wrapper
|
||||
hideFooter
|
||||
headerComponent={headerComponent}
|
||||
// footerComponent={
|
||||
@@ -154,7 +153,7 @@ export function Admin_ScreenEventDetail() {
|
||||
|
||||
{footerComponent}
|
||||
<Spacing />
|
||||
</NewWrapper>
|
||||
</OS_Wrapper>
|
||||
|
||||
<EventDetailDrawer
|
||||
isVisible={openDrawer}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { OS_Wrapper } from "@/components";
|
||||
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
|
||||
import NewWrapper from "@/components/_ShareComponent/NewWrapper";
|
||||
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 { apiAdminEventListOfParticipants } from "@/service/api-admin/api-admin-event";
|
||||
@@ -62,7 +62,8 @@ export function Admin_ScreenEventListOfParticipants() {
|
||||
});
|
||||
|
||||
return (
|
||||
<NewWrapper
|
||||
<OS_Wrapper
|
||||
contentPadding={PADDING_INLINE}
|
||||
listData={pagination.listData}
|
||||
renderItem={renderItem}
|
||||
keyExtractor={(item: any) => item.id.toString()}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { SearchInput } from "@/components";
|
||||
import { OS_Wrapper, SearchInput } from "@/components";
|
||||
import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage";
|
||||
import NewWrapper from "@/components/_ShareComponent/NewWrapper";
|
||||
import { MainColor } from "@/constants/color-palet";
|
||||
import { PAGINATION_DEFAULT_TAKE } from "@/constants/constans-value";
|
||||
import { createPaginationComponents } from "@/helpers/paginationHelpers";
|
||||
@@ -87,7 +86,7 @@ export function Admin_ScreenEventStatus() {
|
||||
});
|
||||
|
||||
return (
|
||||
<NewWrapper
|
||||
<OS_Wrapper
|
||||
listData={pagination.listData}
|
||||
renderItem={renderItem}
|
||||
keyExtractor={(item: any) => item.id.toString()}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { SearchInput } from "@/components";
|
||||
import { OS_Wrapper, SearchInput } from "@/components";
|
||||
import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage";
|
||||
import NewWrapper from "@/components/_ShareComponent/NewWrapper";
|
||||
import { MainColor } from "@/constants/color-palet";
|
||||
import { PAGINATION_DEFAULT_TAKE } from "@/constants/constans-value";
|
||||
import { createPaginationComponents } from "@/helpers/paginationHelpers";
|
||||
@@ -82,7 +81,7 @@ export function Admin_ScreenJobStatus() {
|
||||
});
|
||||
|
||||
return (
|
||||
<NewWrapper
|
||||
<OS_Wrapper
|
||||
listData={pagination.listData}
|
||||
renderItem={renderItem}
|
||||
keyExtractor={(item: any) => item.id.toString()}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
import { BadgeCustom, TextCustom } from "@/components";
|
||||
import { BadgeCustom, OS_Wrapper, TextCustom } from "@/components";
|
||||
import AdminActionIconPlus from "@/components/_ShareComponent/Admin/ActionIconPlus";
|
||||
import AdminBasicBox from "@/components/_ShareComponent/Admin/AdminBasicBox";
|
||||
import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage";
|
||||
import GridTwoView from "@/components/_ShareComponent/GridTwoView";
|
||||
import { GridViewCustomSpan } from "@/components/_ShareComponent/GridViewCustomSpan";
|
||||
import NewWrapper from "@/components/_ShareComponent/NewWrapper";
|
||||
import { PAGINATION_DEFAULT_TAKE } from "@/constants/constans-value";
|
||||
import { createPaginationComponents } from "@/helpers/paginationHelpers";
|
||||
import { usePagination } from "@/hooks/use-pagination";
|
||||
@@ -131,7 +130,7 @@ export function Admin_ScreenEventTypeOfEvent() {
|
||||
});
|
||||
|
||||
return (
|
||||
<NewWrapper
|
||||
<OS_Wrapper
|
||||
listData={pagination.listData}
|
||||
renderItem={renderItem}
|
||||
keyExtractor={(item: any) => item.id?.toString() || `fallback-${item.id}`}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { SearchInput } from "@/components";
|
||||
import { OS_Wrapper, SearchInput } from "@/components";
|
||||
import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage";
|
||||
import NewWrapper from "@/components/_ShareComponent/NewWrapper";
|
||||
import {
|
||||
PAGINATION_DEFAULT_TAKE
|
||||
} from "@/constants/constans-value";
|
||||
@@ -81,7 +80,7 @@ export function Admin_ScreenVotingHistory() {
|
||||
});
|
||||
|
||||
return (
|
||||
<NewWrapper
|
||||
<OS_Wrapper
|
||||
listData={pagination.listData}
|
||||
renderItem={renderItem}
|
||||
keyExtractor={(item: any) => item.id?.toString() || `fallback-${item.id}`}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { SearchInput } from "@/components";
|
||||
import { OS_Wrapper, SearchInput } from "@/components";
|
||||
import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage";
|
||||
import NewWrapper from "@/components/_ShareComponent/NewWrapper";
|
||||
import {
|
||||
PAGINATION_DEFAULT_TAKE
|
||||
} from "@/constants/constans-value";
|
||||
@@ -89,7 +88,7 @@ export function Admin_ScreenVotingStatus() {
|
||||
});
|
||||
|
||||
return (
|
||||
<NewWrapper
|
||||
<OS_Wrapper
|
||||
listData={pagination.listData}
|
||||
renderItem={renderItem}
|
||||
keyExtractor={(item: any) => item.id?.toString() || `fallback-${item.id}`}
|
||||
|
||||
@@ -346,15 +346,51 @@ import { OS_Wrapper } from "@/components";
|
||||
- ✅ `screens/Admin/User-Access/ScreenUserAccess.tsx` - NewWrapper → OS_Wrapper (list with pagination + search)
|
||||
- ✅ `app/(application)/admin/user-access/[id]/index.tsx` - ViewWrapper → OS_Wrapper (detail with footer button)
|
||||
|
||||
## ⏳ Admin Phase 1: Event Management (Priority: HIGH)
|
||||
- [ ] `screens/Admin/Event/ScreenEventList.tsx`
|
||||
- [ ] `screens/Admin/Event/ScreenEventCreate.tsx` → pakai `enableKeyboardHandling` + `contentPaddingBottom={250}`
|
||||
- [ ] `screens/Admin/Event/ScreenEventEdit.tsx` → pakai `enableKeyboardHandling` + `contentPaddingBottom={250}`
|
||||
## ✅ Admin Phase 1: Event Management - COMPLETED (2026-04-14)
|
||||
|
||||
## ⏳ Admin Phase 2: Voting Management (Priority: HIGH)
|
||||
- [ ] `screens/Admin/Voting/ScreenVotingList.tsx`
|
||||
- [ ] `screens/Admin/Voting/ScreenVotingCreate.tsx` → pakai `enableKeyboardHandling` + `contentPaddingBottom={250}`
|
||||
- [ ] `screens/Admin/Voting/ScreenVotingEdit.tsx` → pakai `enableKeyboardHandling` + `contentPaddingBottom={250}`
|
||||
**Files migrated: 8**
|
||||
|
||||
#### Admin Event Dashboard & List Screens (OS_Wrapper):
|
||||
- ✅ `app/(application)/admin/event/index.tsx` - ViewWrapper → OS_Wrapper (dashboard screen)
|
||||
- ✅ `screens/Admin/Event/ScreenEventStatus.tsx` - NewWrapper → OS_Wrapper (list with search + pagination)
|
||||
- ✅ `screens/Admin/Event/ScreenEventListOfParticipants.tsx` - NewWrapper → OS_Wrapper (participant list with pagination)
|
||||
- ✅ `screens/Admin/Event/ScreenEventDetail.tsx` - NewWrapper → OS_Wrapper (detail screen)
|
||||
|
||||
#### Admin Event Form Screens (OS_Wrapper with enableKeyboardHandling):
|
||||
- ✅ `app/(application)/admin/event/[id]/reject-input.tsx` - ViewWrapper → OS_Wrapper + `enableKeyboardHandling` + `contentPaddingBottom={250}`
|
||||
- ✅ `app/(application)/admin/event/type-create.tsx` - ViewWrapper → OS_Wrapper + `enableKeyboardHandling` + `contentPaddingBottom={250}`
|
||||
- ✅ `app/(application)/admin/event/type-update.tsx` - ViewWrapper → OS_Wrapper + `enableKeyboardHandling` + `contentPaddingBottom={250}`
|
||||
|
||||
#### Admin Event Utility Screen:
|
||||
- ✅ `app/(application)/admin/event/type-of-event.tsx` - NewWrapper → OS_Wrapper (type list screen)
|
||||
|
||||
**Testing Status:**
|
||||
- ✅ TypeScript: No errors
|
||||
- ⏳ Build: Pending
|
||||
- ⏳ iOS Testing: Pending
|
||||
- ⏳ Android Testing: Pending
|
||||
|
||||
## ✅ Admin Phase 2: Voting Management - COMPLETED (2026-04-14)
|
||||
|
||||
**Files migrated: 6** (5 migrated + 1 already done)
|
||||
|
||||
#### Admin Voting Dashboard & List Screens (OS_Wrapper):
|
||||
- ✅ `app/(application)/admin/voting/index.tsx` - ViewWrapper → OS_Wrapper (dashboard screen)
|
||||
- ✅ `screens/Admin/Voting/ScreenVotingStatus.tsx` - NewWrapper → OS_Wrapper (list with search + pagination)
|
||||
- ✅ `screens/Admin/Voting/ScreenVotingHistory.tsx` - NewWrapper → OS_Wrapper (list with search + pagination)
|
||||
- ✅ `app/(application)/admin/voting/[id]/[status]/index.tsx` - NewWrapper → OS_Wrapper (detail screen with hideFooter)
|
||||
|
||||
#### Admin Voting Form Screen (OS_Wrapper with enableKeyboardHandling):
|
||||
- ✅ `app/(application)/admin/voting/[id]/[status]/reject-input.tsx` - ViewWrapper → OS_Wrapper + `enableKeyboardHandling` + `contentPaddingBottom={250}`
|
||||
|
||||
#### Admin Voting Utility Screen:
|
||||
- ✅ `screens/Admin/Voting/ScreenEventTypeOfEvent.tsx` - Already migrated to OS_Wrapper ✅
|
||||
|
||||
**Testing Status:**
|
||||
- ✅ TypeScript: No errors
|
||||
- ⏳ Build: Pending
|
||||
- ⏳ iOS Testing: Pending
|
||||
- ⏳ Android Testing: Pending
|
||||
|
||||
## ⏳ Admin Phase 3: Donation Management (Priority: HIGH)
|
||||
- [ ] `screens/Admin/Donation/ScreenDonationList.tsx`
|
||||
@@ -375,10 +411,27 @@ import { OS_Wrapper } from "@/components";
|
||||
- [ ] `screens/Admin/Collaboration/ScreenCollaborationReject.tsx`
|
||||
- [ ] `screens/Admin/Collaboration/ScreenCollaborationDetail.tsx`
|
||||
|
||||
## ⏳ Admin Phase 6: Job Admin (Priority: MEDIUM)
|
||||
- [ ] `screens/Admin/Job/ScreenJobAdminList.tsx`
|
||||
- [ ] `screens/Admin/Job/ScreenJobAdminDetail.tsx`
|
||||
- [ ] `screens/Admin/Job/ScreenJobAdminStatus.tsx`
|
||||
## ✅ Admin Phase 6: Job Admin - COMPLETED (2026-04-14)
|
||||
|
||||
**Files migrated: 4**
|
||||
|
||||
#### Admin Job Dashboard (OS_Wrapper static):
|
||||
- ✅ `app/(application)/admin/job/index.tsx` - ViewWrapper → OS_Wrapper (dashboard with status cards)
|
||||
|
||||
#### Admin Job List Screen (OS_Wrapper):
|
||||
- ✅ `screens/Admin/Job/ScreenJobStatus.tsx` - NewWrapper → OS_Wrapper (pagination list with search)
|
||||
|
||||
#### Admin Job Detail Screen (OS_Wrapper static):
|
||||
- ✅ `app/(application)/admin/job/[id]/[status]/index.tsx` - NewWrapper → OS_Wrapper (detail with action buttons)
|
||||
|
||||
#### Admin Job Form Screen (OS_Wrapper with enableKeyboardHandling):
|
||||
- ✅ `app/(application)/admin/job/[id]/[status]/reject-input.tsx` - NewWrapper → OS_Wrapper + `enableKeyboardHandling` + `contentPaddingBottom={250}`
|
||||
|
||||
**Testing Status:**
|
||||
- ✅ TypeScript: No errors
|
||||
- ⏳ Build: Pending
|
||||
- ⏳ iOS Testing: Pending
|
||||
- ⏳ Android Testing: Pending
|
||||
|
||||
## ⏳ Admin Phase 7: Investment Admin (Priority: LOW)
|
||||
- [ ] `screens/Admin/Investment/ScreenInvestmentList.tsx`
|
||||
@@ -489,23 +542,23 @@ import { OS_Wrapper } from "@/components";
|
||||
### Admin Phases:
|
||||
| Phase | Total Files | Migrated | Testing | Status |
|
||||
|-------|-------------|----------|---------|--------|
|
||||
| Admin Phase 1 (Event) | ~3 | 0 | 0 | ⏳ Pending |
|
||||
| Admin Phase 2 (Voting) | ~3 | 0 | 0 | ⏳ Pending |
|
||||
| Admin Phase 1 (Event) | 8 | 8 | ✅ No errors | ✅ Complete |
|
||||
| Admin Phase 2 (Voting) | 6 | 6 | ✅ No errors | ✅ Complete |
|
||||
| Admin Phase 3 (Donation) | ~3 | 0 | 0 | ⏳ Pending |
|
||||
| Admin Phase 4 (Forum) | ~5 | 0 | 0 | ⏳ Pending |
|
||||
| Admin Phase 5 (Collaboration) | ~5 | 0 | 0 | ⏳ Pending |
|
||||
| Admin Phase 6 (Job) | ~3 | 0 | 0 | ⏳ Pending |
|
||||
| Admin Phase 6 (Job) | 4 | 4 | ✅ No errors | ✅ Complete |
|
||||
| Admin Phase 7 (Investment) | ~3 | 0 | 0 | ⏳ Pending |
|
||||
| Admin Phase 8 (App Info) | ~4 | 0 | 0 | ⏳ Pending |
|
||||
| Admin Phase 9 (User Access) | 2 | 2 | 0 | ✅ Complete |
|
||||
| **Admin Total** | **~31** | **2** | **0** | **~6% Complete** |
|
||||
| **Admin Total** | **~40** | **20** | **0** | **~50% Complete** |
|
||||
|
||||
### Grand Total:
|
||||
| Category | Total Files | Migrated | Status |
|
||||
|----------|-------------|----------|--------|
|
||||
| **User Screens** | ~132 | 126 | ~95% Complete |
|
||||
| **Admin Screens** | ~31 | 2 | ~6% Complete |
|
||||
| **GRAND TOTAL** | **~163** | **128** | **~79% Complete** |
|
||||
| **Admin Screens** | ~40 | 20 | ~50% Complete |
|
||||
| **GRAND TOTAL** | **~172** | **146** | **~85% Complete** |
|
||||
|
||||
## 🔄 Rollback Plan
|
||||
|
||||
@@ -519,7 +572,7 @@ Jika ada issue yang tidak bisa di-fix dalam 1 jam:
|
||||
|
||||
**Co-authored-by**: Qwen-Coder <qwen-coder@alibabacloud.com>
|
||||
**Created**: 2026-04-06
|
||||
**Last Updated**: 2026-04-13
|
||||
**Status**: User Phase 1-9 Complete ✅ (with known issues) | Admin Phase 9 Complete ✅ (128 files migrated)
|
||||
**Next**: User Phase 10-11 (~6 files) OR Admin Phase 1-3 (HIGH Priority, ~9 files)
|
||||
**TODO Tomorrow**: Fix Investment upload error (status 500 on image upload)
|
||||
**Last Updated**: 2026-04-14
|
||||
**Status**: User Phase 1-9 Complete ✅ | Admin Phase 1, 2, 6 & 9 Complete ✅ (146 files migrated)
|
||||
**Current**: Admin Phase 2 Complete ✅
|
||||
**Next**: Admin Phase 3 (Donation, ~3 files) OR User Phase 10-11 (~6 files)
|
||||
|
||||
Reference in New Issue
Block a user