Files
Gas-Tank-AR-App/GasTankAR/Views/Leads/Overview/LeadPresentation.swift

54 lines
1.9 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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"
}
}
}