Ensure admin whitelist respects moderation thresholds

This commit is contained in:
thePR0M3TH3AN committed 2025-10-20 17:17:46 -04:00
1 parent 63c6d0ae74
commit dfbda08ec5
3 files changed
+16 -32

No files matched your search

+2 -7
View File
@@ -5119,13 +5119,8 @@ class Application {
: this.deriveModerationTrustedCount(summary, reportType);
const thresholds = this.getActiveModerationThresholds();
const adminWhitelistBypass = existingModeration.adminWhitelistBypass === true;
const computedBlockAutoplay = adminWhitelistBypass
? false
: trustedCount >= thresholds.autoplayBlockThreshold;
const computedBlurThumbnail = adminWhitelistBypass
? false
: trustedCount >= thresholds.blurThreshold;
const computedBlockAutoplay = trustedCount >= thresholds.autoplayBlockThreshold;
const computedBlurThumbnail = trustedCount >= thresholds.blurThreshold;
const overrideEntry = getModerationOverride(video.id);
const overrideActive = overrideEntry?.showAnyway === true;
+6 -17
View File
@@ -319,14 +319,6 @@ export function createModerationStage({
}
: () => ({ hex: "", whitelisted: false, blacklisted: false });
const feedName =
typeof context?.feedName === "string" ? context.feedName.trim().toLowerCase() : "";
const runtimeVariant =
typeof context?.runtime?.feedVariant === "string"
? context.runtime.feedVariant.trim().toLowerCase()
: "";
const isDiscoveryFeed = feedName === "discovery" || runtimeVariant === "discovery";
const results = [];
for (const item of items) {
@@ -470,13 +462,10 @@ export function createModerationStage({
trustedMuters = [];
}
let blockAutoplay = trustedCount >= normalizedAutoplayThreshold;
let blurThumbnail = trustedCount >= normalizedBlurThreshold;
const adminWhitelistBypass = isDiscoveryFeed && adminStatus?.whitelisted === true;
if (adminWhitelistBypass) {
blockAutoplay = false;
blurThumbnail = false;
}
const blockAutoplay = trustedCount >= normalizedAutoplayThreshold;
const blurThumbnail = trustedCount >= normalizedBlurThreshold;
const adminWhitelist = adminStatus?.whitelisted === true;
const adminWhitelistBypass = false;
if (!item.metadata || typeof item.metadata !== "object") {
item.metadata = {};
@@ -495,7 +484,7 @@ export function createModerationStage({
metadataModeration.trustedReporters = Array.isArray(trustedReporters)
? trustedReporters.slice()
: [];
metadataModeration.adminWhitelist = adminStatus?.whitelisted === true;
metadataModeration.adminWhitelist = adminWhitelist;
metadataModeration.adminWhitelistBypass = adminWhitelistBypass;
metadataModeration.trustedMuted = trustedMuted;
metadataModeration.trustedMuters = trustedMuters.slice();
@@ -521,7 +510,7 @@ export function createModerationStage({
video.moderation.blurThumbnail = blurThumbnail;
video.moderation.trustedCount = trustedCount;
video.moderation.reportType = normalizedReportType;
video.moderation.adminWhitelist = adminStatus?.whitelisted === true;
video.moderation.adminWhitelist = adminWhitelist;
video.moderation.adminWhitelistBypass = adminWhitelistBypass;
video.moderation.trustedMuted = trustedMuted;
if (trustedMuted) {
+8 -8
View File
@@ -2,7 +2,7 @@ import test from "node:test";
import assert from "node:assert/strict";
import { createModerationStage } from "../js/feedEngine/stages.js";
test("moderation stage enforces admin lists and whitelist bypass", async () => {
test("moderation stage enforces admin lists without whitelist bypass", async () => {
const whitelistedHex = "1".repeat(64);
const blockedHex = "2".repeat(64);
const blacklistedHex = "3".repeat(64);
@@ -88,11 +88,11 @@ test("moderation stage enforces admin lists and whitelist bypass", async () => {
);
const whitelistedItem = result[0];
assert.equal(whitelistedItem.video.moderation.blockAutoplay, false);
assert.equal(whitelistedItem.video.moderation.blurThumbnail, false);
assert.equal(whitelistedItem.video.moderation.blockAutoplay, true);
assert.equal(whitelistedItem.video.moderation.blurThumbnail, true);
assert.equal(whitelistedItem.video.moderation.adminWhitelist, true);
assert.equal(whitelistedItem.video.moderation.adminWhitelistBypass, true);
assert.equal(whitelistedItem.metadata.moderation.adminWhitelistBypass, true);
assert.equal(whitelistedItem.video.moderation.adminWhitelistBypass, false);
assert.equal(whitelistedItem.metadata.moderation.adminWhitelistBypass, false);
const normalItem = result[1];
assert.equal(normalItem.video.moderation.blockAutoplay, true);
@@ -309,9 +309,9 @@ test("moderation stage propagates whitelist, muters, and threshold updates", asy
assert.ok(mutedItem);
assert.equal(whitelistedItem.metadata.moderation.adminWhitelist, true);
assert.equal(whitelistedItem.metadata.moderation.blockAutoplay, false);
assert.equal(whitelistedItem.metadata.moderation.blurThumbnail, false);
assert.equal(whitelistedItem.video.moderation.adminWhitelistBypass, true);
assert.equal(whitelistedItem.metadata.moderation.blockAutoplay, true);
assert.equal(whitelistedItem.metadata.moderation.blurThumbnail, true);
assert.equal(whitelistedItem.video.moderation.adminWhitelistBypass, false);
assert.equal(mutedItem.metadata.moderation.trustedMuted, true);
assert.deepEqual(mutedItem.metadata.moderation.trustedMuters, [muterHex]);