Add new message flags once again
This commit is contained in:
		
							parent
							
								
									0ac8888d41
								
							
						
					
					
						commit
						c52d6c49a3
					
				| @ -1,17 +1,17 @@ | ||||
| /* | ||||
| 	Spacebar: A FOSS re-implementation and extension of the Discord.com backend. | ||||
| 	Copyright (C) 2023 Spacebar and Spacebar Contributors | ||||
| 	 | ||||
| 
 | ||||
| 	This program is free software: you can redistribute it and/or modify | ||||
| 	it under the terms of the GNU Affero General Public License as published | ||||
| 	by the Free Software Foundation, either version 3 of the License, or | ||||
| 	(at your option) any later version. | ||||
| 	 | ||||
| 
 | ||||
| 	This program is distributed in the hope that it will be useful, | ||||
| 	but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| 	GNU Affero General Public License for more details. | ||||
| 	 | ||||
| 
 | ||||
| 	You should have received a copy of the GNU Affero General Public License | ||||
| 	along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | ||||
| */ | ||||
| @ -56,6 +56,7 @@ router.post( | ||||
| 			edited_timestamp: null, | ||||
| 			flags: 1, | ||||
| 			components: [], | ||||
| 			poll: {}, | ||||
| 		}).status(200); | ||||
| 	}, | ||||
| ); | ||||
|  | ||||
| @ -1,17 +1,17 @@ | ||||
| /* | ||||
| 	Spacebar: A FOSS re-implementation and extension of the Discord.com backend. | ||||
| 	Copyright (C) 2023 Spacebar and Spacebar Contributors | ||||
| 	 | ||||
| 
 | ||||
| 	This program is free software: you can redistribute it and/or modify | ||||
| 	it under the terms of the GNU Affero General Public License as published | ||||
| 	by the Free Software Foundation, either version 3 of the License, or | ||||
| 	(at your option) any later version. | ||||
| 	 | ||||
| 
 | ||||
| 	This program is distributed in the hope that it will be useful, | ||||
| 	but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| 	GNU Affero General Public License for more details. | ||||
| 	 | ||||
| 
 | ||||
| 	You should have received a copy of the GNU Affero General Public License | ||||
| 	along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | ||||
| */ | ||||
| @ -162,6 +162,7 @@ router.get( | ||||
| 				edited_timestamp: x.edited_timestamp, | ||||
| 				flags: x.flags, | ||||
| 				components: x.components, | ||||
| 				poll: x.poll, | ||||
| 				hit: true, | ||||
| 			}, | ||||
| 		]); | ||||
|  | ||||
| @ -1,17 +1,17 @@ | ||||
| /* | ||||
| 	Spacebar: A FOSS re-implementation and extension of the Discord.com backend. | ||||
| 	Copyright (C) 2023 Spacebar and Spacebar Contributors | ||||
| 	 | ||||
| 
 | ||||
| 	This program is free software: you can redistribute it and/or modify | ||||
| 	it under the terms of the GNU Affero General Public License as published | ||||
| 	by the Free Software Foundation, either version 3 of the License, or | ||||
| 	(at your option) any later version. | ||||
| 	 | ||||
| 
 | ||||
| 	This program is distributed in the hope that it will be useful, | ||||
| 	but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| 	GNU Affero General Public License for more details. | ||||
| 	 | ||||
| 
 | ||||
| 	You should have received a copy of the GNU Affero General Public License | ||||
| 	along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | ||||
| */ | ||||
| @ -218,6 +218,9 @@ export class Message extends BaseClass { | ||||
| 	@Column({ type: "simple-json", nullable: true }) | ||||
| 	components?: MessageComponent[]; | ||||
| 
 | ||||
| 	@Column({ type: "simple-json", nullable: true }) | ||||
| 	poll?: Poll[]; | ||||
| 
 | ||||
| 	toJSON(): Message { | ||||
| 		return { | ||||
| 			...this, | ||||
| @ -238,6 +241,7 @@ export class Message extends BaseClass { | ||||
| 			activity: this.activity ?? undefined, | ||||
| 			application: this.application ?? undefined, | ||||
| 			components: this.components ?? undefined, | ||||
| 			poll: this.poll ?? undefined, | ||||
| 			content: this.content ?? "", | ||||
| 		}; | ||||
| 	} | ||||
| @ -249,6 +253,7 @@ export interface MessageComponent { | ||||
| 	label?: string; | ||||
| 	emoji?: PartialEmoji; | ||||
| 	custom_id?: string; | ||||
| 	sku_id?: string; | ||||
| 	url?: string; | ||||
| 	disabled?: boolean; | ||||
| 	components: MessageComponent[]; | ||||
| @ -327,3 +332,32 @@ export interface AllowedMentions { | ||||
| 	users?: string[]; | ||||
| 	replied_user?: boolean; | ||||
| } | ||||
| 
 | ||||
| export interface Poll { | ||||
| 	question: PollMedia; | ||||
| 	answers: PollAnswer[]; | ||||
| 	expiry: Date; | ||||
| 	allow_multiselect: boolean; | ||||
| 	results?: PollResult; | ||||
| } | ||||
| 
 | ||||
| export interface PollMedia { | ||||
| 	text?: string; | ||||
| 	emoji?: PartialEmoji; | ||||
| } | ||||
| 
 | ||||
| export interface PollAnswer { | ||||
| 	answer_id?: string; | ||||
| 	poll_media: PollMedia; | ||||
| } | ||||
| 
 | ||||
| export interface PollResult { | ||||
| 	is_finalized: boolean; | ||||
| 	answer_counts: PollAnswerCount[]; | ||||
| } | ||||
| 
 | ||||
| export interface PollAnswerCount { | ||||
| 	id: string; | ||||
| 	count: number; | ||||
| 	me_voted: boolean; | ||||
| } | ||||
|  | ||||
| @ -0,0 +1,13 @@ | ||||
| import { MigrationInterface, QueryRunner } from "typeorm"; | ||||
| 
 | ||||
| export class MessagePollObject1720157926878 implements MigrationInterface { | ||||
| 	name = "MessagePollObject1720157926878"; | ||||
| 
 | ||||
| 	public async up(queryRunner: QueryRunner): Promise<void> { | ||||
| 		await queryRunner.query("ALTER TABLE `messages` ADD `poll` text NULL"); | ||||
| 	} | ||||
| 
 | ||||
| 	public async down(queryRunner: QueryRunner): Promise<void> { | ||||
| 		await queryRunner.query("ALTER TABLE `messages` DROP COLUMN `poll`"); | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										13
									
								
								src/util/migration/mysql/1720157926878-messagePollObject.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/util/migration/mysql/1720157926878-messagePollObject.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| import { MigrationInterface, QueryRunner } from "typeorm"; | ||||
| 
 | ||||
| export class MessagePollObject1720157926878 implements MigrationInterface { | ||||
| 	name = "MessagePollObject1720157926878"; | ||||
| 
 | ||||
| 	public async up(queryRunner: QueryRunner): Promise<void> { | ||||
| 		await queryRunner.query("ALTER TABLE `messages` ADD `poll` text NULL"); | ||||
| 	} | ||||
| 
 | ||||
| 	public async down(queryRunner: QueryRunner): Promise<void> { | ||||
| 		await queryRunner.query("ALTER TABLE `messages` DROP COLUMN `poll`"); | ||||
| 	} | ||||
| } | ||||
| @ -0,0 +1,13 @@ | ||||
| import { MigrationInterface, QueryRunner } from "typeorm"; | ||||
| 
 | ||||
| export class MessagePollObject1720157926878 implements MigrationInterface { | ||||
| 	name = "MessagePollObject1720157926878"; | ||||
| 
 | ||||
| 	public async up(queryRunner: QueryRunner): Promise<void> { | ||||
| 		await queryRunner.query("ALTER TABLE messages ADD poll text NULL"); | ||||
| 	} | ||||
| 
 | ||||
| 	public async down(queryRunner: QueryRunner): Promise<void> { | ||||
| 		await queryRunner.query("ALTER TABLE messages DROP COLUMN poll"); | ||||
| 	} | ||||
| } | ||||
| @ -1,22 +1,22 @@ | ||||
| /* | ||||
| 	Spacebar: A FOSS re-implementation and extension of the Discord.com backend. | ||||
| 	Copyright (C) 2023 Spacebar and Spacebar Contributors | ||||
| 	 | ||||
| 
 | ||||
| 	This program is free software: you can redistribute it and/or modify | ||||
| 	it under the terms of the GNU Affero General Public License as published | ||||
| 	by the Free Software Foundation, either version 3 of the License, or | ||||
| 	(at your option) any later version. | ||||
| 	 | ||||
| 
 | ||||
| 	This program is distributed in the hope that it will be useful, | ||||
| 	but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| 	GNU Affero General Public License for more details. | ||||
| 	 | ||||
| 
 | ||||
| 	You should have received a copy of the GNU Affero General Public License | ||||
| 	along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | ||||
| */ | ||||
| 
 | ||||
| import { Embed } from "@spacebar/util"; | ||||
| import { Embed, MessageComponent, PollAnswer, PollMedia } from "@spacebar/util"; | ||||
| 
 | ||||
| type Attachment = { | ||||
| 	id: string; | ||||
| @ -54,6 +54,21 @@ export interface MessageCreateSchema { | ||||
| 	**/ | ||||
| 	attachments?: Attachment[]; | ||||
| 	sticker_ids?: string[]; | ||||
| 	// eslint-disable-next-line @typescript-eslint/no-explicit-any
 | ||||
| 	components?: any[]; | ||||
| 	components?: MessageComponent[]; | ||||
| 	// TODO: Fix TypeScript errors in src\api\util\handlers\Message.ts once this is enabled
 | ||||
| 	//poll?: PollCreationSchema;
 | ||||
| 	enforce_nonce?: boolean; // For Discord compatibility, it's the default behavior here
 | ||||
| 	applied_tags?: string[]; // Not implemented yet, for webhooks in forums
 | ||||
| 	thread_name?: string; // Not implemented yet, for webhooks
 | ||||
| 	avatar_url?: string; // Not implemented yet, for webhooks
 | ||||
| } | ||||
| 
 | ||||
| // TypeScript complains once this is used above
 | ||||
| // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | ||||
| interface PollCreationSchema { | ||||
| 	question: PollMedia; | ||||
| 	answers: PollAnswer[]; | ||||
| 	duration?: number; | ||||
| 	allow_multiselect?: boolean; | ||||
| 	layout_type?: number; | ||||
| } | ||||
|  | ||||
| @ -1,17 +1,17 @@ | ||||
| /* | ||||
| 	Spacebar: A FOSS re-implementation and extension of the Discord.com backend. | ||||
| 	Copyright (C) 2023 Spacebar and Spacebar Contributors | ||||
| 	 | ||||
| 
 | ||||
| 	This program is free software: you can redistribute it and/or modify | ||||
| 	it under the terms of the GNU Affero General Public License as published | ||||
| 	by the Free Software Foundation, either version 3 of the License, or | ||||
| 	(at your option) any later version. | ||||
| 	 | ||||
| 
 | ||||
| 	This program is distributed in the hope that it will be useful, | ||||
| 	but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| 	GNU Affero General Public License for more details. | ||||
| 	 | ||||
| 
 | ||||
| 	You should have received a copy of the GNU Affero General Public License | ||||
| 	along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | ||||
| */ | ||||
| @ -19,7 +19,9 @@ | ||||
| import { | ||||
| 	Attachment, | ||||
| 	Embed, | ||||
| 	MessageComponent, | ||||
| 	MessageType, | ||||
| 	Poll, | ||||
| 	PublicUser, | ||||
| 	Role, | ||||
| } from "../../entities"; | ||||
| @ -40,7 +42,8 @@ export interface GuildMessagesSearchMessage { | ||||
| 	timestamp: string; | ||||
| 	edited_timestamp: string | null; | ||||
| 	flags: number; | ||||
| 	components: unknown[]; | ||||
| 	components: MessageComponent[]; | ||||
| 	poll: Poll; | ||||
| 	hit: true; | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 TomatoCake
						TomatoCake