upd: validasi nama pengguna
Deskripsi: - validasi nama pada edit profile, tambah anggota, edit anggota NO Issues
This commit is contained in:
@@ -8,6 +8,7 @@ import { ConstEnv } from "@/constants/ConstEnv";
|
|||||||
import Styles from "@/constants/Styles";
|
import Styles from "@/constants/Styles";
|
||||||
import { apiEditProfile, apiGetProfile } from "@/lib/api";
|
import { apiEditProfile, apiGetProfile } from "@/lib/api";
|
||||||
import { setEntities } from "@/lib/entitiesSlice";
|
import { setEntities } from "@/lib/entitiesSlice";
|
||||||
|
import { validateName } from "@/lib/fun_validateName";
|
||||||
import { useAuthSession } from "@/providers/AuthProvider";
|
import { useAuthSession } from "@/providers/AuthProvider";
|
||||||
import { MaterialCommunityIcons } from "@expo/vector-icons";
|
import { MaterialCommunityIcons } from "@expo/vector-icons";
|
||||||
import { useHeaderHeight } from "@react-navigation/elements";
|
import { useHeaderHeight } from "@react-navigation/elements";
|
||||||
@@ -109,7 +110,7 @@ export default function EditProfile() {
|
|||||||
}
|
}
|
||||||
} else if (cat == "name") {
|
} else if (cat == "name") {
|
||||||
setData({ ...data, name: val });
|
setData({ ...data, name: val });
|
||||||
if (val == "") {
|
if (!validateName(val)) {
|
||||||
setError({ ...error, name: true });
|
setError({ ...error, name: true });
|
||||||
} else {
|
} else {
|
||||||
setError({ ...error, name: false });
|
setError({ ...error, name: false });
|
||||||
@@ -305,7 +306,7 @@ export default function EditProfile() {
|
|||||||
required
|
required
|
||||||
value={data?.name}
|
value={data?.name}
|
||||||
error={error.name}
|
error={error.name}
|
||||||
errorText="Nama tidak boleh kosong"
|
errorText="Nama harus 3–50 karakter (huruf, angka, spasi, dan simbol ringan (. , ' _ -))"
|
||||||
onChange={val => {
|
onChange={val => {
|
||||||
validationForm("name", val)
|
validationForm("name", val)
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import Text from "@/components/Text";
|
|||||||
import { ColorsStatus } from "@/constants/ColorsStatus";
|
import { ColorsStatus } from "@/constants/ColorsStatus";
|
||||||
import Styles from "@/constants/Styles";
|
import Styles from "@/constants/Styles";
|
||||||
import { apiCreateUser } from "@/lib/api";
|
import { apiCreateUser } from "@/lib/api";
|
||||||
|
import { validateName } from "@/lib/fun_validateName";
|
||||||
import { setUpdateMember } from "@/lib/memberSlice";
|
import { setUpdateMember } from "@/lib/memberSlice";
|
||||||
import { useAuthSession } from "@/providers/AuthProvider";
|
import { useAuthSession } from "@/providers/AuthProvider";
|
||||||
import { MaterialCommunityIcons } from "@expo/vector-icons";
|
import { MaterialCommunityIcons } from "@expo/vector-icons";
|
||||||
@@ -100,7 +101,7 @@ export default function CreateMember() {
|
|||||||
}
|
}
|
||||||
} else if (cat == "name") {
|
} else if (cat == "name") {
|
||||||
setDataForm({ ...dataForm, name: val });
|
setDataForm({ ...dataForm, name: val });
|
||||||
if (val == "") {
|
if (!validateName(val)) {
|
||||||
setError({ ...error, name: true });
|
setError({ ...error, name: true });
|
||||||
} else {
|
} else {
|
||||||
setError({ ...error, name: false });
|
setError({ ...error, name: false });
|
||||||
@@ -309,7 +310,7 @@ export default function CreateMember() {
|
|||||||
placeholder="Nama"
|
placeholder="Nama"
|
||||||
required
|
required
|
||||||
error={error.name}
|
error={error.name}
|
||||||
errorText="Nama tidak boleh kosong"
|
errorText="Nama harus 3–50 karakter (huruf, angka, spasi, dan simbol ringan (. , ' _ -))"
|
||||||
onChange={val => {
|
onChange={val => {
|
||||||
validationForm("name", val)
|
validationForm("name", val)
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import Text from "@/components/Text";
|
|||||||
import { ConstEnv } from "@/constants/ConstEnv";
|
import { ConstEnv } from "@/constants/ConstEnv";
|
||||||
import Styles from "@/constants/Styles";
|
import Styles from "@/constants/Styles";
|
||||||
import { apiEditUser, apiGetProfile } from "@/lib/api";
|
import { apiEditUser, apiGetProfile } from "@/lib/api";
|
||||||
|
import { validateName } from "@/lib/fun_validateName";
|
||||||
import { setUpdateMember } from "@/lib/memberSlice";
|
import { setUpdateMember } from "@/lib/memberSlice";
|
||||||
import { useAuthSession } from "@/providers/AuthProvider";
|
import { useAuthSession } from "@/providers/AuthProvider";
|
||||||
import { MaterialCommunityIcons } from "@expo/vector-icons";
|
import { MaterialCommunityIcons } from "@expo/vector-icons";
|
||||||
@@ -132,7 +133,7 @@ export default function EditMember() {
|
|||||||
}
|
}
|
||||||
} else if (cat == "name") {
|
} else if (cat == "name") {
|
||||||
setData({ ...data, name: val });
|
setData({ ...data, name: val });
|
||||||
if (val == "") {
|
if (!validateName(val)) {
|
||||||
setError({ ...error, name: true });
|
setError({ ...error, name: true });
|
||||||
} else {
|
} else {
|
||||||
setError({ ...error, name: false });
|
setError({ ...error, name: false });
|
||||||
@@ -348,7 +349,7 @@ export default function EditMember() {
|
|||||||
required
|
required
|
||||||
value={data?.name}
|
value={data?.name}
|
||||||
error={error.name}
|
error={error.name}
|
||||||
errorText="Nama tidak boleh kosong"
|
errorText="Nama harus 3–50 karakter (huruf, angka, spasi, dan simbol ringan (. , ' _ -))"
|
||||||
onChange={val => {
|
onChange={val => {
|
||||||
validationForm("name", val)
|
validationForm("name", val)
|
||||||
}}
|
}}
|
||||||
|
|||||||
18
lib/fun_validateName.ts
Normal file
18
lib/fun_validateName.ts
Normal 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);
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user