From ca8d2e6118d3506eaeeb5626998ff6c0510932cb Mon Sep 17 00:00:00 2001 From: Paul Makles Date: Sun, 14 Aug 2022 11:47:30 +0200 Subject: [PATCH] fix: reaction ordering by using indexmap --- Cargo.lock | 7 ++++--- crates/quark/Cargo.toml | 1 + crates/quark/src/models/channels/message.rs | 11 +++++------ 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c459f9c4..896c57c3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1454,12 +1454,12 @@ checksum = "90f97a5f38dd3ccfbe7aa80f4a0c00930f21b922c74195be0201c51028f22dcf" [[package]] name = "indexmap" -version = "1.8.2" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6012d540c5baa3589337a98ce73408de9b5a25ec9fc2c6fd6be8f0d39e0ca5a" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" dependencies = [ "autocfg 1.1.0", - "hashbrown 0.11.2", + "hashbrown 0.12.1", "serde", ] @@ -2783,6 +2783,7 @@ dependencies = [ "dotenv", "futures", "impl_ops", + "indexmap", "iso8601-timestamp", "lazy_static", "linkify 0.8.1", diff --git a/crates/quark/Cargo.toml b/crates/quark/Cargo.toml index b8e33148..3af96489 100644 --- a/crates/quark/Cargo.toml +++ b/crates/quark/Cargo.toml @@ -64,6 +64,7 @@ regex = "1.5.5" nanoid = "0.4.0" linkify = "0.8.1" dotenv = "0.15.0" +indexmap = "1.9.1" impl_ops = "0.1.1" num_enum = "0.5.6" reqwest = "0.11.10" diff --git a/crates/quark/src/models/channels/message.rs b/crates/quark/src/models/channels/message.rs index 3630004f..e9e71e49 100644 --- a/crates/quark/src/models/channels/message.rs +++ b/crates/quark/src/models/channels/message.rs @@ -1,11 +1,10 @@ use crate::util::regex::RE_COLOUR; -use std::collections::{HashMap, HashSet}; +use indexmap::{IndexMap, IndexSet}; +use iso8601_timestamp::Timestamp; use serde::{Deserialize, Serialize}; use validator::Validate; -use iso8601_timestamp::Timestamp; - #[cfg(feature = "rocket_impl")] use rocket::FromFormField; @@ -99,7 +98,7 @@ pub struct Masquerade { pub struct Interactions { /// Reactions which should always appear and be distinct #[serde(skip_serializing_if = "Option::is_none", default)] - pub reactions: Option>, + pub reactions: Option>, /// Whether reactions should be restricted to the given list #[serde(skip_serializing_if = "if_false", default)] pub restrict_reactions: bool, @@ -145,8 +144,8 @@ pub struct Message { #[serde(skip_serializing_if = "Option::is_none")] pub replies: Option>, /// Hashmap of emoji IDs to array of user IDs - #[serde(skip_serializing_if = "HashMap::is_empty", default)] - pub reactions: HashMap>, + #[serde(skip_serializing_if = "IndexMap::is_empty", default)] + pub reactions: IndexMap>, /// Information about how this message should be interacted with #[serde(skip_serializing_if = "Interactions::is_default", default)] pub interactions: Interactions,