diff --git a/src/app/dev/profile/edit/[id]/page.tsx b/src/app/dev/profile/edit/[id]/page.tsx index 53e6ca6d..1941dc84 100644 --- a/src/app/dev/profile/edit/[id]/page.tsx +++ b/src/app/dev/profile/edit/[id]/page.tsx @@ -1,14 +1,12 @@ - import EditProfile from "@/app_modules/katalog/profile/edit/view"; import { Profile_getOneProfileAndUserById } from "@/app_modules/katalog/profile/fun/get/get_one_user_profile"; export default async function Page({ params }: { params: { id: string } }) { - let profileId = params.id - const dataProfile = await Profile_getOneProfileAndUserById(profileId) + let profileId = params.id; + const dataProfile = await Profile_getOneProfileAndUserById(profileId); return ( <> - {/* {JSON.stringify(data)} */} ); diff --git a/src/app_modules/_global/button/comp_button_upload_photo.tsx b/src/app_modules/_global/button/comp_button_upload_photo.tsx index 642feddc..8cd0b16b 100644 --- a/src/app_modules/_global/button/comp_button_upload_photo.tsx +++ b/src/app_modules/_global/button/comp_button_upload_photo.tsx @@ -3,6 +3,8 @@ import { Button, FileButton } from "@mantine/core"; import { IconCamera } from "@tabler/icons-react"; import { MainColor } from "../color"; +import { MAX_SIZE } from "../lib"; +import { ComponentGlobal_NotifikasiPeringatan } from "../notif_global"; export function ComponentGlobal_ButtonUploadFileImage({ onSetFile, @@ -19,8 +21,14 @@ export function ComponentGlobal_ButtonUploadFileImage({ new Blob([new Uint8Array(await files.arrayBuffer())]) ); - onSetFile(files); - onSetImage(buffer); + if (files.size > MAX_SIZE) { + ComponentGlobal_NotifikasiPeringatan( + "Ukuran file terlalu besar. Maksimal 2 MB." + ); + } else { + onSetFile(files); + onSetImage(buffer); + } } catch (error) { console.log(error); } diff --git a/src/app_modules/_global/lib/index.ts b/src/app_modules/_global/lib/index.ts new file mode 100644 index 00000000..78b13e14 --- /dev/null +++ b/src/app_modules/_global/lib/index.ts @@ -0,0 +1,3 @@ +import { MAX_SIZE } from "./max_size"; + +export { MAX_SIZE }; diff --git a/src/app_modules/_global/lib/max_size.ts b/src/app_modules/_global/lib/max_size.ts new file mode 100644 index 00000000..d312cf45 --- /dev/null +++ b/src/app_modules/_global/lib/max_size.ts @@ -0,0 +1,2 @@ +// Maksimal ukuran file dalam byte (2 MB) +export const MAX_SIZE = 2 * 1024 * 1024; // 2 MB diff --git a/src/app_modules/_global/ui/ui_image_preview.tsx b/src/app_modules/_global/ui/ui_image_preview.tsx index 9f37411a..a2057b2d 100644 --- a/src/app_modules/_global/ui/ui_image_preview.tsx +++ b/src/app_modules/_global/ui/ui_image_preview.tsx @@ -28,7 +28,7 @@ export function UIGlobal_ImagePreview({ fileId }: { fileId: string }) { const [isImage, setIsImage] = useState(null); const [isLoading, setIsLoading] = useState(false); - const url = APIs.GET({ fileId: fileId }); + const url = APIs.GET({ fileId: fileId, size: "500" }); useShallowEffect(() => { onLoadImage(); diff --git a/src/app_modules/katalog/profile/_component/button/comp_create_new_profile.tsx b/src/app_modules/katalog/profile/_component/button/comp_create_new_profile.tsx index e523a2ba..d649d346 100644 --- a/src/app_modules/katalog/profile/_component/button/comp_create_new_profile.tsx +++ b/src/app_modules/katalog/profile/_component/button/comp_create_new_profile.tsx @@ -9,15 +9,13 @@ import { ComponentGlobal_NotifikasiGagal, ComponentGlobal_NotifikasiPeringatan, } from "@/app_modules/_global/notif_global"; +import { gmailRegex } from "@/app_modules/katalog/component/regular_expressions"; import { Button } from "@mantine/core"; import _ from "lodash"; import { useRouter } from "next/navigation"; import { useState } from "react"; import funCreateNewProfile from "../../fun/fun_create_profile"; import { MODEL_PROFILE } from "../../model/interface"; -import { validRegex } from "@/app_modules/katalog/component"; -import { envs } from "@/lib/envs"; -import { TokenProvider, TokenStorage } from "@/app/lib/token"; export function Profile_ComponentCreateNewProfile({ value, @@ -40,7 +38,8 @@ export function Profile_ComponentCreateNewProfile({ }; if (_.values(newData).includes("")) return ComponentGlobal_NotifikasiPeringatan("Lengkapi Data"); - if (!newData.email.match(validRegex)) return null; + if (!newData.email.match(gmailRegex)) + return ComponentGlobal_NotifikasiPeringatan("Format email salah"); if (filePP == null) return ComponentGlobal_NotifikasiPeringatan("Lengkapi foto profile"); diff --git a/src/app_modules/katalog/profile/create/view.tsx b/src/app_modules/katalog/profile/create/view.tsx index c97942ee..dce45a60 100644 --- a/src/app_modules/katalog/profile/create/view.tsx +++ b/src/app_modules/katalog/profile/create/view.tsx @@ -6,6 +6,8 @@ import { ComponentGlobal_BoxUploadImage, ComponentGlobal_ErrorInput, } from "@/app_modules/_global/component"; +import { MAX_SIZE } from "@/app_modules/_global/lib"; +import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global"; import { AspectRatio, Avatar, @@ -22,10 +24,8 @@ import { } from "@mantine/core"; import { IconAt, IconCamera, IconUpload } from "@tabler/icons-react"; import { useState } from "react"; -import { validRegex } from "../../component"; -import { Profile_ComponentCreateNewProfile } from "../_component"; -import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global"; import { gmailRegex } from "../../component/regular_expressions"; +import { Profile_ComponentCreateNewProfile } from "../_component"; export default function CreateProfile() { const [filePP, setFilePP] = useState(null); @@ -40,9 +40,6 @@ export default function CreateProfile() { jenisKelamin: "", }); - // Maksimal ukuran file dalam byte (2 MB) - const MAX_SIZE = 2 * 1024 * 1024; // 2 MB - return ( <> diff --git a/src/app_modules/katalog/profile/edit/view.tsx b/src/app_modules/katalog/profile/edit/view.tsx index 8a907706..9b33f424 100644 --- a/src/app_modules/katalog/profile/edit/view.tsx +++ b/src/app_modules/katalog/profile/edit/view.tsx @@ -4,14 +4,14 @@ import { Button, Loader, Select, Stack, TextInput } from "@mantine/core"; import _ from "lodash"; import { useRouter } from "next/navigation"; import { useState } from "react"; - import { MainColor } from "@/app_modules/_global/color/color_pallet"; import ComponentGlobal_ErrorInput from "@/app_modules/_global/component/error_input"; import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/_global/notif_global/notifikasi_berhasil"; import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/_global/notif_global/notifikasi_gagal"; -import { validRegex } from "../../component/regular_expressions"; +import { gmailRegex, validRegex } from "../../component/regular_expressions"; import { Profile_funEditById } from "../fun/update/fun_edit_profile_by_id"; import { MODEL_PROFILE } from "../model/interface"; +import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global"; export default function EditProfile({ data }: { data: MODEL_PROFILE }) { const router = useRouter(); @@ -24,8 +24,10 @@ export default function EditProfile({ data }: { data: MODEL_PROFILE }) { const body = dataProfile; // console.log(body) - if (_.values(body).includes("")) return null; - if (!body.email.match(validRegex)) return null; + if (_.values(body).includes("")) + return ComponentGlobal_NotifikasiPeringatan("Lengkapi data"); + if (!body.email.match(gmailRegex)) + return ComponentGlobal_NotifikasiPeringatan("Format email salah"); await Profile_funEditById(body).then((res) => { if (res.status === 200) { @@ -126,7 +128,7 @@ export default function EditProfile({ data }: { data: MODEL_PROFILE }) { dataProfile?.email === "" ? ( ) : dataProfile?.email?.length > 0 && - !dataProfile?.email.match(validRegex) ? ( + !dataProfile?.email.match(gmailRegex) ? ( ) : ( "" diff --git a/src/app_modules/katalog/profile/upload/foto_background/index.tsx b/src/app_modules/katalog/profile/upload/foto_background/index.tsx index 12d03b46..559b003c 100644 --- a/src/app_modules/katalog/profile/upload/foto_background/index.tsx +++ b/src/app_modules/katalog/profile/upload/foto_background/index.tsx @@ -30,7 +30,10 @@ export default function Profile_UpdateFotoBackground({ src={ image ? image - : APIs.GET({ fileId: profile.imageBackgroundId as any }) + : APIs.GET({ + fileId: profile.imageBackgroundId as any, + size: "400", + }) } /> diff --git a/src/app_modules/katalog/profile/upload/foto_profile/index.tsx b/src/app_modules/katalog/profile/upload/foto_profile/index.tsx index 6e49f09f..4f1a960e 100644 --- a/src/app_modules/katalog/profile/upload/foto_profile/index.tsx +++ b/src/app_modules/katalog/profile/upload/foto_profile/index.tsx @@ -27,7 +27,11 @@ export default function UploadFotoProfile({ Avatar