about summary refs log tree commit diff
path: root/src/state/session/additional-moderation-authorities.ts
diff options
context:
space:
mode:
authorEric Bailey <git@esb.lol>2024-09-20 14:16:23 -0500
committerGitHub <noreply@github.com>2024-09-20 14:16:23 -0500
commitc85a271ef63ac006bf10f71adae102552298b661 (patch)
treebdd21bf99a700904dd949bdf02d66ba5cfa0dc98 /src/state/session/additional-moderation-authorities.ts
parent395edfe78f748b199be6417e9a2aac1482ac9bdc (diff)
downloadvoidsky-c85a271ef63ac006bf10f71adae102552298b661.tar.zst
Additional moderation (#5172)
* Set up additional mod authorities

* Filter out non-configurable mod authorities

* WIP

* Working

* Cleanup, add mod

* Cleanup

* Add more debug logs

* Tweak logs

* Filter out imperative labels from typeaheads

* Filter hideable content from notifications

* Add api

* Fall back in dev

* Remove space

* Use prod endpoint

* Add tiny notice

* Add notice to labeler card, show all labelers
Diffstat (limited to 'src/state/session/additional-moderation-authorities.ts')
-rw-r--r--src/state/session/additional-moderation-authorities.ts41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/state/session/additional-moderation-authorities.ts b/src/state/session/additional-moderation-authorities.ts
new file mode 100644
index 000000000..c594294b2
--- /dev/null
+++ b/src/state/session/additional-moderation-authorities.ts
@@ -0,0 +1,41 @@
+import {BskyAgent} from '@atproto/api'
+
+import {logger} from '#/logger'
+import {device} from '#/storage'
+
+export const BR_LABELER = 'did:plc:ekitcvx7uwnauoqy5oest3hm'
+export const ADDITIONAL_LABELERS_MAP: {
+  [countryCode: string]: string[]
+} = {
+  BR: [BR_LABELER],
+}
+export const ALL_ADDITIONAL_LABELERS = Object.values(
+  ADDITIONAL_LABELERS_MAP,
+).flat()
+export const NON_CONFIGURABLE_LABELERS = [BR_LABELER]
+
+export function isNonConfigurableModerationAuthority(did: string) {
+  return NON_CONFIGURABLE_LABELERS.includes(did)
+}
+
+export function configureAdditionalModerationAuthorities() {
+  const geolocation = device.get(['geolocation'])
+  let additionalLabelers: string[] = ALL_ADDITIONAL_LABELERS
+
+  if (geolocation?.countryCode) {
+    additionalLabelers = ADDITIONAL_LABELERS_MAP[geolocation.countryCode] ?? []
+  } else {
+    logger.info(`no geolocation, cannot apply mod authorities`)
+  }
+
+  const appLabelers = Array.from(
+    new Set([...BskyAgent.appLabelers, ...additionalLabelers]),
+  )
+
+  logger.info(`applying mod authorities`, {
+    additionalLabelers,
+    appLabelers,
+  })
+
+  BskyAgent.configure({appLabelers})
+}