Refactor/rewrite the entire moderation-application system

This commit is contained in:
Paul Frazee
2024-02-14 21:48:27 -08:00
parent cc635ae949
commit b009a34a7a
43 changed files with 1094 additions and 1062 deletions
+7 -6
View File
@@ -1,6 +1,6 @@
import {
AppBskyEmbedRecord,
AppBskyEmbedRecordWithMedia,
// AppBskyEmbedRecord,
// AppBskyEmbedRecordWithMedia,
moderatePost,
} from '@atproto/api'
@@ -13,10 +13,11 @@ export function moderatePost_wrapped(
subject: Parameters<ModeratePost>[0],
opts: Options,
) {
const {hiddenPosts = [], ...options} = opts
const moderations = moderatePost(subject, options)
// const {hiddenPosts = [], ...options} = opts
const moderations = moderatePost(subject, opts) // options)
if (hiddenPosts.includes(subject.uri)) {
// TODO
/*if (hiddenPosts.includes(subject.uri)) {
moderations.content.filter = true
moderations.content.blur = true
if (!moderations.content.cause) {
@@ -52,7 +53,7 @@ export function moderatePost_wrapped(
}
}
}
}
}*/
return moderations
}
+1 -65
View File
@@ -1,68 +1,4 @@
import {
ModerationCause,
ProfileModeration,
PostModeration,
LABEL_GROUPS,
LabelGroupDefinition,
} from '@atproto/api'
export function getProfileModerationCauses(
moderation: ProfileModeration,
): ModerationCause[] {
/*
Gather everything on profile and account that blurs or alerts
*/
return [
moderation.decisions.profile.cause,
...moderation.decisions.profile.additionalCauses,
moderation.decisions.account.cause,
...moderation.decisions.account.additionalCauses,
].filter(cause => {
if (!cause) {
return false
}
if (cause?.type === 'label') {
if (
cause.labelDef.onwarn === 'blur' ||
cause.labelDef.onwarn === 'alert'
) {
return true
} else {
return false
}
}
return true
}) as ModerationCause[]
}
export function isPostMediaBlurred(
decisions: PostModeration['decisions'],
): boolean {
return decisions.post.blurMedia
}
export function isQuoteBlurred(
decisions: PostModeration['decisions'],
): boolean {
return (
decisions.quote?.blur ||
decisions.quote?.blurMedia ||
decisions.quote?.filter ||
decisions.quotedAccount?.blur ||
decisions.quotedAccount?.filter ||
false
)
}
export function isCauseALabelOnUri(
cause: ModerationCause | undefined,
uri: string,
): boolean {
if (cause?.type !== 'label') {
return false
}
return cause.label.uri === uri
}
import {ModerationCause, LABEL_GROUPS, LabelGroupDefinition} from '@atproto/api'
export function getModerationCauseKey(cause: ModerationCause): string {
const source =