Skip to main content

tulpje_framework/context/
modal_context.rs

1use std::sync::Arc;
2
3use twilight_http::Client;
4use twilight_model::{
5    application::interaction::modal::ModalInteractionData,
6    gateway::payload::incoming::InteractionCreate,
7    id::{Id, marker::ApplicationMarker},
8};
9use twilight_standby::Standby;
10
11use super::Context;
12use crate::Metadata;
13
14#[derive(Clone, Debug)]
15pub struct ModalContext<T: Clone + Send + Sync> {
16    pub meta: Metadata,
17    pub application_id: Id<ApplicationMarker>,
18    pub services: Arc<T>,
19    pub client: Arc<Client>,
20    pub standby: Arc<Standby>,
21
22    pub event: InteractionCreate,
23    pub data: ModalInteractionData,
24}
25
26impl<T: Clone + Send + Sync> ModalContext<T> {
27    pub fn from_context(
28        ctx: Context<T>,
29        meta: Metadata,
30        event: InteractionCreate,
31        data: ModalInteractionData,
32    ) -> Self {
33        Self {
34            application_id: ctx.application_id,
35            client: ctx.client,
36            services: ctx.services,
37            standby: ctx.standby,
38
39            meta,
40            data,
41            event,
42        }
43    }
44}