Extracted the in-app notifications from the Sample app target into its own Notifying package target.
This commit is contained in:
@@ -1,73 +0,0 @@
|
||||
import Foundation
|
||||
|
||||
/// An in-app notification reporting an event of a speech model asset download.
|
||||
struct AppNotification: Equatable, Identifiable {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// The unique identifier of the notification.
|
||||
let id: UUID
|
||||
|
||||
/// The download event the notification reports.
|
||||
let event: Event
|
||||
|
||||
/// The localized name of the locale whose speech model the event is about.
|
||||
let localeName: String
|
||||
|
||||
// MARK: Initializers
|
||||
|
||||
/// Creates a notification for a given download event and locale name.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - id: The unique identifier of the notification. Defaults to a newly generated identifier.
|
||||
/// - event: The download event the notification reports.
|
||||
/// - localeName: The localized name of the locale whose speech model the event is about.
|
||||
init(
|
||||
id: UUID = .init(),
|
||||
event: Event,
|
||||
localeName: String
|
||||
) {
|
||||
self.id = id
|
||||
self.event = event
|
||||
self.localeName = localeName
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: - Enumerations
|
||||
|
||||
extension AppNotification {
|
||||
/// The download event the notification reports.
|
||||
enum Event: Sendable {
|
||||
/// The download was cancelled before it finished.
|
||||
case cancelled
|
||||
/// The download failed.
|
||||
case failed
|
||||
/// The download started.
|
||||
case started
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Properties
|
||||
|
||||
extension AppNotification {
|
||||
|
||||
/// The system symbol of the icon matching the notification's event.
|
||||
var imageSymbol: String {
|
||||
switch event {
|
||||
case .cancelled: "xmark.circle"
|
||||
case .failed: "exclamationmark.triangle"
|
||||
case .started: "arrow.down.circle"
|
||||
}
|
||||
}
|
||||
|
||||
/// The localized message of the notification, naming the locale of the speech model, from the app's string catalog.
|
||||
var textMessage: LocalizedStringResource {
|
||||
switch event {
|
||||
case .cancelled: .viewRecordingNotificationDownloadCancelled(localeName)
|
||||
case .failed: .viewRecordingNotificationDownloadFailed(localeName)
|
||||
case .started: .viewRecordingNotificationDownloadStarted(localeName)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user