Commit Graph

295 Commits

Author SHA1 Message Date
Brent Simmons c08bbaa970 Use AnyHashable instead of AnyObject as representedObject for tree nodes. 2017-11-04 15:27:32 -07:00
Brent Simmons ef1d95341b Show feeds in Feed Directory sidebar. 2017-11-04 14:53:21 -07:00
Brent Simmons 2bb0cdb0ba Fix build failures in OPMLTests. Tests all still pass in RSParser. 2017-11-04 10:25:13 -07:00
Brent Simmons 911e6b0879 Do some refactoring. 2017-11-01 22:40:28 -07:00
Brent Simmons 17b84ec57c Rename MarkAllReadCommand to MarkReadOrUnreadCommand and make it handle both cases. 2017-10-29 12:09:56 -07:00
Brent Simmons f9b3eeb4d7 Switch macOS deployment target to 10.13. Get MarkAllReadCommand working as an undoable command. 2017-10-29 11:14:10 -07:00
Brent Simmons d16f83c99a Start UndoableCommand as part of undo support. 2017-10-24 09:28:58 -07:00
Brent Simmons c101d9dd04 Maintain url-to-feed and feedID-to-feed dictionaries to make lookups faster. This makes OPML importing very fast. 2017-10-22 11:08:51 -07:00
Brent Simmons 649f62207f Fix OPML importing. 2017-10-21 21:00:21 -07:00
Brent Simmons 8d5e568cde Make folder.account weak and optional. 2017-10-21 16:37:40 -07:00
Brent Simmons d512908b6f Use @discardableResult with addFeed. 2017-10-21 16:32:29 -07:00
Brent Simmons 7bf1847588 Send notification on adding a feed to a folder. Also: Update ToDo. 2017-10-21 16:27:06 -07:00
Brent Simmons c237aed5b8 Rejigger the find-feed scoring to handle bitsplitting.org — we were getting the podcast feed just because it had “RSS” in the title. But we want the blog feed to get the best score. 2017-10-21 16:23:51 -07:00
Brent Simmons da1b7a6c7b Post children-did-change notification after adding a feed. 2017-10-21 16:06:25 -07:00
Brent Simmons edea37dba6 Add TreeController.normalizeSelectedNodes and supporting functions in Node. 2017-10-21 12:14:15 -07:00
Brent Simmons 702559cfb1 Define kDeleteKeyCode for use in key handling. 2017-10-21 10:54:59 -07:00
Brent Simmons aca8acea7c Update sidebar when adding a folder. 2017-10-19 13:27:59 -07:00
Brent Simmons 3812c216b2 Show unread count in window title. 2017-10-18 21:53:45 -07:00
Brent Simmons 2383ecd480 Implement ensureFolder — it actually creates and adds a folder and makes sure account is saved to disk. 2017-10-18 19:46:35 -07:00
Brent Simmons 31947854c0 Add AccountDelegate methods for reading and writing a userInfo dictionary that’s stored on disk in the same file as the rest of the Account info. Save account unreadCount with the disk dictionary. Mark an account as dirty when any descendant changes an unread count. 2017-10-18 19:14:40 -07:00
Brent Simmons 39599a43f3 Make hasAtLeastOneFeed() a Container protocol function with a default implementation. Scrap Account’s feedIDDictionary, since it’s not needed. (Well, profiling may tell us later to bring it back.) 2017-10-18 18:45:09 -07:00
Brent Simmons fe29ccd2ed Show unread count in dock badge. Force-update unread counts at startup. 2017-10-18 18:37:45 -07:00
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