| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import Contacts
- import ContactsUI
- import SwiftUI
- import Swinject
- extension ContactTrick {
- struct RootView: BaseView {
- let resolver: Resolver
- @State var state = StateModel()
- @State private var isAddSheetPresented = false
- var body: some View {
- NavigationView {
- contactTrickList
- .navigationTitle("Contact Tricks")
- .onAppear(perform: configureView)
- .navigationBarItems(
- trailing: Button(action: {
- isAddSheetPresented.toggle()
- }) {
- Image(systemName: "plus")
- }
- )
- .sheet(isPresented: $isAddSheetPresented) {
- AddContactTrickSheet(state: state)
- }
- }
- }
- private var contactTrickList: some View {
- List {
- ForEach(state.contactTrickEntries, id: \.id) { entry in
- NavigationLink(destination: ContactTrickDetailView(entry: entry, state: state)) {
- HStack {
- // TODO: - make this beautiful @Dan
- ZStack {
- Circle()
- .fill(entry.darkMode ? .black : .white)
- .foregroundColor(.white)
- .frame(width: 40, height: 40)
- Image(uiImage: ContactPicture.getImage(contact: entry, state: state.previewState))
- .resizable()
- .frame(width: 40, height: 40)
- .clipShape(Circle())
- Circle()
- .stroke(lineWidth: 2)
- .foregroundColor(.white)
- .frame(width: 40, height: 40)
- }
- // Entry name
- Text("\(entry.name)")
- }
- }
- }
- .onDelete(perform: onDelete)
- }
- }
- private func onDelete(offsets: IndexSet) {
- Task {
- for offset in offsets {
- let entry = state.contactTrickEntries[offset]
- await state.deleteContact(entry: entry)
- }
- }
- }
- }
- }
|