about summary refs log tree commit diff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/labeling/const.ts50
-rw-r--r--src/lib/labeling/helpers.ts19
2 files changed, 69 insertions, 0 deletions
diff --git a/src/lib/labeling/const.ts b/src/lib/labeling/const.ts
new file mode 100644
index 000000000..8403fdf1a
--- /dev/null
+++ b/src/lib/labeling/const.ts
@@ -0,0 +1,50 @@
+import {LabelPreferencesModel} from 'state/models/ui/preferences'
+
+export interface LabelValGroup {
+  id: keyof LabelPreferencesModel | 'illegal' | 'unknown'
+  title: string
+  values: string[]
+}
+
+export const ILLEGAL_LABEL_GROUP: LabelValGroup = {
+  id: 'illegal',
+  title: 'Illegal Content',
+  values: ['csam', 'dmca-violation', 'nudity-nonconsentual'],
+}
+
+export const UNKNOWN_LABEL_GROUP: LabelValGroup = {
+  id: 'unknown',
+  title: 'Unknown Label',
+  values: [],
+}
+
+export const CONFIGURABLE_LABEL_GROUPS: Record<
+  keyof LabelPreferencesModel,
+  LabelValGroup
+> = {
+  nsfw: {
+    id: 'nsfw',
+    title: 'Sexual Content',
+    values: ['porn', 'nudity', 'sexual'],
+  },
+  gore: {
+    id: 'gore',
+    title: 'Violent / Bloody',
+    values: ['gore', 'self-harm', 'torture'],
+  },
+  hate: {
+    id: 'hate',
+    title: 'Political Hate-Groups',
+    values: ['icon-kkk', 'icon-nazi', 'icon-confederate'],
+  },
+  spam: {
+    id: 'spam',
+    title: 'Spam',
+    values: ['spam'],
+  },
+  impersonation: {
+    id: 'impersonation',
+    title: 'Impersonation',
+    values: ['impersonation'],
+  },
+}
diff --git a/src/lib/labeling/helpers.ts b/src/lib/labeling/helpers.ts
new file mode 100644
index 000000000..b2057ff18
--- /dev/null
+++ b/src/lib/labeling/helpers.ts
@@ -0,0 +1,19 @@
+import {
+  LabelValGroup,
+  CONFIGURABLE_LABEL_GROUPS,
+  ILLEGAL_LABEL_GROUP,
+  UNKNOWN_LABEL_GROUP,
+} from './const'
+
+export function getLabelValueGroup(labelVal: string): LabelValGroup {
+  let id: keyof typeof CONFIGURABLE_LABEL_GROUPS
+  for (id in CONFIGURABLE_LABEL_GROUPS) {
+    if (ILLEGAL_LABEL_GROUP.values.includes(labelVal)) {
+      return ILLEGAL_LABEL_GROUP
+    }
+    if (CONFIGURABLE_LABEL_GROUPS[id].values.includes(labelVal)) {
+      return CONFIGURABLE_LABEL_GROUPS[id]
+    }
+  }
+  return UNKNOWN_LABEL_GROUP
+}