Files
Luma/Sources/Shared/UI/Components/ConnectionBanner.swift
T
wt f7e22364fd
iOS CI / Build and Test SwiftUI App (push) Canceled after 0s
Build Unsigned iOS and macOS Apps / Build Unsigned iOS IPA (push) Canceled after 0s
Build Unsigned iOS and macOS Apps / Build macOS ZIP (push) Canceled after 0s
telegram ui style
2026-08-31 09:38:09 +07:00

62 lines
2.2 KiB
Swift

import SwiftUI
struct ConnectionBanner: View {
@ObservedObject var model: AppModel
var text: String
var body: some View {
switch model.connectionStatus {
case .connected:
if model.isArchiveSyncing || !model.isOMEMOReady {
banner(
// text: model.isArchiveSyncing ? "Синхронизация истории…" : "Публикация ключей OMEMO…",
text: "Обновление",
color: .clear,
progress: true
)
} else {
Text(text)
.font(.headline)
}
case .connecting:
// banner(icon: "antenna.radiowaves.left.and.right", text: "Подключение…", color: .clear, progress: true)
banner(text: "Подключение", color: .clear, progress: true)
case .disconnected:
banner(text: "Ожидание сети", color: .clear, progress: true)
// HStack(spacing: 8) {
// Image(systemName: "wifi.exclamationmark")
// Text(reason ?? "Нет соединения")
// .lineLimit(1)
// Spacer()
// Button { Task { await model.reconnect() } } label: {
// Label("Обновить", systemImage: "arrow.clockwise")
// }
// .buttonStyle(.borderless)
// .fontWeight(.semibold)
// }
// .font(.caption)
// .foregroundStyle(.white)
// .padding(.horizontal, 12)
// .padding(.vertical, 8)
//// .background(Color.red.opacity(0.88))
// .background(Color.clear)
}
}
private func banner(text: String, color: Color, progress: Bool) -> some View {
HStack(spacing: 8) {
if progress {
ProgressView().controlSize(.mini).tint(.white)
}
Text(text)
// Spacer()
}
.font(.caption)
.foregroundStyle(.white)
// .padding(.horizontal, 12)
// .padding(.vertical, 8)
// .background(color.opacity(0.88))
}
}