summary refs log tree commit diff
path: root/api
diff options
context:
space:
mode:
authorLobo Metalúrgico <43734867+LoboMetalurgico@users.noreply.github.com>2021-10-09 23:44:59 -0300
committerGitHub <noreply@github.com>2021-10-09 23:44:59 -0300
commita801dfc47895ecd0c6e15e382a18c1d6cbe0b4e9 (patch)
tree50a0e87efa1bbc503c65677ab8dc514047eb1164 /api
parent(api): fix some issues (diff)
parent:sparkles: random guest username generation added (diff)
downloadserver-a801dfc47895ecd0c6e15e382a18c1d6cbe0b4e9.tar.xz
Merge branch 'fosscord:master' into milestoneV1/routes/implement/emojis
Diffstat (limited to 'api')
-rw-r--r--api/client_test/index.html49
-rw-r--r--api/src/routes/channels/#channel_id/messages/#message_id/ack.ts8
-rw-r--r--api/src/routes/channels/#channel_id/messages/index.ts5
3 files changed, 58 insertions, 4 deletions
diff --git a/api/client_test/index.html b/api/client_test/index.html
index 41d41598..20b431b8 100644
--- a/api/client_test/index.html
+++ b/api/client_test/index.html
@@ -5,6 +5,7 @@
 		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
 		<title>Discord Test Client</title>
 	</head>
+
 	<body>
 		<div id="app-mount"></div>
 		<script>
@@ -46,12 +47,52 @@
 			);
 
 			// Auto register guest account:
+			const prefix = [
+				"mysterious",
+				"adventurous",
+				"courageous",
+				"precious",
+				"cynical",
+				"despicable",
+				"suspicious",
+				"gorgeous",
+				"lovely",
+				"stunning",
+				"based",
+				"keyed",
+				"ratioed",
+				"twink",
+				"phoned"
+			];
+			const suffix = [
+				"Anonymous",
+				"Lurker",
+				"User",
+				"Enjoyer",
+				"Hunk",
+				"Top",
+				"Bottom",
+				"Sub",
+				"Coolstar",
+				"Wrestling",
+				"TylerTheCreator",
+				"Ad"
+			];
+
+			Array.prototype.random = function () {
+				return this[Math.floor(Math.random() * this.length)];
+			};
+
+			function _generateName() {
+				return `${prefix.random()}${suffix.random()}`;
+			}
+
 			const token = JSON.parse(localStorage.getItem("token"));
 			if (!token && location.pathname !== "/login" && location.pathname !== "/register") {
 				fetch(`${window.GLOBAL_ENV.API_ENDPOINT}/auth/register`, {
 					method: "POST",
 					headers: { "content-type": "application/json" },
-					body: JSON.stringify({ username: "Anonymous", consent: true })
+					body: JSON.stringify({ username: `${_generateName()}`, consent: true }) //${Date.now().toString().slice(-4)}
 				})
 					.then((x) => x.json())
 					.then((x) => {
@@ -62,6 +103,12 @@
 						}
 					});
 			}
+
+			const settings = JSON.parse(localStorage.getItem("UserSettingsStore"));
+			if (settings && settings.locale === "en") {
+				settings.locale = "en-US";
+				localStorage.setItem("UserSettingsStore", JSON.stringify(settings));
+			}
 		</script>
 		<script src="/assets/479a2f1e7d625dc134b9.js"></script>
 		<script src="/assets/a15fd133a1d2d77a2424.js"></script>
diff --git a/api/src/routes/channels/#channel_id/messages/#message_id/ack.ts b/api/src/routes/channels/#channel_id/messages/#message_id/ack.ts
index 786e4581..208c1da4 100644
--- a/api/src/routes/channels/#channel_id/messages/#message_id/ack.ts
+++ b/api/src/routes/channels/#channel_id/messages/#message_id/ack.ts
@@ -1,4 +1,4 @@
-import { emitEvent, getPermission, MessageAckEvent, ReadState } from "@fosscord/util";
+import { emitEvent, getPermission, MessageAckEvent, ReadState, Snowflake } from "@fosscord/util";
 import { Request, Response, Router } from "express";
 import { route } from "@fosscord/api";
 
@@ -18,7 +18,11 @@ router.post("/", route({ body: "MessageAcknowledgeSchema" }), async (req: Reques
 	const permission = await getPermission(req.user_id, undefined, channel_id);
 	permission.hasThrow("VIEW_CHANNEL");
 
-	await ReadState.update({ user_id: req.user_id, channel_id }, { user_id: req.user_id, channel_id, last_message_id: message_id });
+	let read_state = await ReadState.findOne({ user_id: req.user_id, channel_id });
+	if (!read_state) read_state = new ReadState({ user_id: req.user_id, channel_id });
+	read_state.last_message_id = message_id;
+
+	await read_state.save();
 
 	await emitEvent({
 		event: "MESSAGE_ACK",
diff --git a/api/src/routes/channels/#channel_id/messages/index.ts b/api/src/routes/channels/#channel_id/messages/index.ts
index 1f856b80..4ec31417 100644
--- a/api/src/routes/channels/#channel_id/messages/index.ts
+++ b/api/src/routes/channels/#channel_id/messages/index.ts
@@ -103,6 +103,7 @@ router.get("/", async (req: Request, res: Response) => {
 	}
 
 	const messages = await Message.find(query);
+	const endpoint = Config.get().cdn.endpointPublic;
 
 	return res.json(
 		messages.map((x) => {
@@ -115,7 +116,9 @@ router.get("/", async (req: Request, res: Response) => {
 			// @ts-ignore
 			if (!x.author) x.author = { discriminator: "0000", username: "Deleted User", public_flags: "0", avatar: null };
 			x.attachments?.forEach((x) => {
-				x.proxy_url = `${Config.get().cdn.endpointPublic || "http://localhost:3003"}${new URL(x.proxy_url).pathname}`;
+				// dynamically set attachment proxy_url in case the endpoint changed
+				const uri = x.proxy_url.startsWith("http") ? x.proxy_url : `https://example.org${x.proxy_url}`;
+				x.proxy_url = `${endpoint == null ? "http://localhost:3003" : endpoint}${new URL(uri).pathname}`;
 			});
 
 			return x;