Commit Graph

323 Commits

Author SHA1 Message Date
Brent Simmons 324f330a3b Use localizedStandardCompare when sorting Account names. It’s likely I got the order backwards, but I won’t know until we have accounts other than the local account. (I always get this backwards, even knowing that I always get it backwards.) 2017-10-18 18:21:36 -07:00
Brent Simmons f90bf3bea1 Rename childrenContainsFeed to childrenContain. Add assertionFailure — expecting pointer equality. 2017-10-18 18:13:49 -07:00
Brent Simmons 3ea60cb461 Handle unread count change notifications in Folder. Update the unread count when needed. 2017-10-13 06:58:15 -07:00
Brent Simmons 505f4bcdba Handle unread count did change notification in Account. 2017-10-13 06:50:33 -07:00
Brent Simmons 4897181909 Avoid a compiler bug with constrained Set extensions. Add a notification observation to Account when unread count changes. 2017-10-12 21:02:27 -07:00
Brent Simmons 165e74a3f3 Refactor status change handling in Account. 2017-10-10 13:23:12 -07:00
Brent Simmons f5a5bf91b2 Update unread counts for feeds when statuses change. 2017-10-09 21:54:08 -07:00
Brent Simmons 77042f67b5 Include updated feeds in StatusesDidChange notification, so that updating unread counts will work. 2017-10-08 22:25:33 -07:00
Brent Simmons 6572631866 Update the timeline cell when an article’s status changes. 2017-10-08 21:06:25 -07:00
Brent Simmons 8a6b8bde9b Remove some inaccurate assertions about the main thread. 2017-10-08 19:33:37 -07:00
Brent Simmons 8aa3746cb8 Add code for fetching articles for the timeline. Doesn’t actually work yet, though, for some reason. 2017-10-08 18:58:15 -07:00
Brent Simmons 4b662efe15 Comment-out some debugging code. 2017-10-08 01:56:18 -07:00
Brent Simmons 1b44591692 Save new and updated articles to the database. 2017-10-08 01:54:37 -07:00
Brent Simmons ca611623aa Simplify Container and its function implementations. 2017-10-07 21:41:21 -07:00
Brent Simmons 7f6f6f9061 Set the account to dirty upon updating some Feed properties. 2017-10-07 20:25:17 -07:00
Brent Simmons c52eb024ab Avoid resetting the save timer so often during a refresh session. Instead just remove it (if refreshing) and add it back when the refresh session ends. 2017-10-07 20:24:58 -07:00
Brent Simmons 0ba557736e Avoid saving account to disk during a refresh session. Reschedule the timer and do it later. 2017-10-07 20:11:17 -07:00
Brent Simmons d8e723db46 Fix typo — send correct notification on account finishing refresh. 2017-10-07 18:31:34 -07:00
Brent Simmons ade76d6405 Save to disk when needed. Coalesce writing, so it doesn’t happen over and over during a refresh session. 2017-10-07 18:15:42 -07:00
Brent Simmons bed43dd3d6 Call the completion block in Account.update, so the refresher can do its thing properly. Also: update ToDo. 2017-10-07 17:53:37 -07:00
Brent Simmons c6f683c34c Make Account, rather than its delegate, watch for refresh progress changes. This way the delegate doesn’t have to be inited with its Account. 2017-10-07 17:43:10 -07:00
Brent Simmons b77569f38b Create and use CombinedRefreshProgress, which reports refresh progress across all accounts. Used by the status view. 2017-10-07 17:20:19 -07:00
Brent Simmons 5d8aa94dc3 Keep track of refresh beginning and finishing. Validate the refreshAll command (menu, toolbar). 2017-10-07 14:40:14 -07:00
Brent Simmons ab82febb9a Move Account/Local folder to Account/LocalAccount, to make it easier to spot (since LocalAccount is its name). Also: wire up refreshing. Make organization changes to LocalAccountRefresher. 2017-10-07 12:40:14 -07:00
Brent Simmons f7c5919674 Send DownloadProgressDidChange notification only when numberOfTasks or numberRemaining actually change. 2017-10-07 12:37:11 -07:00
Brent Simmons 1bffbb7312 Use new UserAgent.headers() function. Reorganize — API up top, with extensions for protocol conformances. 2017-10-07 12:36:09 -07:00
Brent Simmons 6888ad6d00 Use UserAgent.headers() function. 2017-10-07 12:35:11 -07:00
Brent Simmons 07e6ff5572 Add UserAgent.headers() function — otherwise that code was duplicated in a couple places. 2017-10-07 12:34:12 -07:00
Brent Simmons 6a1c39d8a3 Remove Notifications.swift from Data.framework. Clean up UnreadCountProvider. 2017-10-07 11:56:22 -07:00
Brent Simmons 12ea6e6a9f Fix a second bug loading feeds. Feeds now appear in the sidebar. 2017-10-05 21:17:50 -07:00
Brent Simmons 199dd0e247 Fix bug loading feeds from disk. 2017-10-05 21:08:27 -07:00
Brent Simmons c258a9da5c Rewrite and move BatchUpdate.swift. 2017-10-05 20:34:29 -07:00
Brent Simmons c80c6c30f8 Fix builder errors, mostly in RSParser. 2017-10-04 13:28:48 -07:00
Brent Simmons 83231ed373 Fix some build errors. 2017-10-02 13:15:07 -07:00
Brent Simmons cb4027a951 Fix some build errors. 2017-10-01 11:28:44 -07:00
Brent Simmons 04612049f5 Make progress on adding feeds. 2017-10-01 10:59:35 -07:00
Brent Simmons a910841c65 Add createFeed method. 2017-09-30 16:56:48 -07:00
Brent Simmons 1f677ca600 Edit some access permissions in Folder. 2017-09-30 11:00:18 -07:00
Brent Simmons 5ae70758fb Perform a minor refactoring in Folder.swift. 2017-09-28 13:34:16 -07:00
Brent Simmons 3a4e545e22 Fix build errors in Account.framework. 2017-09-28 13:16:47 -07:00
Brent Simmons 1ec3484a95 Init Folder with an Account rather than an accountID. 2017-09-28 06:53:01 -07:00
Brent Simmons 48543bcfd6 Make progress reading/writing Account feeds and folders to disk. 2017-09-27 13:29:05 -07:00
Brent Simmons 55967f8731 Fix some build errors. 2017-09-26 21:43:40 -07:00
Brent Simmons f187f6a9ef Make Feed provide a disk dictionary. 2017-09-26 13:32:02 -07:00
Brent Simmons 9b566dd10d Init feed with a disk dictionary. 2017-09-26 13:26:28 -07:00
Brent Simmons 8d9c9217dc Make HTTPConditionalGetInfo serializable via a dictionary. 2017-09-26 13:16:46 -07:00
Brent Simmons 2978d4420b Start work on adding feeds and folders. 2017-09-25 13:31:36 -07:00
Brent Simmons 21080a97fc Start work on feed importing. 2017-09-24 22:35:57 -07:00
Brent Simmons 4d677b2055 Fix a bunch of build errors. 2017-09-24 12:24:44 -07:00
Brent Simmons 1ab282c23a Do some cleanups on app code. 2017-09-23 12:17:14 -07:00
Brent Simmons 0843c10bc5 Remove accountInfo references. This was speculative anyway. I’ll figure out later what we actually need. (Which might be accountInfo after all, and might not be.) 2017-09-22 08:06:06 -07:00
Brent Simmons 6bb1deaa9e Start Database unit tests with a blank file. 2017-09-21 18:23:42 -07:00
Brent Simmons a7063f7a5d Simplify filterIncomingArticles. 2017-09-21 18:14:37 -07:00
Brent Simmons d9f0e53312 Switch to using DatabaseArticle over article dictionaries. 2017-09-21 13:25:14 -07:00
Brent Simmons 19e65dd076 Create DatabaseArticle to use instead of that article dictionary thing. 2017-09-21 12:59:08 -07:00
Brent Simmons 93db92d611 Use temporary article dictionaries when fetching articles. 2017-09-20 13:29:21 -07:00
Brent Simmons f0eea49179 Start working of moving from stubArticles to article dictionaries. 2017-09-19 13:36:13 -07:00
Brent Simmons 8767aa3178 Continue work on non-optional article.status. 2017-09-19 08:07:06 -07:00
Brent Simmons b28a849af6 Continue march toward non-optional article.status. 2017-09-18 22:00:35 -07:00
Brent Simmons 6db993075b Make progress on making ArticleStatus a reference type and on making article.status non-optional. 2017-09-18 13:17:30 -07:00
Brent Simmons ab43db7761 Get Data.framework building again. 2017-09-18 13:01:36 -07:00
Brent Simmons 622fd51d50 Make ArticleStatus a reference type. Make article.status non-optional. 2017-09-18 12:59:42 -07:00
Brent Simmons 54ca352a70 Continue fixing build errors. 2017-09-17 17:56:04 -07:00
Brent Simmons 92a60d8f06 Continue fixing build errors. 2017-09-17 17:03:58 -07:00
Brent Simmons 0336e30b0d Continue to fix build errors. 2017-09-17 16:30:45 -07:00
Brent Simmons 6631a9c2f8 Continue fixing build errors. 2017-09-17 13:07:55 -07:00
Brent Simmons c0ce68e64b Fix some build errors. 2017-09-17 12:54:08 -07:00
Brent Simmons 1b391c262e Continue working on build errors. 2017-09-17 12:34:10 -07:00
Brent Simmons 1c63e868c9 Delete dead code. 2017-09-17 12:20:59 -07:00
Brent Simmons 121fbf3c27 Move AccountManager to Account.framework. 2017-09-17 12:20:32 -07:00
Brent Simmons e78fc0d696 Get Account.framework building. 2017-09-17 12:08:50 -07:00
Brent Simmons 306836766a Fix build error in RSWeb. 2017-09-17 11:37:22 -07:00
Brent Simmons 4bb0325c45 Delete superseded code. 2017-09-17 11:32:58 -07:00
Brent Simmons ba8d2c81e8 Create AccountDelegate. The actual implementation for each different type of Account will conform to AccountDelegate. 2017-09-16 15:30:26 -07:00
Brent Simmons 5715d2f221 Move Folder and Container from Data to Account. 2017-09-16 15:25:38 -07:00
Brent Simmons 1f35892791 Make AttachmentsTable use default implementation of save. 2017-09-16 13:10:03 -07:00
Brent Simmons db757bcdb9 Implement marking statuses. 2017-09-16 11:04:29 -07:00
Brent Simmons 90c11bb687 Delete some unused code. 2017-09-16 10:38:54 -07:00
Brent Simmons 66129841a5 Use UnreadCountDictionary instead of UnreadCountTable. 2017-09-16 10:21:39 -07:00
Brent Simmons 72cfc84001 Cache statuses when fetching articles — since articles are fetched using a join statement with the statuses table. 2017-09-14 13:32:06 -07:00
Brent Simmons 80c8a848e9 Slightly simplify related-object adding code. 2017-09-13 21:52:11 -07:00
Brent Simmons 7563906f9b Create Articles with attached objects. 2017-09-13 21:41:01 -07:00
Brent Simmons 57cf5a25d7 Fix some build errors. 2017-09-13 17:40:25 -07:00
Brent Simmons 1cfa11d032 Move save-using-cache code to DatabaseRelatedObjectsTable. Fix some build errors. 2017-09-13 13:29:52 -07:00
Brent Simmons d284bf3757 Remove cache from Author since it’s now in AuthorsTable. 2017-09-12 22:27:36 -07:00
Brent Simmons 8f01e7e3b6 Fix build error. 2017-09-12 22:06:59 -07:00
Brent Simmons 8f12df8f5b Move fetchObjectsWithIDs from AttachmentsTable to default protocol implementation since AuthorsTable needs the exact same thing. 2017-09-12 21:47:04 -07:00
Brent Simmons 9341515926 Save and fetch attachments. Use a cache. 2017-09-12 21:19:45 -07:00
Brent Simmons b32c96c912 Prune DatabaseLookupTable some more. Get RSDatabase building again. 2017-09-11 21:58:22 -07:00
Brent Simmons d77c4d763f Add comment to RelatedObjectsMap. 2017-09-11 13:16:30 -07:00
Brent Simmons 45063d2d96 Remove cache from DatabaseLookupTable because it made the code too complex. If profiling says we need caching, we can add it back later. 2017-09-11 13:15:12 -07:00
Brent Simmons 258abab9f6 Rename *LookupTable data structures to *Map. 2017-09-11 13:11:29 -07:00
Brent Simmons 5ee58458a2 Make progress on related objects. 2017-09-11 06:46:32 -07:00
Brent Simmons 07a44f7af0 Fix some build errors in Database.framework. 2017-09-10 11:36:28 -07:00
Brent Simmons 2943fca8e3 Make ParsedAttachment require a URL. 2017-09-10 11:21:49 -07:00
Brent Simmons 9ad83e58b3 Make tags and attachments sets instead of arrays. 2017-09-10 11:18:15 -07:00
Brent Simmons b1bd1ac75a Use a Set<ParsedAuthor> instead of [ParsedAuthor] array. 2017-09-10 11:02:05 -07:00
Brent Simmons 9a45ab7996 Marked ParsedFeed.hubs a Set<ParsedHub>. 2017-09-10 10:53:24 -07:00
Brent Simmons 7415131e8d Make ParsedFeed.items a Set<ParsedItem>. Fix some build errors in Database.framework. 2017-09-09 18:46:58 -07:00
Brent Simmons 7680760537 Fix some Database.framework build errors. Add Author cache. 2017-09-09 12:57:24 -07:00
Brent Simmons 4d816850d6 Delete some dead code. 2017-09-09 12:24:30 -07:00
Brent Simmons 3c47b23b8b Add article.changesFrom() to get changes in an Article. 2017-09-09 12:09:48 -07:00
Brent Simmons 54b5100b09 Call saveUpdatedRelatedObjects when saving updated articles. 2017-09-09 11:10:15 -07:00
Brent Simmons f3406088f3 Use a KeyPath to generalize code for checking for tags, attachments, and authors changes. 2017-09-09 11:02:02 -07:00
Brent Simmons f40b400dd5 Make progress on saving updated articles. 2017-09-08 13:36:30 -07:00
Brent Simmons 9ee20ee270 Get Data.framework building again. 2017-09-07 21:00:30 -07:00
Brent Simmons 75603eefdc Deal with fallout from moving Account to its own framework. 2017-09-07 20:51:51 -07:00
Brent Simmons 6a4fd38056 Continue mess-making. Start Account framework. 2017-09-07 20:41:25 -07:00
Brent Simmons a92492eb91 Make further progress on saving articles from feeds. 2017-09-06 13:33:04 -07:00
Brent Simmons d84c65c66f Continue work on saving articles. 2017-09-05 08:53:45 -07:00
Brent Simmons dadb4a4cd0 Continue to make a mess. Switching computers so I can sit with my laptop in the living room and wait for the Pagliacci Pizza guy to knock. 2017-09-04 18:29:02 -07:00
Brent Simmons b0cb01a68e Make a mess of things. Article and ArticleStatus are now immutable structs. 2017-09-04 17:10:02 -07:00
Brent Simmons fb121f8a8c Make more progress on saving/updating articles. 2017-09-02 16:08:02 -07:00
Brent Simmons d33d8a0330 Make progress toward saving/updating articles. 2017-09-02 14:19:42 -07:00
Brent Simmons d017536d58 Make AttachmentsTable, AuthorsTable, and TagsTable classes instead of structs. 2017-09-02 10:13:37 -07:00
Brent Simmons b783d1c062 Create and use a DatabaseRelatedObjectsTable protocol, which clarifies the relationships between different table types. 2017-09-02 10:11:19 -07:00
Brent Simmons a00ac9c2ac Implement database.fetchUnreadCounts. 2017-09-01 13:31:27 -07:00
Brent Simmons 66ae62233f Start work on fetching unread counts. 2017-08-31 13:35:48 -07:00
Brent Simmons f3bfa8811d Implement marking statuses in memory and in database. 2017-08-29 13:32:36 -07:00
Brent Simmons baabf842e1 Progress. 2017-08-27 13:03:15 -07:00
Brent Simmons 3c43732e25 Delete some commented-out code that has been superseded. 2017-08-26 16:44:39 -07:00
Brent Simmons 2d1c63403d Make progress fetching articles. 2017-08-26 15:37:15 -07:00
Brent Simmons 2cefb87f20 Create ArticleCache, which wraps a weak-to-weak NSMapTable. An article is cached for as long as there’s an external (outside-the-cache) reference to the article. 2017-08-23 21:30:28 -07:00
Brent Simmons cdb8446c86 Make Articles table own the various related and lookup tables. 2017-08-23 13:23:12 -07:00
Brent Simmons becbf3d7b0 Fix Account-Database init method. 2017-08-22 07:45:09 -07:00
Brent Simmons 5860f774bd Make Database.framework build. Doesn’t work, but it builds. 2017-08-21 13:31:14 -07:00
Brent Simmons 4010011b5a Progress toward getting Database.framework to build. Mostly just commented stuff out. 2017-08-20 22:43:46 -07:00
Brent Simmons 9ddaaf5f5d Decide on preliminary public API for Database.swift. Stub-out everything. 2017-08-20 21:23:17 -07:00
Brent Simmons c164c29cde Make attachments use a DatabaseLookupTable. 2017-08-20 17:46:15 -07:00
Brent Simmons 213b1d7a6f Turn ObjectCache into DatabaseObjectCache — rather than a generic with a keypath, it works with DatabaseObject, which has a known databaseID property. 2017-08-20 16:03:09 -07:00
Brent Simmons 2ce577e9d4 Make progress on Database surgery. 2017-08-20 15:56:58 -07:00
Brent Simmons 54cfaefd81 Finish DatabaseLookupTable — well, except for testing and seeing if it actually works. 2017-08-20 15:03:05 -07:00
Brent Simmons dccc44c920 Make progress saving relationships in DatabaseLookupTable. 2017-08-20 12:41:33 -07:00
Brent Simmons e76beee988 Progress on relationships. 2017-08-19 22:07:31 -07:00
Brent Simmons 2d915a890e Start DatabaseLookupTableCache. 2017-08-19 16:30:55 -07:00
Brent Simmons 0186aeffa2 Added Swift compile time check setting. Fixed issue, and then Xcode stopped beachballing, which means I can move back from my laptop to my iMac. Whew. 2017-08-19 12:27:54 -07:00
Brent Simmons 8d5d94e1a9 Checking in to switch computers BECAUSE XCODE IS JUST BEACHBALLING ON MY IMAC GODDAMNIT. 2017-08-19 11:43:52 -07:00
Brent Simmons e7897e21d9 Start ToDo.ooutline. (OmniOutliner outline.) 2017-08-14 13:33:50 -07:00
Brent Simmons 177667d639 Remove one of the caches from DatabaseLookupTable. 2017-08-14 13:16:52 -07:00
Brent Simmons a4b27075a7 More work on relationships. 2017-08-14 12:54:57 -07:00
Brent Simmons 7f5277f3e0 Using LookupTable. 2017-08-08 20:10:02 -07:00
Brent Simmons 2fe6b0e2a6 LookupTable. 2017-08-07 22:09:10 -07:00
Brent Simmons 67cb2c57d7 Make LookupTable not a DatabaseTable. 2017-08-07 20:03:38 -07:00
Brent Simmons 7f573c2b14 Continue progress on relationships. 2017-08-07 20:00:46 -07:00
Brent Simmons 7edc76cd6e More progress on relationships. 2017-08-07 19:37:31 -07:00
Brent Simmons 4223808c74 Make progress on relationships. 2017-08-06 21:46:47 -07:00
Brent Simmons 570d70d8fe Progress on lookup tables. 2017-08-06 21:16:13 -07:00
Brent Simmons 4503f771da Attach authors. 2017-08-06 12:37:47 -07:00
Brent Simmons c30e7eeb99 Get StatusesTable compiling. 2017-08-05 11:12:45 -07:00
Brent Simmons 9d37d88c2f Make progress on Database.framework. 2017-08-03 21:10:01 -07:00