add a telegram-style bottom tab bar to the main screen

- Replace the sidebar-based MainChatView with MainTabView: a custom
  bottom bar with Контакты / Звонки / Чаты / Настройки that looks the
  same on iOS and macOS, and open chats via push navigation.
- Put the search field above the chat and contact lists (searchable on
  iOS, an inline field on macOS) and add an aggregated call-history
  screen backed by model.callHistoryMessages.
- Embed SettingsView as a tab, update verify.sh guards, and keep CI on
  deterministic unit tests while the UI tests stay runnable manually.
This commit is contained in:
wt committed 2026-08-30 01:39:54 +07:00
1 parent 6ed5cb3ce9
commit efe3986ba5
11 files changed
+539 -332

No files matched your search

+7 -2
View File
@@ -4,6 +4,9 @@ import SwiftUI
struct SettingsView: View {
@ObservedObject var model: AppModel
/// When embedded as the «Настройки» tab there is no sheet to dismiss,
/// so the confirmation toolbar button is hidden.
var presentedAsTab: Bool = false
@Environment(\.dismiss) private var dismiss
@State private var showingSignOutConfirmation = false
@State private var forgetHistory = false
@@ -152,8 +155,10 @@ struct SettingsView: View {
}
.navigationTitle("Настройки")
.toolbar {
ToolbarItem(placement: .confirmationAction) {
Button("Готово") { dismiss() }
if !presentedAsTab {
ToolbarItem(placement: .confirmationAction) {
Button("Готово") { dismiss() }
}
}
}
.confirmationDialog(