use crate::domain::ports::notifier::Notifier;
use crate::domain::ports::repositories::ResourceUsageRepository;
use crate::interface::slack::app::SlackApp;
use crate::interface::slack::slack_client::modals;
use crate::interface::slack::views;
use slack_morphism::prelude::*;
use tracing::info;
pub async fn handle<R, N>(
app: &SlackApp<R, N>,
event: SlackCommandEvent,
) -> Result<SlackCommandEventResponse, Box<dyn std::error::Error + Send + Sync>>
where
R: ResourceUsageRepository + Send + Sync + 'static,
N: Notifier + Send + Sync + 'static,
{
let user_id = event.user_id.to_string();
info!("📧 メールアドレス登録モーダルを開きます: user={}", user_id);
let modal = views::modals::registration::create();
modals::open(
app.slack_client(),
app.bot_token(),
&event.trigger_id,
modal,
)
.await?;
Ok(SlackCommandEventResponse::new(SlackMessageContent::new()))
}