rework navigation (mostly works?)

This commit is contained in:
spaced4ndy
2024-05-02 15:31:23 +04:00
parent 610555c1bc
commit 4a43a29bf3
2 changed files with 40 additions and 36 deletions
+4 -20
View File
@@ -28,19 +28,11 @@ struct ChatsView: View {
}
private var viewBody: some View {
NavStackCompat(
isActive: Binding(
get: { chatModel.chatId != nil },
set: { _ in }
),
destination: chatView
) {
VStack {
if chatModel.chats.isEmpty {
onboardingButtons()
}
chatsView
VStack {
if chatModel.chats.isEmpty {
onboardingButtons()
}
chatsView
}
}
@@ -146,14 +138,6 @@ struct ChatsView: View {
.clipShape(RoundedRectangle(cornerRadius: 16))
}
@ViewBuilder private func chatView() -> some View {
if let chatId = chatModel.chatId, let chat = chatModel.getChat(chatId) {
ChatView(chat: chat).onAppear {
loadChat(chat: chat)
}
}
}
private func filteredChats() -> [Chat] {
if let linkChatId = searchChatFilteredBySimplexLink {
return chatModel.chats.filter { $0.id == linkChatId }
+36 -16
View File
@@ -18,12 +18,35 @@ struct HomeView: View {
var body: some View {
ZStack(alignment: .bottomLeading) {
switch homeTab {
case .settings: settingsView()
case .contacts: contactsView()
case .chats: chatsView()
case .newChat: newChatView()
NavStackCompat(
isActive: Binding(
get: { chatModel.chatId != nil },
set: { _ in }
),
destination: chatView
) {
VStack {
switch homeTab {
case .settings: settingsView()
case .contacts: contactsView()
case .chats: chatsView()
case .newChat: newChatView()
}
}
.toolbar {
ToolbarItemGroup(placement: .bottomBar) {
settingsButton()
Spacer()
contactsButton()
Spacer()
chatsButton()
Spacer()
newChatButton()
}
}
}
.navigationViewStyle(.stack)
if userPickerVisible {
Rectangle().fill(.white.opacity(0.001)).onTapGesture {
withAnimation {
@@ -37,17 +60,6 @@ struct HomeView: View {
userPickerVisible: $userPickerVisible
)
}
.toolbar {
ToolbarItemGroup(placement: .bottomBar) {
settingsButton()
Spacer()
contactsButton()
Spacer()
chatsButton()
Spacer()
newChatButton()
}
}
.sheet(isPresented: $showConnectDesktop) {
ConnectDesktopView()
}
@@ -187,6 +199,14 @@ struct HomeView: View {
EmptyView()
}
}
@ViewBuilder private func chatView() -> some View {
if let chatId = chatModel.chatId, let chat = chatModel.getChat(chatId) {
ChatView(chat: chat).onAppear {
loadChat(chat: chat)
}
}
}
}
#Preview {