mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 07:52:24 +00:00
Ensure admin whitelist respects moderation thresholds
This commit is contained in:
1 parent
63c6d0ae74
commit
dfbda08ec5
3 files changed
+16
-32
No files matched your search
@@ -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
@@ -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) {
|
||||
|
||||
@@ -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]);
|
||||
|
||||
Reference in new issue
Block a user