summary refs log tree commit diff
path: root/util/src
diff options
context:
space:
mode:
Diffstat (limited to 'util/src')
-rw-r--r--util/src/entities/ReadState.ts13
-rw-r--r--util/src/util/Config.ts1
-rw-r--r--util/src/util/cdn.ts23
3 files changed, 26 insertions, 11 deletions
diff --git a/util/src/entities/ReadState.ts b/util/src/entities/ReadState.ts
index 68e867a0..89480e83 100644
--- a/util/src/entities/ReadState.ts
+++ b/util/src/entities/ReadState.ts
@@ -1,4 +1,4 @@
-import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
+import { Column, Entity, Index, JoinColumn, ManyToOne, RelationId } from "typeorm";
 import { BaseClass } from "./BaseClass";
 import { Channel } from "./Channel";
 import { Message } from "./Message";
@@ -9,8 +9,9 @@ import { User } from "./User";
 // public read receipt ≥ notification cursor ≥ private fully read marker
 
 @Entity("read_states")
+@Index(["channel_id", "user_id"], { unique: true })
 export class ReadState extends BaseClass {
-	@Column({ nullable: true })
+	@Column()
 	@RelationId((read_state: ReadState) => read_state.channel)
 	channel_id: string;
 
@@ -20,7 +21,7 @@ export class ReadState extends BaseClass {
 	})
 	channel: Channel;
 
-	@Column({ nullable: true })
+	@Column()
 	@RelationId((read_state: ReadState) => read_state.user)
 	user_id: string;
 
@@ -35,15 +36,15 @@ export class ReadState extends BaseClass {
 	last_message_id: string;
 
 	@JoinColumn({ name: "last_message_id" })
-	@ManyToOne(() => Message)
+	@ManyToOne(() => Message, { nullable: true })
 	last_message?: Message;
 
 	@Column({ nullable: true })
 	last_pin_timestamp?: Date;
 
-	@Column()
+	@Column({ nullable: true })
 	mention_count: number;
 
-	@Column()
+	@Column({ nullable: true })
 	manual: boolean;
 }
diff --git a/util/src/util/Config.ts b/util/src/util/Config.ts
index eeeaa2ce..704f3f2f 100644
--- a/util/src/util/Config.ts
+++ b/util/src/util/Config.ts
@@ -12,7 +12,6 @@ export const Config = {
 		if (config) return config;
 		pairs = await ConfigEntity.find();
 		config = pairsToConfig(pairs);
-		console.log(config.guild.autoJoin);
 
 		return this.set((config || {}).merge(DefaultConfigOptions));
 	},
diff --git a/util/src/util/cdn.ts b/util/src/util/cdn.ts
index 2de23f5d..8d45f85f 100644
--- a/util/src/util/cdn.ts
+++ b/util/src/util/cdn.ts
@@ -25,15 +25,30 @@ export async function uploadFile(path: string, file: Express.Multer.File) {
 	return result;
 }
 
-export async function handleFile(path: string, body?: string): Promise<string | undefined> {
-	if (!body || !body.startsWith("data:")) return body;
+export async function handleFile(
+	path: string,
+	body?: string
+): Promise<
+	| (string & {
+			id: string;
+			content_type: string;
+			size: number;
+			url: string;
+	  })
+	| undefined
+> {
+	if (!body || !body.startsWith("data:")) return undefined;
 	try {
 		const mimetype = body.split(":")[1].split(";")[0];
 		const buffer = Buffer.from(body.split(",")[1], "base64");
 
 		// @ts-ignore
-		const { id } = await uploadFile(path, { buffer, mimetype, originalname: "banner" });
-		return id;
+		const file = await uploadFile(path, { buffer, mimetype, originalname: "banner" });
+		const obj = file.id;
+		for (const key in file) {
+			obj[key] = file[key];
+		}
+		return obj;
 	} catch (error) {
 		console.error(error);
 		throw new HTTPError("Invalid " + path);