concord 2.6.0

A terminal user interface client for Discord
use crate::{
    DiscordClient,
    discord::{AppEvent, TranslationTarget},
    logging,
    translation::TranslationService,
};

pub(super) async fn translate(
    client: DiscordClient,
    translation: TranslationService,
    request_id: u64,
    target: TranslationTarget,
    target_language: String,
    content: String,
) {
    let event = match translation.translate(&content, &target_language).await {
        Ok(result) => AppEvent::TranslationCompleted {
            request_id,
            target,
            translated_text: result.text,
        },
        Err(error) => {
            logging::error("translation", error.to_string());
            AppEvent::TranslationFailed {
                request_id,
                target,
                message: error.to_string(),
            }
        }
    };
    client.publish_event(event).await;
}