-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathget_dm.rs
More file actions
38 lines (33 loc) · 1.08 KB
/
get_dm.rs
File metadata and controls
38 lines (33 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
use anyhow::Result;
use mostro_core::prelude::Message;
use crate::{
cli::Context,
parser::dms::print_direct_messages,
util::{fetch_events_list, Event, ListKind},
};
pub async fn execute_get_dm(
since: &i64,
admin: bool,
from_user: &bool,
ctx: &Context,
) -> Result<()> {
// Get the list kind
let list_kind = match (admin, from_user) {
(true, true) => ListKind::PrivateDirectMessagesUser,
(true, false) => ListKind::DirectMessagesAdmin,
(false, true) => ListKind::PrivateDirectMessagesUser,
(false, false) => ListKind::DirectMessagesUser,
};
// Fetch the requested events
let all_fetched_events =
fetch_events_list(list_kind, None, None, None, ctx, Some(since)).await?;
// Extract (Message, u64) tuples from Event::MessageTuple variants
let mut dm_events: Vec<(Message, u64)> = Vec::new();
for event in all_fetched_events {
if let Event::MessageTuple(tuple) = event {
dm_events.push(*tuple);
}
}
print_direct_messages(&dm_events, &ctx.pool).await?;
Ok(())
}