amalia/23-okt-25 #1

Merged
amaliadwiy merged 203 commits from amalia/23-okt-25 into join 2025-10-27 11:19:44 +08:00
255 changed files with 9975 additions and 3475 deletions
Showing only changes of commit 10d4c94cc1 - Show all commits

View File

@@ -8,6 +8,7 @@ import { ConstEnv } from "@/constants/ConstEnv";
import Styles from "@/constants/Styles";
import { apiEditProfile, apiGetProfile } from "@/lib/api";
import { setEntities } from "@/lib/entitiesSlice";
import { validateName } from "@/lib/fun_validateName";
import { useAuthSession } from "@/providers/AuthProvider";
import { MaterialCommunityIcons } from "@expo/vector-icons";
import { useHeaderHeight } from "@react-navigation/elements";
@@ -109,7 +110,7 @@ export default function EditProfile() {
}
} else if (cat == "name") {
setData({ ...data, name: val });
if (val == "") {
if (!validateName(val)) {
setError({ ...error, name: true });
} else {
setError({ ...error, name: false });
@@ -305,7 +306,7 @@ export default function EditProfile() {
required
value={data?.name}
error={error.name}
errorText="Nama tidak boleh kosong"
errorText="Nama harus 350 karakter (huruf, angka, spasi, dan simbol ringan (. , ' _ -))"
onChange={val => {
validationForm("name", val)
}}

View File

@@ -7,6 +7,7 @@ import Text from "@/components/Text";
import { ColorsStatus } from "@/constants/ColorsStatus";
import Styles from "@/constants/Styles";
import { apiCreateUser } from "@/lib/api";
import { validateName } from "@/lib/fun_validateName";
import { setUpdateMember } from "@/lib/memberSlice";
import { useAuthSession } from "@/providers/AuthProvider";
import { MaterialCommunityIcons } from "@expo/vector-icons";
@@ -100,7 +101,7 @@ export default function CreateMember() {
}
} else if (cat == "name") {
setDataForm({ ...dataForm, name: val });
if (val == "") {
if (!validateName(val)) {
setError({ ...error, name: true });
} else {
setError({ ...error, name: false });
@@ -309,7 +310,7 @@ export default function CreateMember() {
placeholder="Nama"
required
error={error.name}
errorText="Nama tidak boleh kosong"
errorText="Nama harus 350 karakter (huruf, angka, spasi, dan simbol ringan (. , ' _ -))"
onChange={val => {
validationForm("name", val)
}}

View File

@@ -7,6 +7,7 @@ import Text from "@/components/Text";
import { ConstEnv } from "@/constants/ConstEnv";
import Styles from "@/constants/Styles";
import { apiEditUser, apiGetProfile } from "@/lib/api";
import { validateName } from "@/lib/fun_validateName";
import { setUpdateMember } from "@/lib/memberSlice";
import { useAuthSession } from "@/providers/AuthProvider";
import { MaterialCommunityIcons } from "@expo/vector-icons";
@@ -132,7 +133,7 @@ export default function EditMember() {
}
} else if (cat == "name") {
setData({ ...data, name: val });
if (val == "") {
if (!validateName(val)) {
setError({ ...error, name: true });
} else {
setError({ ...error, name: false });
@@ -348,7 +349,7 @@ export default function EditMember() {
required
value={data?.name}
error={error.name}
errorText="Nama tidak boleh kosong"
errorText="Nama harus 350 karakter (huruf, angka, spasi, dan simbol ringan (. , ' _ -))"
onChange={val => {
validationForm("name", val)
}}

18
lib/fun_validateName.ts Normal file
View File

@@ -0,0 +1,18 @@
/**
* Validasi Display Name
* Aturan:
* - 2 sampai 50 karakter
* - Huruf, angka, spasi, titik, koma, apostrof, underscore, dan dash
* - Tidak boleh semua spasi
*/
export const validateName = (name: string): boolean => {
const trimmed = name.trim();
// Jika kosong setelah di-trim → invalid
if (!trimmed) return false;
// Regex: hanya huruf, angka, spasi, titik, koma, apostrof, underscore, dash
const regex = /^[a-zA-Z0-9\s._,'-]{3,50}$/;
return regex.test(trimmed);
};