Skip to content

Commit c133251

Browse files
committed
guild reporting
1 parent 451fa0e commit c133251

4 files changed

Lines changed: 50 additions & 1 deletion

File tree

src/webpage/guild.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ import {ProgessiveDecodeJSON} from "./utils/progessiveLoad.js";
3232
import {MarkDown} from "./markdown.js";
3333
import {Command} from "./interactions/commands.js";
3434
import {Hover} from "./hover.js";
35+
import {ReportMenu} from "./reporting/report.js";
36+
import {getDeveloperSettings} from "./utils/storage/devSettings.js";
3537
export async function makeInviteMenu(inviteMenu: Options, guild: Guild, url: string) {
3638
const invDiv = document.createElement("div");
3739
const bansp = ProgessiveDecodeJSON<invitejson[]>(url, {
@@ -311,6 +313,20 @@ class Guild extends SnowFlake {
311313
navigator.clipboard.writeText(this.id);
312314
},
313315
);
316+
Guild.contextmenu.addButton(
317+
() => I18n.guild.report(),
318+
async function () {
319+
const menu = await ReportMenu.makeReport("guild", this.localuser, {guild: this});
320+
menu?.spawnMenu();
321+
},
322+
{
323+
visible: function () {
324+
const settings = getDeveloperSettings();
325+
return this.properties.owner_id !== this.localuser.user.id && settings.reportSystem;
326+
},
327+
color: "red",
328+
},
329+
);
314330
//TODO mute guild button
315331
}
316332
get muted() {

src/webpage/reporting/report.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
reportPut,
1616
reportTypes,
1717
reportUserPut,
18+
reportGuildPut,
1819
} from "./types.js";
1920
interface InfoMap {
2021
message?: Message;
@@ -127,6 +128,17 @@ export class ReportMenu {
127128
realBody = m;
128129
break;
129130
}
131+
case "guild": {
132+
const guild = this.infoMap.guild;
133+
if (!guild) throw new Error("Guild expected");
134+
const m: reportGuildPut = {
135+
...obj,
136+
name: "guild",
137+
guild_id: guild.id,
138+
};
139+
realBody = m;
140+
break;
141+
}
130142
}
131143
const res = await fetch(this.postback_url, {
132144
method: "POST",
@@ -480,6 +492,26 @@ class ReportElement {
480492
div.append(span);
481493
break;
482494
}
495+
case "text": {
496+
const h4 = document.createElement("h4");
497+
h4.textContent = json.data.header;
498+
const p = document.createElement("p");
499+
p.textContent = json.data.body;
500+
div.append(h4, p);
501+
break;
502+
}
503+
case "guild_preview": {
504+
const guild = map.guild;
505+
if (!guild) return;
506+
const guildDiv = document.createElement("div");
507+
guildDiv.classList.add("flexltr");
508+
guildDiv.append(guild.generateGuildIcon(false));
509+
const title = document.createElement("h4");
510+
title.textContent = guild.properties.name;
511+
guildDiv.append(title);
512+
div.append(guildDiv);
513+
break;
514+
}
483515
default:
484516
console.log(json);
485517
div.textContent = this.json.type;

src/webpage/reporting/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ interface reportGuildDirPut extends reportPut {
259259
guild_id: string;
260260
name: "guild_directory_entry";
261261
}
262-
interface reportGuildPut extends reportPut {
262+
export interface reportGuildPut extends reportPut {
263263
guild_id: string;
264264
name: "guild";
265265
}

translations/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@
247247
"owner": "Find the owner",
248248
"permission": "Permissions:"
249249
},
250+
"report":"Report Guild",
250251
"admins": "Find Admins",
251252
"all": "all",
252253
"banReason": "Ban reason: $1",

0 commit comments

Comments
 (0)