Skip to content

Commit ed0e8cb

Browse files
committed
Make app configurable
1 parent fde5a58 commit ed0e8cb

4 files changed

Lines changed: 45 additions & 5 deletions

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
This app checks the modqueue every five minutes. If there are any posts or comments in the queue for shadowbanned, suspended or deleted users, the post or comment will be removed.
2+
3+
The app can be configured to remove posts or comments for deleted users or shadowbanned/suspended users - both options can be controlled independently.

src/main.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ import { Devvit } from "@devvit/public-api";
22
import { ScheduledJob } from "./constants.js";
33
import { handleInstallOrUpgrade } from "./installActions.js";
44
import { checkQueue, pruneUsers, removeUsers } from "./pruneQueue.js";
5+
import { appSettings } from "./settings.js";
6+
7+
Devvit.addSettings(appSettings);
58

69
Devvit.addTrigger({
710
events: ["AppInstall", "AppUpgrade"],

src/pruneQueue.ts

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { CronExpressionParser } from "cron-parser";
33
import { addSeconds } from "date-fns";
44
import { uniq } from "lodash";
55
import { CHECK_QUEUE_CRON, ScheduledJob } from "./constants.js";
6+
import { AppSetting } from "./settings.js";
67

78
const USER_QUEUE_KEY = "userQueue";
89
const REMOVE_QUEUE = "removeQueue";
@@ -14,11 +15,24 @@ export async function checkQueue (_: unknown, context: JobContext) {
1415
limit: 1000,
1516
}).all();
1617

17-
// Remove items from deleted users
18-
const itemsToRemove = modQueue.filter(item => item.authorName === "[deleted]");
19-
if (itemsToRemove.length > 0) {
20-
await Promise.all(itemsToRemove.map(item => context.reddit.remove(item.id, false)));
21-
console.log(`Check step: Removed ${itemsToRemove.length} item(s) from the mod queue due to deleted users.`);
18+
if (modQueue.length === 0) {
19+
console.log("Check step: No items in the mod queue.");
20+
return;
21+
}
22+
23+
const settings = await context.settings.getAll();
24+
25+
if (settings[AppSetting.RemoveDeleted]) {
26+
// Remove items from deleted users
27+
const itemsToRemove = modQueue.filter(item => item.authorName === "[deleted]");
28+
if (itemsToRemove.length > 0) {
29+
await Promise.all(itemsToRemove.map(item => context.reddit.remove(item.id, false)));
30+
console.log(`Check step: Removed ${itemsToRemove.length} item(s) from the mod queue due to deleted users.`);
31+
}
32+
}
33+
34+
if (!settings[AppSetting.RemoveShadowbanned]) {
35+
return;
2236
}
2337

2438
const usersToQueue = uniq(modQueue

src/settings.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { SettingsFormField } from "@devvit/public-api";
2+
3+
export enum AppSetting {
4+
RemoveDeleted = "removeDeleted",
5+
RemoveShadowbanned = "removeShadowbanned",
6+
}
7+
8+
export const appSettings: SettingsFormField[] = [
9+
{
10+
name: AppSetting.RemoveDeleted,
11+
type: "boolean",
12+
defaultValue: true,
13+
label: "Remove content for deleted Users",
14+
},
15+
{
16+
name: AppSetting.RemoveShadowbanned,
17+
type: "boolean",
18+
defaultValue: true,
19+
label: "Remove content for suspended and shadowbanned users",
20+
},
21+
];

0 commit comments

Comments
 (0)