use crate::i18n::{tr, Locale, MessageKey};
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum UserNotice {
DownloadDidNotFinish,
FolderCouldNotBeAdded,
SearchDidNotFinish,
FilesMovedOrMissing,
FolderAdded,
SearchReady,
PreviewsCleared,
}
impl UserNotice {
pub fn is_problem(&self) -> bool {
matches!(
self,
Self::DownloadDidNotFinish
| Self::FolderCouldNotBeAdded
| Self::SearchDidNotFinish
| Self::FilesMovedOrMissing
)
}
pub fn title(&self, locale: Locale) -> &'static str {
let key = match self {
Self::DownloadDidNotFinish => MessageKey::NoticeDownloadFailTitle,
Self::FolderCouldNotBeAdded => MessageKey::NoticeFolderFailTitle,
Self::SearchDidNotFinish => MessageKey::NoticeSearchFailTitle,
Self::FilesMovedOrMissing => MessageKey::NoticeFilesMissingTitle,
Self::FolderAdded => MessageKey::NoticeFolderAddedTitle,
Self::SearchReady => MessageKey::NoticeSearchReadyTitle,
Self::PreviewsCleared => MessageKey::NoticePreviewsClearedTitle,
};
tr(locale, key)
}
pub fn body(&self, locale: Locale) -> &'static str {
let key = match self {
Self::DownloadDidNotFinish => MessageKey::NoticeDownloadFailBody,
Self::FolderCouldNotBeAdded => MessageKey::NoticeFolderFailBody,
Self::SearchDidNotFinish => MessageKey::NoticeSearchFailBody,
Self::FilesMovedOrMissing => MessageKey::NoticeFilesMissingBody,
Self::FolderAdded => MessageKey::NoticeFolderAddedBody,
Self::SearchReady => MessageKey::NoticeSearchReadyBody,
Self::PreviewsCleared => MessageKey::NoticePreviewsClearedBody,
};
tr(locale, key)
}
pub fn action(&self, locale: Locale) -> Option<&'static str> {
let key = match self {
Self::DownloadDidNotFinish | Self::SearchDidNotFinish => MessageKey::NoticeActionTryAgain,
Self::FolderCouldNotBeAdded => MessageKey::NoticeActionChooseFolder,
Self::FilesMovedOrMissing => MessageKey::NoticeActionChooseFolder,
Self::FolderAdded | Self::SearchReady | Self::PreviewsCleared => return None,
};
Some(tr(locale, key))
}
}