54 lines
1.9 KiB
Swift
54 lines
1.9 KiB
Swift
import SwiftUI
|
||
|
||
enum LeadOverviewStyle {
|
||
static let blue = Color(red: 0, green: 0.44, blue: 0.80)
|
||
static let successGreen = Color(red: 0.12, green: 0.53, blue: 0.38)
|
||
static let background = Color(uiColor: .systemGroupedBackground)
|
||
}
|
||
|
||
/// Formatting shared by the overview and the selected lead's detail screen.
|
||
extension Lead {
|
||
var displayName: String {
|
||
companyName ?? [contact?.title, contact?.firstName, contact?.lastName]
|
||
.compactMap { $0 }.filter { !$0.isEmpty }.joined(separator: " ")
|
||
}
|
||
|
||
var locality: String { "\(address.postalCode) \(address.city)" }
|
||
|
||
var fullAddress: String {
|
||
[address.street, locality].compactMap { $0 }.joined(separator: ", ")
|
||
}
|
||
}
|
||
|
||
extension LeadError {
|
||
var message: LocalizedStringResource {
|
||
switch self {
|
||
case .offline: "Keine Internetverbindung. Bitte prüfe deine Verbindung."
|
||
case .timeout: "Der Server antwortet derzeit nicht. Bitte versuche es erneut."
|
||
case .serviceUnavailable: "Die Interessenten konnten gerade nicht geladen werden."
|
||
case .unauthorized: "Deine Sitzung ist abgelaufen. Bitte melde dich erneut an."
|
||
case .forbidden: "Du hast keine Berechtigung für diesen Vorgang."
|
||
case .notFound: "Dieser Interessent ist nicht mehr verfügbar. Bitte aktualisiere die Übersicht."
|
||
case .invalidResponse: "Die Serverantwort konnte nicht verarbeitet werden."
|
||
case .unexpected: "Ein unerwarteter Fehler ist aufgetreten. Bitte versuche es erneut."
|
||
}
|
||
}
|
||
|
||
var allowsRetry: Bool {
|
||
self != .unauthorized && self != .forbidden
|
||
}
|
||
}
|
||
|
||
enum LeadOverviewSelection: String, CaseIterable, Identifiable {
|
||
case newest, alphabetical, open
|
||
var id: Self { self }
|
||
|
||
var title: LocalizedStringKey {
|
||
switch self {
|
||
case .newest: "Neueste"
|
||
case .alphabetical: "A–Z"
|
||
case .open: "Offen"
|
||
}
|
||
}
|
||
}
|