diff --git a/app/(application)/(user)/_layout.tsx b/app/(application)/(user)/_layout.tsx
index 7d75dd1..c86ae22 100644
--- a/app/(application)/(user)/_layout.tsx
+++ b/app/(application)/(user)/_layout.tsx
@@ -616,6 +616,20 @@ export default function UserLayout() {
headerLeft: () => ,
}}
/>
+ ,
+ }}
+ />
+ ,
+ }}
+ />
{/* ========== Maps Section ========= */}
(null);
- const [listComment, setListComment] = useState(null);
+ const [listComment, setListComment] = useState(null);
const [isLoadingComment, setLoadingComment] = useState(false);
// Status
@@ -122,6 +108,7 @@ export default function ForumDetail() {
comment: text,
authorId: user?.id,
};
+
try {
setLoadingComment(true);
const response = await apiForumCreateComment({
diff --git a/app/(application)/(user)/forum/[id]/other-report-commentar.tsx b/app/(application)/(user)/forum/[id]/other-report-commentar.tsx
index d2be6d7..7a50cd2 100644
--- a/app/(application)/(user)/forum/[id]/other-report-commentar.tsx
+++ b/app/(application)/(user)/forum/[id]/other-report-commentar.tsx
@@ -6,7 +6,7 @@ import {
} from "@/components";
import { MainColor } from "@/constants/color-palet";
import { useAuth } from "@/hooks/use-auth";
-import { apiForumCreateReportCommentar } from "@/service/api-client/api-master";
+import { apiForumCreateReportCommentar } from "@/service/api-client/api-forum";
import { router, useLocalSearchParams } from "expo-router";
import { useState } from "react";
import Toast from "react-native-toast-message";
diff --git a/app/(application)/(user)/forum/[id]/other-report-posting.tsx b/app/(application)/(user)/forum/[id]/other-report-posting.tsx
index 0fd61d5..227b868 100644
--- a/app/(application)/(user)/forum/[id]/other-report-posting.tsx
+++ b/app/(application)/(user)/forum/[id]/other-report-posting.tsx
@@ -6,7 +6,7 @@ import {
} from "@/components";
import { MainColor } from "@/constants/color-palet";
import { useAuth } from "@/hooks/use-auth";
-import { apiForumCreateReportPosting } from "@/service/api-client/api-master";
+import { apiForumCreateReportPosting } from "@/service/api-client/api-forum";
import { router, useLocalSearchParams } from "expo-router";
import { useState } from "react";
import Toast from "react-native-toast-message";
diff --git a/app/(application)/(user)/forum/[id]/preview-report-comment.tsx b/app/(application)/(user)/forum/[id]/preview-report-comment.tsx
new file mode 100644
index 0000000..5f4b0f3
--- /dev/null
+++ b/app/(application)/(user)/forum/[id]/preview-report-comment.tsx
@@ -0,0 +1,91 @@
+import {
+ BaseBox,
+ NewWrapper,
+ Spacing,
+ StackCustom,
+ TextCustom,
+} from "@/components";
+import ListSkeletonComponent from "@/components/_ShareComponent/ListSkeletonComponent";
+import NoDataText from "@/components/_ShareComponent/NoDataText";
+import CustomSkeleton from "@/components/_ShareComponent/SkeletonCustom";
+import { apiForumGetReportComment } from "@/service/api-client/api-forum";
+import { useFocusEffect, useLocalSearchParams } from "expo-router";
+import _ from "lodash";
+import { useCallback, useState } from "react";
+
+export default function ForumPreviewReportComment() {
+ const { id } = useLocalSearchParams();
+ const [data, setData] = useState(null);
+ const [listData, setListData] = useState(null);
+ const [loading, setLoading] = useState(false);
+ // Status
+
+ useFocusEffect(
+ useCallback(() => {
+ onLoadData(id as string);
+ }, [id])
+ );
+
+ const onLoadData = async (id: string) => {
+ try {
+ setLoading(true);
+ const response = await apiForumGetReportComment({ id });
+ setData(response.data);
+ setListData(response?.data?.Forum_ReportKomentar);
+ } catch (error) {
+ console.log("[ERROR]", error);
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ return (
+ <>
+
+
+
+ Komentar anda telah melanggar aturan forum ! Admin mengambil
+ tindakan untuk menghapus komentar anda!
+
+ {loading ? (
+
+ ) : (
+
+ "{data?.komentar ? data?.komentar : "-"}"
+
+ )}
+
+
+
+ Beberapa laporan yang telah diterima
+
+
+ {loading ? (
+
+ ) : _.isEmpty(listData) ? (
+
+ ) : (
+ listData?.map((e: any, index: number) => (
+
+ {e?.deskripsi ? (
+
+ Laporan Lainnya
+ {e?.deskripsi}
+
+ ) : (
+
+
+ {e?.ForumMaster_KategoriReport?.title}
+
+
+ {e?.ForumMaster_KategoriReport?.deskripsi}
+
+
+ )}
+
+ ))
+ )}
+
+ >
+ );
+}
diff --git a/app/(application)/(user)/forum/[id]/preview-report-posting.tsx b/app/(application)/(user)/forum/[id]/preview-report-posting.tsx
new file mode 100644
index 0000000..c732637
--- /dev/null
+++ b/app/(application)/(user)/forum/[id]/preview-report-posting.tsx
@@ -0,0 +1,91 @@
+import {
+ BaseBox,
+ NewWrapper,
+ Spacing,
+ StackCustom,
+ TextCustom,
+} from "@/components";
+import ListSkeletonComponent from "@/components/_ShareComponent/ListSkeletonComponent";
+import NoDataText from "@/components/_ShareComponent/NoDataText";
+import CustomSkeleton from "@/components/_ShareComponent/SkeletonCustom";
+import { apiForumGetReportPosting } from "@/service/api-client/api-forum";
+import { useFocusEffect, useLocalSearchParams } from "expo-router";
+import _ from "lodash";
+import { useCallback, useState } from "react";
+
+export default function ForumPreviewReportPosting() {
+ const { id } = useLocalSearchParams();
+ const [data, setData] = useState(null);
+ const [listData, setListData] = useState(null);
+ const [loading, setLoading] = useState(false);
+ // Status
+
+ useFocusEffect(
+ useCallback(() => {
+ onLoadData(id as string);
+ }, [id])
+ );
+
+ const onLoadData = async (id: string) => {
+ try {
+ setLoading(true);
+ const response = await apiForumGetReportPosting({ id });
+ setData(response.data);
+ setListData(response?.data?.Forum_ReportPosting);
+ } catch (error) {
+ console.log("[ERROR]", error);
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ return (
+ <>
+
+
+
+ Postingan anda telah melanggar aturan forum ! Admin mengambil
+ tindakan untuk menghapus komentar anda!
+
+ {loading ? (
+
+ ) : (
+
+ "{data?.diskusi ? data?.diskusi : "-"}"
+
+ )}
+
+
+
+ Beberapa laporan yang telah diterima
+
+
+ {loading ? (
+
+ ) : _.isEmpty(listData) ? (
+
+ ) : (
+ listData?.map((e: any) => (
+
+ {e?.deskripsi ? (
+
+ Laporan Lainnya
+ {e?.deskripsi}
+
+ ) : (
+
+
+ {e?.ForumMaster_KategoriReport?.title}
+
+
+ {e?.ForumMaster_KategoriReport?.deskripsi}
+
+
+ )}
+
+ ))
+ )}
+
+ >
+ );
+}
diff --git a/app/(application)/(user)/forum/[id]/report-commentar.tsx b/app/(application)/(user)/forum/[id]/report-commentar.tsx
index b3fe93e..2b23183 100644
--- a/app/(application)/(user)/forum/[id]/report-commentar.tsx
+++ b/app/(application)/(user)/forum/[id]/report-commentar.tsx
@@ -8,7 +8,8 @@ import {
import { AccentColor, MainColor } from "@/constants/color-palet";
import { useAuth } from "@/hooks/use-auth";
import Forum_ReportListSection from "@/screens/Forum/ReportListSection";
-import { apiForumCreateReportCommentar, apiMasterForumReportList } from "@/service/api-client/api-master";
+import { apiForumCreateReportCommentar } from "@/service/api-client/api-forum";
+import { apiMasterForumReportList } from "@/service/api-client/api-master";
import { router, useLocalSearchParams } from "expo-router";
import { useState, useEffect } from "react";
import Toast from "react-native-toast-message";
diff --git a/app/(application)/(user)/forum/[id]/report-posting.tsx b/app/(application)/(user)/forum/[id]/report-posting.tsx
index 5947fb6..209f271 100644
--- a/app/(application)/(user)/forum/[id]/report-posting.tsx
+++ b/app/(application)/(user)/forum/[id]/report-posting.tsx
@@ -9,8 +9,8 @@ import {
import { AccentColor, MainColor } from "@/constants/color-palet";
import { useAuth } from "@/hooks/use-auth";
import Forum_ReportListSection from "@/screens/Forum/ReportListSection";
+import { apiForumCreateReportPosting } from "@/service/api-client/api-forum";
import {
- apiForumCreateReportPosting,
apiMasterForumReportList,
} from "@/service/api-client/api-master";
import { router, useLocalSearchParams } from "expo-router";
diff --git a/app/(application)/(user)/forum/create.tsx b/app/(application)/(user)/forum/create.tsx
index 8599bbf..6dd88ba 100644
--- a/app/(application)/(user)/forum/create.tsx
+++ b/app/(application)/(user)/forum/create.tsx
@@ -2,15 +2,14 @@ import {
BoxButtonOnFooter,
ButtonCustom,
TextAreaCustom,
- ViewWrapper
+ ViewWrapper,
} from "@/components";
import AlertWarning from "@/components/Alert/AlertWarning";
import { useAuth } from "@/hooks/use-auth";
import { apiForumCreate } from "@/service/api-client/api-forum";
-import { isBadContent } from "@/utils/badWordsIndonesia";
+import { censorText, isBadContent } from "@/utils/badWordsIndonesia";
import { router } from "expo-router";
import { useState } from "react";
-import { Alert } from "react-native";
import Toast from "react-native-toast-message";
export default function ForumCreate() {
@@ -19,16 +18,22 @@ export default function ForumCreate() {
const [isLoading, setIsLoading] = useState(false);
const handlerSubmit = async () => {
-
- if (isBadContent(text)) {
- AlertWarning({})
+ if (text.trim() === "") {
+ AlertWarning({
+ title: "Lengkapi Data",
+ description: "Postingan tidak boleh kosong",
+ });
return;
}
-
+
+ // Bisa di sensor atau return dan tidak bisa di post
+ const cencorContent = censorText(text)
+
const newData = {
- diskusi: text,
+ diskusi: cencorContent,
authorId: user?.id,
};
+
try {
setIsLoading(true);
const response = await apiForumCreate({ data: newData });
@@ -50,6 +55,7 @@ export default function ForumCreate() {
const buttonFooter = (
{
handlerSubmit();
diff --git a/app/(application)/admin/forum/[id]/list-report-comment.tsx b/app/(application)/admin/forum/[id]/list-report-comment.tsx
index 935c707..a5915fe 100644
--- a/app/(application)/admin/forum/[id]/list-report-comment.tsx
+++ b/app/(application)/admin/forum/[id]/list-report-comment.tsx
@@ -15,12 +15,11 @@ import { IconDot, IconView } from "@/components/_Icon/IconComponent";
import { IconTrash } from "@/components/_Icon/IconTrash";
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage";
-import AdminTitleTable from "@/components/_ShareComponent/Admin/TableTitle";
-import AdminTableValue from "@/components/_ShareComponent/Admin/TableValue";
import { GridSpan_4_8 } from "@/components/_ShareComponent/GridSpan_4_8";
import { GridSpan_NewComponent } from "@/components/_ShareComponent/GridSpan_NewComponent";
import { MainColor } from "@/constants/color-palet";
import { ICON_SIZE_BUTTON } from "@/constants/constans-value";
+import { useAuth } from "@/hooks/use-auth";
import {
apiAdminForumCommentById,
apiAdminForumDeactivateComment,
@@ -35,6 +34,7 @@ import Toast from "react-native-toast-message";
export default function AdminForumReportComment() {
const { id } = useLocalSearchParams();
+ const { user } = useAuth();
const [data, setData] = useState(null);
const [listReport, setListReport] = useState(null);
const [loadList, setLoadList] = useState(false);
@@ -111,9 +111,13 @@ export default function AdminForumReportComment() {
-
+
Aksi}
+ text1={
+
+ Aksi
+
+ }
text2={Pelapor}
text3={Kategori Report}
/>
@@ -129,22 +133,24 @@ export default function AdminForumReportComment() {
- }
- onPress={() => {
- setOpenDrawerAction(true);
- setSelectedReport({
- id: item.id,
- username: item.User?.username,
- kategori: item.ForumMaster_KategoriReport?.title,
- keterangan:
- item.ForumMaster_KategoriReport?.deskripsi,
- deskripsi: item.deskripsi,
- });
- }}
- />
-
+
+
+ }
+ onPress={() => {
+ setOpenDrawerAction(true);
+ setSelectedReport({
+ id: item.id,
+ username: item.User?.username,
+ kategori: item.ForumMaster_KategoriReport?.title,
+ keterangan:
+ item.ForumMaster_KategoriReport?.deskripsi,
+ deskripsi: item.deskripsi,
+ });
+ }}
+ />
+
}
text2={
@@ -188,15 +194,18 @@ export default function AdminForumReportComment() {
onPressRight: async () => {
const deleteComment = await apiAdminForumDeactivateComment({
id: id as string,
+ data: {
+ senderId: user?.id as string,
+ },
});
- if (!deleteComment.success) {
- Toast.show({
- type: "error",
- text1: "Komentar gagal dihapus",
- });
- return;
- }
+ // if (!deleteComment.success) {
+ // Toast.show({
+ // type: "error",
+ // text1: "Komentar gagal dihapus",
+ // });
+ // return;
+ // }
setOpenDrawer(false);
Toast.show({
diff --git a/app/(application)/admin/forum/[id]/list-report-posting.tsx b/app/(application)/admin/forum/[id]/list-report-posting.tsx
index faedf07..e26b625 100644
--- a/app/(application)/admin/forum/[id]/list-report-posting.tsx
+++ b/app/(application)/admin/forum/[id]/list-report-posting.tsx
@@ -16,12 +16,11 @@ import { IconDot, IconView } from "@/components/_Icon/IconComponent";
import { IconTrash } from "@/components/_Icon/IconTrash";
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage";
-import AdminTitleTable from "@/components/_ShareComponent/Admin/TableTitle";
-import AdminTableValue from "@/components/_ShareComponent/Admin/TableValue";
import { GridSpan_4_8 } from "@/components/_ShareComponent/GridSpan_4_8";
import { GridSpan_NewComponent } from "@/components/_ShareComponent/GridSpan_NewComponent";
import { MainColor } from "@/constants/color-palet";
import { ICON_SIZE_BUTTON } from "@/constants/constans-value";
+import { useAuth } from "@/hooks/use-auth";
import {
apiAdminForumDeactivatePosting,
apiAdminForumListReportPostingById,
@@ -35,6 +34,7 @@ import { Divider } from "react-native-paper";
import Toast from "react-native-toast-message";
export default function AdminForumReportPosting() {
+ const { user } = useAuth();
const { id } = useLocalSearchParams();
const [openDrawerPage, setOpenDrawerPage] = useState(false);
const [openDrawerAction, setOpenDrawerAction] = useState(false);
@@ -215,6 +215,9 @@ export default function AdminForumReportPosting() {
onPressRight: async () => {
const response = await apiAdminForumDeactivatePosting({
id: id as string,
+ data: {
+ senderId: user?.id as string,
+ },
});
if (!response.success) {
diff --git a/app/(application)/admin/forum/report-posting.tsx b/app/(application)/admin/forum/report-posting.tsx
index 6d5ff57..a819676 100644
--- a/app/(application)/admin/forum/report-posting.tsx
+++ b/app/(application)/admin/forum/report-posting.tsx
@@ -73,7 +73,7 @@ export default function AdminForumReportPosting() {
- Username
+ Pelapor
}
text2={
diff --git a/screens/Home/tabsList.ts b/screens/Home/tabsList.ts
index a29f31c..0a57395 100644
--- a/screens/Home/tabsList.ts
+++ b/screens/Home/tabsList.ts
@@ -13,7 +13,8 @@ export const tabsHome: any = ({
icon: "chatbubble-ellipses-outline",
activeIcon: "chatbubble-ellipses",
label: "Forum",
- path: acceptedForumTermsAt ? "/forum" : "/forum/terms",
+ // path: acceptedForumTermsAt ? "/forum" : "/forum/terms",
+ path: "/forum",
isActive: true,
disabled: false,
},
diff --git a/service/api-admin/api-admin-forum.ts b/service/api-admin/api-admin-forum.ts
index 82b4a10..c48a134 100644
--- a/service/api-admin/api-admin-forum.ts
+++ b/service/api-admin/api-admin-forum.ts
@@ -57,9 +57,19 @@ export async function apiAdminForumListReportCommentById({
}
}
-export async function apiAdminForumDeactivateComment({ id }: { id: string }) {
+export async function apiAdminForumDeactivateComment({
+ id,
+ data,
+}: {
+ id: string;
+ data: { senderId: string };
+}) {
+
+ console.log("data", data)
try {
- const response = await apiConfig.put(`/mobile/admin/forum/${id}/comment`);
+ const response = await apiConfig.put(`/mobile/admin/forum/${id}/comment`, {
+ data: data,
+ });
return response.data;
} catch (error) {
throw error;
@@ -81,9 +91,17 @@ export async function apiAdminForumListReportPostingById({
}
}
-export async function apiAdminForumDeactivatePosting({ id }: { id: string }) {
+export async function apiAdminForumDeactivatePosting({
+ id,
+ data,
+}: {
+ id: string;
+ data: { senderId: string };
+}) {
try {
- const response = await apiConfig.put(`/mobile/admin/forum/${id}`);
+ const response = await apiConfig.put(`/mobile/admin/forum/${id}`, {
+ data: data,
+ });
return response.data;
} catch (error) {
throw error;
diff --git a/service/api-client/api-forum.ts b/service/api-client/api-forum.ts
index 9e3c4e3..28c60f3 100644
--- a/service/api-client/api-forum.ts
+++ b/service/api-client/api-forum.ts
@@ -119,3 +119,62 @@ export async function apiForumDeleteComment({ id }: { id: string }) {
throw error;
}
}
+
+export async function apiForumGetReportPosting({id}: {id:string}) {
+ try {
+ const response = await apiConfig.get(`/mobile/forum/${id}/preview-report-posting`);
+ return response.data;
+ } catch (error) {
+ throw error;
+ }
+}
+
+export async function apiForumGetReportComment({id}: {id:string}) {
+ try {
+ const response = await apiConfig.get(`/mobile/forum/${id}/preview-report-comment`);
+ return response.data;
+ } catch (error) {
+ throw error;
+ }
+}
+
+
+export async function apiForumCreateReportPosting({
+ id,
+ data,
+}: {
+ id: string;
+ data: any;
+}) {
+ try {
+ const response = await apiConfig.post(
+ `/mobile/forum/${id}/report-posting`,
+ {
+ data: data,
+ }
+ );
+ return response.data;
+ } catch (error) {
+ throw error;
+ }
+}
+
+export async function apiForumCreateReportCommentar({
+ id,
+ data,
+}: {
+ id: string;
+ data: any;
+}) {
+ try {
+ const response = await apiConfig.post(
+ `/mobile/forum/${id}/report-commentar`,
+ {
+ data: data,
+ }
+ );
+ return response.data;
+ } catch (error) {
+ throw error;
+ }
+}
\ No newline at end of file
diff --git a/service/api-client/api-master.ts b/service/api-client/api-master.ts
index c3b8689..530a460 100644
--- a/service/api-client/api-master.ts
+++ b/service/api-client/api-master.ts
@@ -77,46 +77,6 @@ export async function apiMasterForumReportList() {
// ================== END MASTER FORUM ================== //
-export async function apiForumCreateReportPosting({
- id,
- data,
-}: {
- id: string;
- data: any;
-}) {
- try {
- const response = await apiConfig.post(
- `/mobile/forum/${id}/report-posting`,
- {
- data: data,
- }
- );
- return response.data;
- } catch (error) {
- throw error;
- }
-}
-
-export async function apiForumCreateReportCommentar({
- id,
- data,
-}: {
- id: string;
- data: any;
-}) {
- try {
- const response = await apiConfig.post(
- `/mobile/forum/${id}/report-commentar`,
- {
- data: data,
- }
- );
- return response.data;
- } catch (error) {
- throw error;
- }
-}
-
// ================== START MASTER INVESTMENT ================== //
export async function apiMasterInvestment({
diff --git a/types/type-forum.ts b/types/type-forum.ts
new file mode 100644
index 0000000..c55fd78
--- /dev/null
+++ b/types/type-forum.ts
@@ -0,0 +1,15 @@
+export interface TypeForum_CommentProps {
+ id: string;
+ isActive: boolean;
+ komentar: string;
+ createdAt: Date;
+ authorId: string;
+ Author: {
+ id: string;
+ username: string;
+ Profile: {
+ id: string;
+ imageId: string;
+ };
+ };
+}
\ No newline at end of file
diff --git a/utils/badWordsIndonesia.ts b/utils/badWordsIndonesia.ts
index 82b60c1..d1d48cc 100644
--- a/utils/badWordsIndonesia.ts
+++ b/utils/badWordsIndonesia.ts
@@ -5,11 +5,11 @@ const badWordsIndonesia = [
'anjing', 'babi', 'bangsat', 'bodoh', 'goblok', 'idiot', 'jancok', 'jembut', 'kampret',
'kontol', 'memek', 'ngentot', 'peler', 'puki', 'sialan', 'tai', 'tolol', 'wibu',
'anjingg', 'babbii', 'bangsaat', 'gobllokk', 'jancokk', 'kontoll', 'memekk', 'ngentott',
- 'pelerr', 'puuki', 'sialann', 'taii', 'tololl', 'wibuu',
+ 'pelerr', 'puuki', 'sialann', 'taii', 'tololl', 'wibuu', 'cicing',
// 🔥 Kata Sindiran & Penghinaan
'bego', 'dungu', 'edan', 'gila', 'goblog', 'kampang', 'kampret', 'keparat', 'lonte',
- 'main mata', 'monyet', 'najis', 'ngeyel', 'ngibul', 'ngomong seenaknya', 'ngurangin',
+ 'monyet', 'najis', 'ngeyel', 'ngibul', 'ngomong seenaknya', 'ngurangin',
'ngutang', 'ngurusin urusan orang', 'pemalas', 'pengecut', 'penipu', 'sinting',
'begoo', 'dunguu', 'goblogg', 'kampangg', 'keparatt', 'lontee', 'monyyet', 'najiss',
'ngeyell', 'ngibull', 'ngomongg seenaknya', 'nguranginn', 'ngutangg', 'pemalass',
@@ -23,18 +23,17 @@ const badWordsIndonesia = [
// 💸 Kata Spam / Promosi Ilegal
'judi', 'togel', 'slot', 'casino', 'poker', 'qq', 'bandar', 'agen', 'link', 'wa',
- 'whatsapp', 'telepon', 'nomor', 'hp', 'sms', 'grup', 'join', 'daftar', 'bonus',
- 'deposit', 'withdraw', 'uang', 'duit', 'rp', 'ratusan', 'juta', 'milyar',
+ 'deposit', 'withdraw',
'judii', 'togell', 'slotss', 'casinoo', 'pokerr', 'qqq', 'bandarr', 'agenn', 'linkk',
- 'waa', 'whatsappp', 'teleponn', 'nomorr', 'hpp', 'smss', 'grupp', 'jooin', 'daftarr',
- 'bonuss', 'depositt', 'withdraww', 'uangs', 'duitt', 'rpp', 'ratusann', 'jutaa', 'milyarr',
+ 'waa',
+ 'depositt', 'withdraww', 'rpp',
// 🧩 Variasi Penulisan (Bypass Filter)
'a*njing', 'b*b*i', 'b*ngsat', 'g*blok', 'k*nt*l', 'm*m*k', 'n*g*nt*t', 'p*l*r',
- 't*i', 't*l*l', 'j*n*c*k', 'j*m*b*t', 'k*m*p*r*t', 's*i*l*a*n', 'w*b*u',
+ 't*i', 't*l*l', 'j*n*c*k', 'j*m*b*t', 'k*m*p*r*t', 's*i*l*a*n', 'w*b*u',
'a.n.j.i.n.g', 'b.a.b.i', 'b.a.n.g.s.a.t', 'g.o.b.l.o.k', 'k.o.n.t.o.l', 'm.e.m.e.k',
'n.g.e.n.t.o.t', 'p.e.l.e.r', 't.a.i', 't.o.l.o.l', 'j.a.n.c.o.k', 'j.e.m.b.u.t',
- 'k.a.m.p.r.e.t', 's.i.a.l.a.n', 'w.i.b.u',
+ 'k.a.m.p.r.e.t', 's.i.a.l.a.n', 'w.i.b.u', 'c.i.c.i.n.g',
// 📱 Variasi dengan Angka & Simbol
'4nj1ng', 'b4b1', 'b4ngs4t', 'g0bl0k', 'k0nt0l', 'm3m3k', 'ng3nt0t', 'p3l3r',
@@ -43,8 +42,6 @@ const badWordsIndonesia = [
'p3l3rr', 't4ii', 't0l0ll', 'j4nc0kk', 'j3mbutt', 'k4mpr3tt', 's14l4nn', 'w1buu',
// 🗣️ Kata yang Sering Digunakan dalam Konteks Negatif
- 'dasar', 'kamu', 'kau', 'lu', 'lo', 'gue', 'gua', 'kita', 'kami', 'mereka',
- 'dasarr', 'kamuu', 'kauu', 'luu', 'loo', 'guee', 'guua', 'kitaa', 'kamii', 'merekaa',
'dasar bodoh', 'dasar goblok', 'dasar bangsat', 'dasar idiot', 'dasar sialan',
'dasar bego', 'dasar dungu', 'dasar edan', 'dasar gila', 'dasar sinting',
'dasar pemalas', 'dasar pengecut', 'dasar penipu', 'dasar najis', 'dasar kampret',