Move ListItem into its own file

This commit is contained in:
CypherPoet 2020-01-15 15:08:58 -06:00
parent b2f0f930bc
commit 08b8db216d
3 changed files with 50 additions and 32 deletions

View File

@ -45,6 +45,7 @@
F3203BFF23CDF6D100265268 /* ScannerViewControlller.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3203BFE23CDF6D100265268 /* ScannerViewControlller.swift */; }; F3203BFF23CDF6D100265268 /* ScannerViewControlller.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3203BFE23CDF6D100265268 /* ScannerViewControlller.swift */; };
F326140823CE3928009EC215 /* ContactsState.swift in Sources */ = {isa = PBXBuildFile; fileRef = F326140723CE3928009EC215 /* ContactsState.swift */; }; F326140823CE3928009EC215 /* ContactsState.swift in Sources */ = {isa = PBXBuildFile; fileRef = F326140723CE3928009EC215 /* ContactsState.swift */; };
F326140A23CE689A009EC215 /* Contact+InitHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = F326140923CE689A009EC215 /* Contact+InitHelpers.swift */; }; F326140A23CE689A009EC215 /* Contact+InitHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = F326140923CE689A009EC215 /* Contact+InitHelpers.swift */; };
F326140C23CFB650009EC215 /* ContactsListView+ListItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = F326140B23CFB650009EC215 /* ContactsListView+ListItem.swift */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
@ -85,6 +86,7 @@
F3203BFE23CDF6D100265268 /* ScannerViewControlller.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScannerViewControlller.swift; sourceTree = "<group>"; }; F3203BFE23CDF6D100265268 /* ScannerViewControlller.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScannerViewControlller.swift; sourceTree = "<group>"; };
F326140723CE3928009EC215 /* ContactsState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactsState.swift; sourceTree = "<group>"; }; F326140723CE3928009EC215 /* ContactsState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactsState.swift; sourceTree = "<group>"; };
F326140923CE689A009EC215 /* Contact+InitHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Contact+InitHelpers.swift"; sourceTree = "<group>"; }; F326140923CE689A009EC215 /* Contact+InitHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Contact+InitHelpers.swift"; sourceTree = "<group>"; };
F326140B23CFB650009EC215 /* ContactsListView+ListItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ContactsListView+ListItem.swift"; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@ -227,6 +229,7 @@
F3203BB223C8368800265268 /* ContactsContainerView.swift */, F3203BB223C8368800265268 /* ContactsContainerView.swift */,
F3203BB423C841A700265268 /* ContactsContainerView+ViewModel.swift */, F3203BB423C841A700265268 /* ContactsContainerView+ViewModel.swift */,
F3203BB623C844F100265268 /* ContactsListView.swift */, F3203BB623C844F100265268 /* ContactsListView.swift */,
F326140B23CFB650009EC215 /* ContactsListView+ListItem.swift */,
); );
path = "Collected Contacts"; path = "Collected Contacts";
sourceTree = "<group>"; sourceTree = "<group>";
@ -382,6 +385,7 @@
F326140A23CE689A009EC215 /* Contact+InitHelpers.swift in Sources */, F326140A23CE689A009EC215 /* Contact+InitHelpers.swift in Sources */,
F3203BEB23CC977000265268 /* UserQRCodeContainerView.swift in Sources */, F3203BEB23CC977000265268 /* UserQRCodeContainerView.swift in Sources */,
F3203BF123CC9B1600265268 /* UserQRCodeFormView+ViewModel.swift in Sources */, F3203BF123CC9B1600265268 /* UserQRCodeFormView+ViewModel.swift in Sources */,
F326140C23CFB650009EC215 /* ContactsListView+ListItem.swift in Sources */,
F3203BEF23CC985100265268 /* UserQRCodeFormView.swift in Sources */, F3203BEF23CC985100265268 /* UserQRCodeFormView.swift in Sources */,
F3203BFF23CDF6D100265268 /* ScannerViewControlller.swift in Sources */, F3203BFF23CDF6D100265268 /* ScannerViewControlller.swift in Sources */,
F3203BE223CA31EB00265268 /* SampleData+AppStore.swift in Sources */, F3203BE223CA31EB00265268 /* SampleData+AppStore.swift in Sources */,

View File

@ -0,0 +1,46 @@
//
// ContactsListView+ListItem.swift
// QRConnections
//
// Created by CypherPoet on 1/15/20.
//
//
import SwiftUI
extension ContactsListView {
struct ListItem {
@ObservedObject var contact: Contact
}
}
// MARK: - View
extension ContactsListView.ListItem: View {
var body: some View {
HStack {
Text(contact.name)
}
.contextMenu {
Button(action: {
self.toggleStatus()
}) {
Text("Mark \(self.contact.status == .contacted ? "Uncontacted" : "Contacted")")
}
}
}
}
// MARK: - Private Helpers
private extension ContactsListView.ListItem {
func toggleStatus() {
guard let context = contact.managedObjectContext else { fatalError() }
contact.status = (contact.status == .contacted) ? .uncontacted : .contacted
CurrentApp.coreDataManager.save(context)
}
}

View File

@ -38,38 +38,6 @@ extension ContactsListView {
extension ContactsListView {} extension ContactsListView {}
// MARK: - List Item
extension ContactsListView {
struct ListItem: View {
// TODO: Clean up other guesses since this is what we need here
@ObservedObject var contact: Contact
var body: some View {
HStack {
Text(contact.name)
}
.contextMenu {
Button(action: {
self.toggleStatus()
}) {
Text("Mark \(self.contact.status == .contacted ? "Uncontacted" : "Contacted")")
}
}
}
func toggleStatus() {
guard let context = contact.managedObjectContext else { fatalError() }
contact.status = (contact.status == .contacted) ? .uncontacted : .contacted
CurrentApp.coreDataManager.save(context)
}
}
}
// MARK: - Preview // MARK: - Preview
struct ContactsListView_Previews: PreviewProvider { struct ContactsListView_Previews: PreviewProvider {