2 extern crate strum_macros;
4 use crate::chat_server::ChatServer;
6 use background_jobs::QueueHandle;
7 use lemmy_db_queries::DbPool;
8 use lemmy_db_schema::source::secret::Secret;
9 use lemmy_utils::{settings::structs::Settings, LemmyError};
19 pub struct LemmyContext {
21 pub chat_server: Addr<ChatServer>,
23 pub activity_queue: QueueHandle,
24 pub settings: Settings,
31 chat_server: Addr<ChatServer>,
33 activity_queue: QueueHandle,
46 pub fn pool(&self) -> &DbPool {
49 pub fn chat_server(&self) -> &Addr<ChatServer> {
52 pub fn client(&self) -> &Client {
55 pub fn activity_queue(&self) -> &QueueHandle {
58 pub fn settings(&self) -> Settings {
59 // TODO hacky solution to be able to hotload the settings.
62 pub fn secret(&self) -> &Secret {
67 impl Clone for LemmyContext {
68 fn clone(&self) -> Self {
70 pool: self.pool.clone(),
71 chat_server: self.chat_server.clone(),
72 client: self.client.clone(),
73 activity_queue: self.activity_queue.clone(),
74 settings: self.settings.clone(),
75 secret: self.secret.clone(),
81 struct WebsocketResponse<T> {
86 pub fn serialize_websocket_message<OP, Response>(
89 ) -> Result<String, LemmyError>
94 let response = WebsocketResponse {
98 Ok(serde_json::to_string(&response)?)
101 #[derive(EnumString, ToString, Debug, Clone)]
102 pub enum UserOperation {
109 ResolveCommentReport,
122 MarkPersonMentionAsRead,
136 MarkPrivateMessageAsRead,
149 #[derive(EnumString, ToString, Debug, Clone)]
150 pub enum UserOperationCrud {
180 CreatePrivateMessage,
183 DeletePrivateMessage,
186 pub trait OperationType {}
188 impl OperationType for UserOperationCrud {}
190 impl OperationType for UserOperation {}