import SwiftUI struct ChatsCreateMainScreen: View { @Binding var isPresented: Bool var body: some View { ZStack { // Background color Color.Material.Background.light .ignoresSafeArea() // Content VStack(spacing: 0) { // Header SharedNavigationBar( leftButton: .init( image: Image(systemName: "xmark"), action: { isPresented = false } ), centerText: .init(text: L10n.Chats.Create.Main.title) ) // List List { ChatsCreateRowButton( title: L10n.Chats.Create.Main.createGroup, image: "person.2.fill", action: {} ) ChatsCreateRowButton( title: L10n.Chats.Create.Main.createPrivateGroup, image: "person.2.fill", action: {} ) ChatsCreateRowButton( title: L10n.Chats.Create.Main.findGroup, image: "magnifyingglass", action: {} ) // for contacts list let rosters = store.state.rostersState.rosters.filter { !$0.locallyDeleted } if rosters.isEmpty { ChatsCreateRowSeparator() } } .listStyle(.plain) Spacer() } } } } private struct ChatsCreateRowButton: View { var title: String var image: String var action: () -> Void var body: some View { VStack(alignment: .center, spacing: 0) { Spacer() HStack(alignment: .center, spacing: 16) { Image(systemName: image) .font(.head2) .foregroundColor(.Material.Elements.active) .padding(.leading, 16) Text(title) .font(.body1) .foregroundColor(.Material.Text.main) Spacer() } Spacer() Rectangle() .frame(maxWidth: .infinity) .frame(height: 1) .foregroundColor(.Material.Background.dark) } .sharedListRow() .frame(height: 48) .onTapGesture { action() } } } private struct ChatsCreateRowSeparator: View { var body: some View { Text("aa") } } // import SwiftUI // // struct CreateConversationMainScreen: View { // @EnvironmentObject var store: AppStore // // var body: some View { // ZStack { // // Background color // Color.Material.Background.light // .ignoresSafeArea() // // // Content // VStack(spacing: 0) { // // Header // CreateConversationHeader() // // // Chats list // // if !store.state.chatsState.chats.isEmpty { // // List { // // ForEach(store.state.chatsState.chats) { chat in // // ChatsRow(chat: chat) // // } // // } // // .listStyle(.plain) // // .background(Color.Material.Background.light) // // } else { // // Spacer() // // } // // // // // Tab bar // // SharedTabBar() // } // } // } // } // // private struct CreateConversationHeader: View { // @EnvironmentObject var store: AppStore // // var body: some View { // ZStack { // // bg // Color.Material.Background.dark // .ignoresSafeArea() // // HStack(spacing: 0) { // Image(systemName: "arrow.left") // .foregroundColor(.Material.Elements.active) // .padding(.leading, 16) // .tappablePadding(.symmetric(12)) { // store.dispatch(.changeFlow(store.state.previousFlow)) // } // Spacer() // } // // // title // Text("New conversation") // .font(.head2) // .foregroundColor(Color.Material.Text.main) // } // } // } // // Preview #if DEBUG struct ChatsCreateMainScreen_Previews: PreviewProvider { static var previews: some View { ChatsCreateMainScreen(isPresented: .constant(true)) .environmentObject(pStore) } static var pStore: AppStore { let state = pState return AppStore(initialState: state, reducer: AppState.reducer, middlewares: []) } static var pState: AppState { var state = AppState() state.rostersState.rosters = [ .init(contactBareJid: "test@me.com", subscription: "both", ask: true, data: .init(groups: [], annotations: [])) ] return state } } #endif