Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions Wunderlist/Wunderlist.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
B4194FA124A13A9100B3BB5E /* NetworkDataLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4194FA024A13A9100B3BB5E /* NetworkDataLoader.swift */; };
B4194FA324A13AC600B3BB5E /* Bearer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4194FA224A13AC600B3BB5E /* Bearer.swift */; };
B4194FA524A13B1C00B3BB5E /* UserID.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4194FA424A13B1C00B3BB5E /* UserID.swift */; };
B4FEBEC724A267B500640C75 /* ListTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4FEBEC624A267B500640C75 /* ListTableViewController.swift */; };
B4FEBECA24A26DE600640C75 /* ListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4FEBEC924A26DE600640C75 /* ListCell.swift */; };
B4FEBECC24A2707200640C75 /* DetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4FEBECB24A2707200640C75 /* DetailViewController.swift */; };
DB15110624A104620007858E /* Wunderlist.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = DB15110424A104620007858E /* Wunderlist.xcdatamodeld */; };
DB15110824A104730007858E /* CoreDataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB15110724A104730007858E /* CoreDataStack.swift */; };
DB15110A24A1047A0007858E /* List+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB15110924A1047A0007858E /* List+Convenience.swift */; };
Expand Down Expand Up @@ -77,6 +80,9 @@
B4194FA024A13A9100B3BB5E /* NetworkDataLoader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkDataLoader.swift; sourceTree = SOURCE_ROOT; };
B4194FA224A13AC600B3BB5E /* Bearer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Bearer.swift; path = Wunderlist/Model/Bearer.swift; sourceTree = SOURCE_ROOT; };
B4194FA424A13B1C00B3BB5E /* UserID.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserID.swift; sourceTree = "<group>"; };
B4FEBEC624A267B500640C75 /* ListTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListTableViewController.swift; sourceTree = "<group>"; };
B4FEBEC924A26DE600640C75 /* ListCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListCell.swift; sourceTree = "<group>"; };
B4FEBECB24A2707200640C75 /* DetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailViewController.swift; sourceTree = "<group>"; };
DB15110524A104620007858E /* Wunderlist.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Wunderlist.xcdatamodel; sourceTree = "<group>"; };
DB15110724A104730007858E /* CoreDataStack.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreDataStack.swift; sourceTree = "<group>"; };
DB15110924A1047A0007858E /* List+Convenience.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "List+Convenience.swift"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -160,6 +166,16 @@
path = WunderlistUITests;
sourceTree = "<group>";
};
B4FEBEC824A26DAD00640C75 /* List Views */ = {
isa = PBXGroup;
children = (
B4FEBEC624A267B500640C75 /* ListTableViewController.swift */,
B4FEBEC924A26DE600640C75 /* ListCell.swift */,
B4FEBECB24A2707200640C75 /* DetailViewController.swift */,
);
path = "List Views";
sourceTree = "<group>";
};
B9E352786EF74677C055B15C /* Pods */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -255,6 +271,7 @@
isa = PBXGroup;
children = (
5E7B0730249EDB8C00F6664A /* Onboarding */,
B4FEBEC824A26DAD00640C75 /* List Views */,
);
path = "View Controllers";
sourceTree = "<group>";
Expand Down Expand Up @@ -474,8 +491,10 @@
files = (
DBACA3B824A106D100F4872D /* PDMListEntryController.swift in Sources */,
DB15110824A104730007858E /* CoreDataStack.swift in Sources */,
B4FEBECC24A2707200640C75 /* DetailViewController.swift in Sources */,
B4194FA524A13B1C00B3BB5E /* UserID.swift in Sources */,
DBACA3BC24A119AB00F4872D /* PDMListRepresentation.swift in Sources */,
B4FEBEC724A267B500640C75 /* ListTableViewController.swift in Sources */,
5E7B0734249EDC3600F6664A /* LoginSignUpViewController.swift in Sources */,
DB15110C24A104810007858E /* PersistenceProtocol.swift in Sources */,
B4194F9F24A13A7F00B3BB5E /* UserController.swift in Sources */,
Expand All @@ -492,6 +511,7 @@
B4194F9D24A1393800B3BB5E /* User.swift in Sources */,
27D818F624A13A3500564B68 /* NetworkError.swift in Sources */,
27D818F224A136D200564B68 /* HTTPMethod.swift in Sources */,
B4FEBECA24A26DE600640C75 /* ListCell.swift in Sources */,
DBACA3BA24A1198600F4872D /* PDMListController.swift in Sources */,
DB3EA15E249EABCD009B3BEA /* SceneDelegate.swift in Sources */,
);
Expand Down
3 changes: 0 additions & 3 deletions Wunderlist/Wunderlist/Core Data/CoreDataStack.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@

import Foundation
import CoreData


// MARK: - Protocols
protocol PersistentStoreControllerDelegate: NSFetchedResultsControllerDelegate {}
extension NSManagedObjectContext: PersistentContext {}
Expand Down Expand Up @@ -71,7 +69,6 @@ class CoreDataStack: NSObject, PersistentStoreController {
}
func delete(_ item: Persistable?, in context: PersistentContext?) throws {
let thisContext = fetchContext(context)

guard let entry = item as? ListEntry else { throw NSError() }
thisContext.delete(entry)
try save(in: thisContext)
Expand Down
18 changes: 12 additions & 6 deletions Wunderlist/Wunderlist/Core Data/List+Convenience.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,26 @@ import CoreData
extension ListEntry: Persistable {
convenience init?(
name: String,
listId: Int64,
dueDate: Date = Date(),
listId: Int64?,
dueDate: Date? = Date(),
isRecurring: Bool?,
dayOfWeek: Int64,
dayOfWeek: Int64?,
isComplete: Bool?,
context: PersistentContext
) {
guard let context = context as? NSManagedObjectContext,
let isRecurring = isRecurring
let isRecurring = isRecurring,
let listId = listId,
let dayOfWeek = dayOfWeek,
let isComplete = isComplete
else { return nil }
self.init(context: context)
self.name = name
self.id = Int64(listId)
self.dueDate = dueDate
self.isRecurring = isRecurring
self.dayOfWeek = Int64(dayOfWeek)
self.isComplete = isComplete
}
static let dateFormatter: DateFormatter = {
var formatter = DateFormatter()
Expand All @@ -38,13 +43,14 @@ extension ListEntry: Persistable {
}()
@discardableResult convenience init?(listRepresentation: ListRepresentation, context: PersistentContext) {
guard let listKey = listRepresentation.listId,
let dayOfWeek = listRepresentation.dayOfWeek else { return nil }
let dayOfWeek = listRepresentation.dayOfWeek,
let isComplete = listRepresentation.isComplete else { return nil }
let name = listRepresentation.name
let dueDate = listRepresentation.dueDate
let isRecurring = listRepresentation.isRecurring
self.init(name: name, listId: Int64(listKey),
dueDate: dueDate, isRecurring: isRecurring,
dayOfWeek: Int64(dayOfWeek), context: context)
dayOfWeek: Int64(dayOfWeek), isComplete: isComplete, context: context)
}
var listRepresentation: ListRepresentation? {
guard let name = name,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@
<attribute name="dayOfWeek" optional="YES" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
<attribute name="dueDate" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
<attribute name="id" optional="YES" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
<attribute name="isComplete" optional="YES" attributeType="Boolean" usesScalarValueType="YES"/>
<attribute name="isRecurring" optional="YES" attributeType="Boolean" usesScalarValueType="YES"/>
<attribute name="name" optional="YES" attributeType="String"/>
</entity>
<elements>
<element name="ListEntry" positionX="-54" positionY="-9" width="128" height="118"/>
<element name="ListEntry" positionX="-54" positionY="-9" width="128" height="133"/>
</elements>
</model>
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,15 @@ class ListEntryController: NSObject {
// MARK: - Methods
func createEntry(withName name: String, isRecurring: Bool?,
context: PersistentContext?, dueDate: Date? = Date(),
taskId: Int64?, dayOfWeek: Int64?) throws {
taskId: Int64?, isComplete: Bool? = false, dayOfWeek: Int64?) throws {
let context = persistentStoreController.mainContext
guard let dueDate = dueDate, let isRecurring = isRecurring,
let taskId = taskId,
let dayOfWeek = dayOfWeek else { return }
let dayOfWeek = dayOfWeek,
let isComplete = isComplete else { return }
guard let entry = ListEntry(name: name, listId: Int64(taskId),
dueDate: dueDate, isRecurring: isRecurring,
dayOfWeek: Int64(dayOfWeek), context: context)
dayOfWeek: Int64(dayOfWeek), isComplete: isComplete, context: context)
else { throw NSError() }
try persistentStoreController.create(item: entry, in: context)
}
Expand Down
1 change: 1 addition & 0 deletions Wunderlist/Wunderlist/Model/PDMListRepresentation.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ struct ListRepresentation: Equatable, Codable {
var listId: Int?
var isRecurring: Bool?
var dueDate: Date
var isComplete: Bool?
}

struct ListRepresentations: Codable {
Expand Down
4 changes: 2 additions & 2 deletions Wunderlist/Wunderlist/Networking_API/PDMListController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -136,12 +136,12 @@ private func update(listEntry: ListEntry, with representation: ListRepresentatio
listEntry.dayOfWeek = Int64(representation.dayOfWeek ?? 0)
}
func createListEntry(with name: String, listId: Int64, dueDate: Date? = Date(),
isRecurring: Bool? = false, dayOfWeek: Int64) throws {
isRecurring: Bool? = false, isComplete: Bool? = false, dayOfWeek: Int64) throws {
let context = persistentStoreController.mainContext
guard let list = ListEntry(name: name, listId: listId,
dueDate: dueDate ?? Date(),
isRecurring: isRecurring,
dayOfWeek: dayOfWeek,
dayOfWeek: dayOfWeek, isComplete: isComplete,
context: context) else { return }
putListToServer(list: list)
do {
Expand Down
Loading