Skip to content

Commit 6bc2a8a

Browse files
committed
Restore changes for deleted users
1 parent 71232ea commit 6bc2a8a

4 files changed

Lines changed: 47 additions & 3 deletions

File tree

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
This app checks the modqueue every five minutes. If there are any posts or comments in the queue for shadowbanned or suspended, the post or comment will be removed.
1+
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 if configured to do so.
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.
24

35
## Change History
46

5-
### v1.1.0
7+
### v1.1.1
68

79
* Initial Release
810

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 & 1 deletion
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";
@@ -19,7 +20,24 @@ export async function checkQueue (_: unknown, context: JobContext) {
1920
return;
2021
}
2122

22-
const usersToQueue = uniq(modQueue.map(item => item.authorName));
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;
36+
}
37+
38+
const usersToQueue = uniq(modQueue
39+
.filter(item => item.authorName !== "[deleted]")
40+
.map(item => item.authorName));
2341

2442
const existingQueue = await context.redis.zRange(USER_QUEUE_KEY, 0, -1);
2543
const existingUsers = new Set(existingQueue.map(user => user.member));

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 modqueued content for deleted users",
14+
},
15+
{
16+
name: AppSetting.RemoveShadowbanned,
17+
type: "boolean",
18+
defaultValue: true,
19+
label: "Remove modqueued content for suspended and shadowbanned users",
20+
},
21+
];

0 commit comments

Comments
 (0)