Commit Graph

1539 Commits

Author SHA1 Message Date
Maurice Parker
d1765b3d0c Merge branch 'master' into extension-point 2020-04-13 10:22:29 -05:00
Maurice Parker
2ae511b818 Fix recursion bug in opml normalizer. 2020-04-13 07:11:03 -05:00
Maurice Parker
2ddc064696 Fix missing unread counts on OPML imports. 2020-04-13 05:25:07 -05:00
Maurice Parker
fe9ade5e85 Tune the add CloudKit account process. 2020-04-13 04:59:41 -05:00
Maurice Parker
6f255e63b3 Fix missing callback that was hanging new accounts. 2020-04-13 04:26:28 -05:00
Brent Simmons
6d9eda442f Remove userDeleted support. The read-items filter seems to fill the need to hide things. We’re simplifying the backend by removing this unused feature. 2020-04-12 17:12:36 -07:00
Brent Simmons
22c2a7a72e Delete old articles in a graduated way, so as not to block the database for too long. Also: don‘t delete old unread articles in accounts that use an external sync service. 2020-04-12 16:36:35 -07:00
Maurice Parker
6bd2c0dc06 Fix duplicate folder relationships caused by OPMLNormalizer 2020-04-12 18:29:34 -05:00
Maurice Parker
ddc364f4d6 Changed CloudKit account processing to be batch based so that background additions download the articles. 2020-04-12 15:57:00 -05:00
Maurice Parker
a131c01e77 Merge branch 'master' into extension-point 2020-04-11 18:14:30 -05:00
Maurice Parker
815cf31ab8 Make sure the network is reachable before trying to sync iCloud accounts. 2020-04-11 16:45:31 -05:00
Maurice Parker
e6c5d2f199 Merge branch 'ios-release' 2020-04-11 15:59:37 -05:00
Maurice Parker
6f682aa3cd
Merge pull request #1981 from abilops/master
Avoid cached response when adding new feed
2020-04-11 12:30:05 -05:00
Maurice Parker
d6a4005336 Separate refreshers so that we don't send out duplicate unread statuses for new records. 2020-04-11 12:22:28 -05:00
abilops
00d3249c86 Avoid cached response when adding new feed 2020-04-11 05:18:17 +05:30
Maurice Parker
6ec11119f8 Add external web feed to status so that it can prompt receiving system to pull down new articles. 2020-04-10 18:10:54 -05:00
Maurice Parker
a8dcf3eeee Add the unread statuses on receipt to CloudKit. 2020-04-10 17:23:39 -05:00
Maurice Parker
983138366f Add code to process new article entries. 2020-04-10 16:25:58 -05:00
Maurice Parker
4418a4bb02 Add completion block that returns new status records when we are marking statuses asynchronously. 2020-04-10 15:19:33 -05:00
Maurice Parker
63c4d53ee9 Change LocalAccountRefresher to use a delegate so that it can better handle duplicate feed requests 2020-04-10 11:20:35 -05:00
Maurice Parker
3ba9ca8c8a Added new Secrets framework project 2020-04-09 21:07:56 -05:00
Maurice Parker
e32af77e39 Merge branch 'master' into feed-provider 2020-04-09 19:30:49 -05:00
Maurice Parker
47cdef5c07 Fix hashable implementation that could have in theory had collisions. 2020-04-09 11:20:53 -05:00
Maurice Parker
14189b19e9 Change extension point so that multiple of the same type can exist. 2020-04-08 10:12:06 -05:00
Maurice Parker
ae091afb18 Allow for error on query when looking for existing starred records. 2020-04-07 19:02:25 -05:00
Maurice Parker
b0781c6df4 Add missing xcconfig files 2020-04-07 18:18:27 -05:00
Maurice Parker
49cff8eb8e Add basic ExtensionPoint support. 2020-04-07 15:25:33 -05:00
Maurice Parker
f8667be32b Change preference pane to Extensions for demo purposes. 2020-04-07 12:02:07 -05:00
Maurice Parker
429ba1aed3 Add Feed Providers preference pane. 2020-04-06 21:06:42 -05:00
Maurice Parker
e4b03eebc2 Add FeedProvider project. 2020-04-06 17:05:47 -05:00
Maurice Parker
5ab62d3aad Gated the database suspend and resume calls so that the Mac app will compile. 2020-04-06 09:18:20 -05:00
Maurice Parker
a4c9a4b65f Remove bad download progress indicator tick. 2020-04-06 02:18:42 -05:00
Maurice Parker
6364539608 Handle edge case where the user deletes the iCloud data. 2020-04-06 02:15:28 -05:00
Maurice Parker
bada18a412 Make sure a scheduled refresh can't stack on top on one happening right for CloudKit only. 2020-04-05 15:23:11 -05:00
Maurice Parker
390173dcb4 Remove centralized CloudKit syncing code. 2020-04-05 15:05:08 -05:00
zgjie
bcfd75ff68 Replace the firstElementPassingTest function come from RSCore with the native function first(where:). 2020-04-06 02:06:24 +08:00
Maurice Parker
116a346b87 Make the remove feed process manage the progress indicator better. 2020-04-05 11:49:29 -05:00
Maurice Parker
449085b84a Fix bug that was causing duplicate downloads on OPML import. 2020-04-05 11:26:21 -05:00
Maurice Parker
f289735b50 Rework how feed subscriptions are managed. 2020-04-05 10:49:15 -05:00
Maurice Parker
0b87acec1e Add subscriptions to OPML imports. 2020-04-04 17:35:09 -05:00
Maurice Parker
5273187033 Put update to UserDefaults on main thread. 2020-04-04 16:05:52 -05:00
Maurice Parker
2a6e1078aa Add batch update so that feeds stop adding to the sidebar without their names populated. 2020-04-04 15:12:59 -05:00
Maurice Parker
3a228be142 Add user web feed subscription management. 2020-04-04 15:04:38 -05:00
Maurice Parker
231e3a12e2 Change web feed key to be an md5 has of the url. 2020-04-04 13:36:54 -05:00
Maurice Parker
71b5c8bc86 Add user feed subscription management. 2020-04-04 13:33:49 -05:00
Maurice Parker
79adb1f34a Stub out add subscription 2020-04-04 05:15:43 -05:00
Maurice Parker
adefcc7c3f Stub out subscription delete 2020-04-04 05:02:33 -05:00
Maurice Parker
cceec096a9 Added the public default zone. 2020-04-04 02:33:41 -05:00
Maurice Parker
4834399b8d Beefed up CloudKit error handling. 2020-04-03 21:20:55 -05:00
Maurice Parker
6daedbf6e2 Removed extraneous batch update end. 2020-04-03 21:06:20 -05:00
Maurice Parker
4d3e9b068f Add user deleted zone checks. 2020-04-03 20:39:50 -05:00
Maurice Parker
fc020c06e8 Make sure we clear the refresh progress on local accounts when it completes. 2020-04-03 20:25:21 -05:00
Maurice Parker
850577d6bc Change so that we only attempt to subscribe when creating new account. 2020-04-03 20:01:29 -05:00
Maurice Parker
4a2760ade3 Fix bug that could cause the progress indicator to not finish. 2020-04-03 17:29:26 -05:00
Maurice Parker
c454aa88b8 Fix feed handling that was causing starred article sharing to bug out. 2020-04-03 14:19:31 -05:00
Maurice Parker
260551ebb1 Added missing init param to test case. 2020-04-03 13:52:37 -05:00
Maurice Parker
f75e3e5ebf Added new initialization parameter for Parsed Items. 2020-04-03 13:42:59 -05:00
Maurice Parker
10a87ccfb6 Refactored starred article passing to make it more reliable 2020-04-03 13:26:08 -05:00
Maurice Parker
f143248e08 Enable passing starred articles between devices. 2020-04-03 11:25:01 -05:00
Maurice Parker
d6b094b37e Save starred articles to iCloud. 2020-04-02 18:06:47 -05:00
Maurice Parker
f97194b9be Removed long running operations support as I don't think we need it. 2020-04-02 14:13:57 -05:00
Maurice Parker
ef6a79489a Add missing completion block calls. 2020-04-02 12:25:23 -05:00
Maurice Parker
2924c0e6cc Rework download progress so that the delegate always manages it to make for smoother progress bar progressions. 2020-04-02 12:00:10 -05:00
Maurice Parker
40ea5243c6 Removed notification we no longer needed to use to refresh the Feeds and Sidebar. 2020-04-01 20:31:32 -05:00
Maurice Parker
ea78b5683d Fix background notification processing of CloudKit changes. 2020-04-01 20:21:14 -05:00
Maurice Parker
850d6b5623 Format code fix. 2020-04-01 17:15:00 -05:00
Maurice Parker
def48546a3 Change how initial refresh is triggered. 2020-04-01 16:45:29 -05:00
Maurice Parker
b3cf7ccdb7 Remove batch update blocks that were causing more harm than good. 2020-04-01 15:39:29 -05:00
Maurice Parker
39aecd84fe Fixed chunked record handling. 2020-04-01 15:39:07 -05:00
Maurice Parker
7e8892cda5 Beef up error handling for fetches. 2020-04-01 14:55:40 -05:00
Maurice Parker
9ffaa41d35 Add missing post sync database updates. 2020-04-01 14:55:22 -05:00
Maurice Parker
694be77e96 Add CloudKit status syncing 2020-04-01 14:10:07 -05:00
Maurice Parker
1ab21bd3e3 Added batch update capabilities. 2020-04-01 12:22:59 -05:00
Maurice Parker
44231937cd Add send statuses to CloudKit. 2020-04-01 11:46:37 -05:00
Maurice Parker
9a1b7f5225 Update precondition to make sure iCloud doesn't call the wrong update method. 2020-04-01 09:19:51 -05:00
Maurice Parker
9e2ba8a36b Delete dead code. 2020-04-01 08:00:24 -05:00
Maurice Parker
0ce1bf5ebc Added sync database integration 2020-03-31 20:56:34 -05:00
Maurice Parker
c3b5d337c5 Change to use 0 and 1 for boolean. 2020-03-31 20:42:39 -05:00
Maurice Parker
3f82a28d21 Add import OPML for CloudKit. 2020-03-31 18:10:35 -05:00
Maurice Parker
0cafee7f59 Renamed old name left over from refactoring. 2020-03-31 16:47:02 -05:00
Maurice Parker
cdde8e4b09 Refactored the OPML load code so that the normalization step is separate from the add step. 2020-03-31 15:21:53 -05:00
Maurice Parker
31e06cd24a Add batch update block to fetch to prevent the Feeds list from dancing around. 2020-03-31 11:18:52 -05:00
Maurice Parker
1be5dc8a54 Implemented feed and folder restore so that undo works. 2020-03-31 11:07:54 -05:00
Maurice Parker
218df326f4 Fix issue where out of order records was dropping web feeds. 2020-03-31 10:32:04 -05:00
Maurice Parker
90376dac03 Implement add, move, delete folder operations for feeds. 2020-03-31 03:30:53 -05:00
Maurice Parker
df1faa368f Refactored add feed code to be more reliable. 2020-03-31 02:20:47 -05:00
Maurice Parker
203b83d64d Enable adding feeds to folders. 2020-03-30 21:11:57 -05:00
Maurice Parker
6d3e6914df Fix account container lookup so that it doesn't keep creating records. 2020-03-30 18:14:07 -05:00
Maurice Parker
1ee3c3d85a Made sure the special account container didn't get created locally. 2020-03-30 18:03:56 -05:00
Maurice Parker
766eb507bf Add container handling code 2020-03-30 15:15:45 -05:00
Maurice Parker
53e947ee4c Rename addFolder to createFolder to be more consistent. 2020-03-30 13:35:02 -05:00
Maurice Parker
f68d523a15 Merge branch 'ios-release' 2020-03-30 11:50:58 -05:00
Maurice Parker
187121298e Added support for CloudKit push notifications (subscriptions). 2020-03-30 02:48:25 -05:00
Brent Simmons
cf98ff49ea Implement retention policy for feed-based accounts (local, iCloud). 2020-03-29 23:20:01 -07:00
Brent Simmons
85b24ff92d Add parentheses in the right places to make Xcode 11.4 happy with our tuples. 2020-03-29 18:53:15 -07:00
Brent Simmons
2c4ee99dc2 Create and use ArticlesDatabase.RetentionStyle enum. 2020-03-29 18:51:03 -07:00
Maurice Parker
e2d8db6f26 Added feed rename sync to iCloud. 2020-03-29 17:53:11 -05:00
Maurice Parker
4f425c9c86 Implement web feed sync between devices. 2020-03-29 17:12:34 -05:00
Maurice Parker
c0e1fbfff3 Add external id lookups for folders and web feeds. 2020-03-29 12:07:54 -05:00
Maurice Parker
2afdd26c9d Change function names using the find suffix to use the existing suffix to match precedent. 2020-03-29 12:00:02 -05:00
Maurice Parker
3b31f2562d Stub out fetching feed changes. 2020-03-29 11:53:52 -05:00
Maurice Parker
573cee0fd6 Added delete feed functionality. 2020-03-29 08:52:59 -05:00
Maurice Parker
6ce82fc28b Implement CloudKit feed add. 2020-03-29 03:43:20 -05:00
Maurice Parker
f59d6f712f Simplify record handling. 2020-03-28 08:53:03 -05:00
Maurice Parker
fe2297213d Add automatic zone creation. 2020-03-28 08:30:25 -05:00
Maurice Parker
f288e3d5d8 More infrastructure work on CloudKit. 2020-03-27 13:59:42 -05:00
Maurice Parker
d0680bcc73 Merge branch 'ios-release' 2020-03-24 12:21:32 -05:00
Brent Simmons
fb4f72ad18 Save articles from multiple web feeds at once — rather than doing it feed-by-feed — when syncing. (This makes syncing faster.) Fix #1794. 2020-03-22 19:25:53 -07:00
Maurice Parker
8105756ccb Add some work in progress for CloudKit syncing 2020-03-22 16:35:03 -05:00
Anh Do
bdbeced5d2
Initial feed download now retrieves entries in the last 90 days 2020-03-22 01:11:00 -04:00
Anh Do
cfaacd0ada
Fix starred story hashes being parsed incorrectly 2020-03-22 00:47:33 -04:00
Anh Do
59f3fb4b3d
Handle account-level folder when syncing 2020-03-22 00:47:33 -04:00
Anh Do
f0fe308c7b
Update last article fetch time 2020-03-22 00:47:33 -04:00
Anh Do
a784b11d1c
Fix feeds being returned without corresponding folder 2020-03-22 00:47:33 -04:00
Anh Do
1e5033febe
Restore feed and folder 2020-03-22 00:47:32 -04:00
Anh Do
1e66860f34
Move feed 2020-03-22 00:47:32 -04:00
Anh Do
fe7cbe3bd3
Fix feed deletion in folder triggering unexpected deletes 2020-03-22 00:47:32 -04:00
Anh Do
a9615560ae
Fix feed not showing up at account-level if it's also in another folder 2020-03-22 00:47:32 -04:00
Anh Do
51a4a2b3c8
Rename subscriptionID to externalID 2020-03-22 00:47:32 -04:00
Anh Do
20ff053335
Rename, delete web feed, fix adding feed directly under account not working 2020-03-22 00:47:31 -04:00
Anh Do
70302a425c
Refactoring, fix folder changes not working, add new web feed 2020-03-22 00:47:31 -04:00
Anh Do
ec855364bc
Remove feeds in folder 2020-03-22 00:47:31 -04:00
Anh Do
e6659eea10
Rename and remove folder 2020-03-22 00:47:31 -04:00
Anh Do
494ce5bab9
Add folder 2020-03-22 00:47:31 -04:00
Anh Do
08339606e9
Use secure version of story images 2020-03-22 00:47:30 -04:00
Anh Do
fb07cfe187
Handle refresh progress 2020-03-22 00:47:30 -04:00
Anh Do
0479bbd9f5
Parse story image and tags 2020-03-22 00:47:30 -04:00
Anh Do
1d3073c593
Add missing story fetching 2020-03-22 00:47:30 -04:00
Anh Do
bde6a607ba
Fix starred story parsing using incorrect JSON field 2020-03-22 00:47:30 -04:00
Anh Do
b7e7e17656
Update unread/starred status 2020-03-22 00:47:29 -04:00
Anh Do
b8c7e8c1c6
Fix typo 2020-03-22 00:47:29 -04:00
Anh Do
e1d5288d3d
Implement status change 2020-03-22 00:47:29 -04:00
Anh Do
8f64f7230d
Add network suspension support 2020-03-22 00:47:29 -04:00
Anh Do
bf1a732e8f
Add missing story fetching handler 2020-03-22 00:47:29 -04:00
Anh Do
299619703c
Ignore "everything" folder 2020-03-22 00:47:29 -04:00
Anh Do
a913b65700
Fix failing login when credentials include &= 2020-03-22 00:47:28 -04:00
Anh Do
7453e397d5
Read published date from timestamp directly 2020-03-22 00:47:28 -04:00
Anh Do
6b38c07654
Put feeds in folders (code taken from Feedbin) 2020-03-22 00:47:28 -04:00
Anh Do
8e99f8deea
Display flat feed list 2020-03-22 00:47:28 -04:00
Anh Do
f4a0c56a54
Use NewsBlur terminologies in models (Feed, Story) 2020-03-22 00:47:28 -04:00
Anh Do
175cd0e798
Parse articles from story river 2020-03-22 00:47:27 -04:00
Anh Do
d37f70d2dd
Add unread story hashes query 2020-03-22 00:47:27 -04:00
Anh Do
9727219b09
Add feed list query 2020-03-22 00:47:27 -04:00
Anh Do
b7fe991b7b
Retrieve session id for later requests 2020-03-22 00:47:27 -04:00
Anh Do
034aabbfff
Add login/logout support 2020-03-22 00:47:26 -04:00
Maurice Parker
f2d9552c85 Renamed subscriptionID to externalD on WebFeed so that it matches what we did with Folder. 2020-03-21 11:33:13 -05:00
Maurice Parker
0d56226146 Fix delegate name. 2020-03-20 17:48:57 -05:00
Maurice Parker
e3d46960fd Add CloudKit syncing add account UI. 2020-03-18 15:48:44 -05:00
Maurice Parker
5b5eaf6bb7 Merge branch 'ios-release' 2020-03-14 17:13:25 -05:00
Nate Weaver
1a930c4407 Simplify .utf8 2020-03-14 12:09:00 -05:00
Nate Weaver
6ad6fe46ad Make sure POST body is properly URL-encoded 2020-03-14 12:09:00 -05:00
Maurice Parker
8384725b01
Revert "Make sure POST body is properly URL-encoded" 2020-03-14 02:48:37 -05:00
Nate Weaver
aed6858043 Simplify .utf8 2020-03-13 22:16:24 -05:00
Nate Weaver
3af70f5c7c Make sure POST body is properly URL-encoded 2020-03-13 22:12:36 -05:00
Maurice Parker
cc0fd50ea2 Make podcast URL's have a lower priority than other URL's. Issue #1897 2020-03-13 12:57:43 -05:00
Maurice Parker
fe31ca8076 Normalize the URL if it was found in the HTML metadata. Issue #1896 2020-03-13 12:15:35 -05:00
Maurice Parker
229aada857 Normalize the URL if it was found in the HTML metadata. 2020-03-13 12:11:38 -05:00
Maurice Parker
7d8feba24b Remove file coordinator usage from account files. Issue #1821 2020-03-03 11:39:04 -08:00
Maurice Parker
0e72811429 Implement mark as unread window for accounts that need it. Issue #1407 2020-02-18 13:49:29 -08:00
Maurice Parker
2ae021960b Move account files to the documents directory and out of the shared container. Issue #1784 2020-02-12 16:21:48 -08:00
Nate Weaver
4ac8107f27 Don't unwrap now-non-optionals, and unwrap now-explicit optionals 2020-02-08 18:22:35 -06:00
Brent Simmons
c679d92e09 Make the Feedly tests build again — fix references to addOperation. 2020-02-05 22:37:43 -08:00
Brent Simmons
01fc60916e Move the operation queue from Account to ArticlesDatabase, which is the rightful owner. 2020-02-05 22:17:32 -08:00
Brent Simmons
d40eaed1f5 Begin moving the MainThreadOperationQueue from Account to ArticlesDatabase. 2020-02-05 21:23:23 -08:00
Brent Simmons
2d33de1205 Fix references to addOperation, which is now just add. 2020-02-05 21:18:29 -08:00
Maurice Parker
2017a2138f Change to only send the unread counts init notification once during program load. Issue #1772 2020-02-03 10:28:34 -08:00
Brent Simmons
0b2ec6473a Call the correct fetchUnreadCounts methd. 2020-02-01 15:16:24 -08:00
Brent Simmons
3f4c84e442 Use the new FetchUnreadCountsForFeedsOperation. 2020-02-01 15:01:47 -08:00
Brent Simmons
9628b3021b Create FetchUnreadCountsForFeedsOperation. 2020-02-01 15:00:59 -08:00
Brent Simmons
30cf8c6a08 Add, as a micro-optimization, a custom hash function for FeedIdentifier. 2020-02-01 15:00:36 -08:00
Kiel Gillard
b87882a919 Log failures attempting to add new feeds to a Feedly account to help debug #1691 2020-01-31 17:00:30 +11:00
Kiel Gillard
e5e7163f8e Improve the test coverage and add some documentation. 2020-01-31 07:55:50 +11:00
Kiel Gillard
a339b05bf8 Santizes right to left div elements from Feedly content. 2020-01-31 07:55:50 +11:00
Brent Simmons
dc4850b777 Merge branch 'ios-candidate' of https://github.com/Ranchero-Software/NetNewsWire into ios-candidate 2020-01-29 23:09:44 -08:00
Brent Simmons
35adaa7a8c Fetch the unread count for just one feed when that’s all that’s needed. Helps performance. 2020-01-29 23:09:38 -08:00
Brent Simmons
99fcfbfef5 Create FetchFeedUnreadCountOperation to fetch the unread count for a single feed. 2020-01-29 22:47:01 -08:00
Brent Simmons
26efb8895c Close the resultSet in FetchAllUnreadCountsOperation. 2020-01-29 22:45:55 -08:00
Maurice Parker
b53cbfcf2c Make sure completion handler is called when there are no active accounts. Issue #1727 2020-01-28 16:24:35 -07:00
Brent Simmons
dc9243dcc7 Make fetching all unread counts an operation. Cancel it when the account is suspending. Turning things like this into operations goes to fixing the dreaded 0xdead10cc crashes. 2020-01-27 23:00:48 -08:00
Nate Weaver
b9bba7b614 Update RSWeb 2020-01-27 23:02:01 -06:00
Brent Simmons
e61d2620de Merge branch 'ios-candidate' of https://github.com/Ranchero-Software/NetNewsWire into ios-candidate 2020-01-27 19:55:14 -08:00
Brent Simmons
5d38e79f38 Add FetchAllUnreadCountsOperation. Not using it yet, but we will be. 2020-01-27 19:55:10 -08:00
Maurice Parker
118ecd01b0 Fix option set bug in AccountBehaviors. 2020-01-27 20:05:07 -07:00
Brent Simmons
61ccf6fa1f Replace use of Dictionary(uniqueKeysWithValues) with a separate function that can handle duplicate keys without crashing. Fix #1671. 2020-01-21 22:03:33 -08:00
Kiel Gillard
fb69a2bc54 Fix the logging of Feedly errors. #1628. 2020-01-21 18:31:41 +11:00
Brent Simmons
bca3c4216c Merge branch 'ios-candidate' of https://github.com/Ranchero-Software/NetNewsWire into ios-candidate 2020-01-19 22:25:13 -08:00
Brent Simmons
70b57b9d4d Disable files with failing Feedly tests. This is meant to be temporary. 2020-01-19 22:25:06 -08:00
Brent Simmons
f9f4d70868 Make Feedly tests build again. 2020-01-19 22:19:54 -08:00
Maurice Parker
531c40a059 Escape special XML characters for external folder id. Issue #1659 2020-01-19 22:52:45 -07:00
Brent Simmons
f76385ce64 Merge branch 'ios-candidate' of https://github.com/Ranchero-Software/NetNewsWire into ios-candidate 2020-01-19 16:55:46 -08:00
Brent Simmons
a2bcdb1cfd Fix the progress indicator bug I had introduced in working on FeedlyOperation. Make sure FeedlyOperation calls downloadProgress.completeTask(), and make sure that all paths lead there. 2020-01-19 16:55:39 -08:00
Maurice Parker
53ba0bc9ac Fix so that Feedbin correctly stores the perma link in the correct field. 2020-01-19 17:15:21 -07:00
Brent Simmons
6181f416a4 Revise FeedlyOperation to work with MainThreadOperation properly. We’re still using inheritance — FeedlyOperation is a base class. I tried and failed to come up with a better solution. Everything other solution resulted in a lot of boilerplate code being replicated. 2020-01-19 14:19:06 -08:00
Nate Weaver
7ee1f99962 Updates for Data+RSCore changes 2020-01-18 19:18:58 -06:00
Nate Weaver
b35215d03b Update for pending RSCore String updates 2020-01-17 13:45:38 -06:00
Kiel Gillard
912a3acb35 Subscribing to a Feedly feed only downloads the first page worth of content, not each and every page. Maybe related to #1408. 2020-01-17 17:16:52 +11:00
Brent Simmons
e2e9a66bc5
Merge pull request #1635 from kielgillard/ios-candidate
Let Feedly users add to the uncategorized collection/folder.
2020-01-16 22:01:47 -08:00
Kiel Gillard
02cfc384c4 Makes the Feedly models immutable because they are used to represent API responses only and it improves a developer's ability to reason about how they're used in the codebase. Fixes #1629. 2020-01-17 16:47:21 +11:00
Kiel Gillard
c18575ea85 Let Feedly users add to the uncategorized collection/folder. 2020-01-17 15:25:57 +11:00
Maurice Parker
fb8d77fff1
Merge pull request #1631 from kielgillard/feedly-fix-tests-post-operations-surgery
Fix test failures by cancelling operations with the queue.
2020-01-16 13:45:36 -08:00
Kiel Gillard
f14ba07740 Fix test failures by cancelling operations with the queue. It seems operations no longer can cancel themselves. 2020-01-17 08:27:20 +11:00
Maurice Parker
4f36ec3b11 Add Update Credetials button to the error dialog when a Feedbin credentials error happens. Issue #1441 2020-01-16 13:50:30 -07:00
Maurice Parker
61b788a1de Provide user friendly account error for 403 status code (FORBIDDEN) 2020-01-16 12:17:47 -07:00
Brent Simmons
80542bee12 Add missing calls to super.run() in FeedlyOperation subclasses. 2020-01-15 22:51:00 -08:00
Brent Simmons
57af7526da Revise Feedly tests to use MainThreadOperationQueue; get them building again. They don’t pass, but at least they build. 2020-01-15 22:10:06 -08:00
Brent Simmons
39db00c022 Use MainThreadOperationQueue with Feedly syncing. 2020-01-15 21:30:37 -08:00
Nate Weaver
6eac3781ba Update to latest RSCore
Update use of OMPLString().
2020-01-13 22:20:57 -06:00
Kiel Gillard
325f220181 Ignore the remote article status if the sync database contains a pending (and therefore more recent) status. Fixes #1516. 2020-01-13 18:04:58 +11:00
Nate Weaver
e94985e7f2 Update to latest RSCore 2020-01-12 18:26:41 -06:00
Nate Weaver
42b4261793 Treat empty URLs as nil
Fixes #1612.
2020-01-12 03:29:56 -06:00
Kiel Gillard
745b5d8cb8 Fetch article contents from Feedly by ids rather than paging through streams up until the last successful sync date. Issues #1453 #1398 #1408 #1429 2020-01-11 10:45:45 +11:00
Brent Simmons
4ab5c25844 Add createStatusesIfNeeded API to Account, to use with syncing. (Needed for Feedly syncing, and could very well be needed for other systems too.) 2020-01-09 22:27:29 -08:00
Nate Weaver
5cceebad9c Set Mac deployment target to 10.14
Also remove duplicate declarations.
2020-01-09 19:16:19 -06:00
Brent Simmons
47f3e863b6 Delete articles older than the 90-day window. 2020-01-08 22:07:03 -08:00
Brent Simmons
c583c4d474 Fetch both read and unread orphaned statuses. 2020-01-06 18:18:27 -08:00
Maurice Parker
7824939c30 Make OPML generate in a consistent order when the Web Feed name is the same. Issue #1545 2020-01-06 13:58:51 -07:00
Kiel Gillard
6922b6ddec Use string-based key paths instead of Swift key paths for FeedlyOperation. #1481 2020-01-06 08:59:08 +11:00
Maurice Parker
c3fbf88fbb Add check so that we don't update article statuses for articles that we have pending statuses to send. Issue #1515 2020-01-02 18:21:18 -07:00
Brent Simmons
e773c11571
Merge pull request #1509 from timothyekl/account-test-api-updates
Update Account tests for new async API
2020-01-02 16:12:17 -08:00
Tim Ekl
44e920b18b Don't explicitly name error variables
Following the resolution of #1512, start using the implicit `error`
variable inside `catch` blocks instead of explicitly declaring `e`
everywhere.
2020-01-02 13:31:06 -08:00
Kiel Gillard
2ee50054dc Indicate FeedlyOperations are asynchronous. 2020-01-02 10:00:09 +11:00
Kiel Gillard
f455bcec16 Models the feed website url of feedly articles as an optional since it seems the Feedly API will not always provide one. Issue #1449. 2020-01-02 09:34:24 +11:00
Tim Ekl
5ac18b14a7 Add missing expectations to send statuses tests
f82be27666 flipped around calls to `selectPendingCount(_:)` so that it
respected the new async nature of the method; however, it neglected to
add enough XCTestExpectations to keep the test methods running through
the callbacks. Add those here.
2020-01-01 13:39:17 -08:00
Brent Simmons
cea34c9e49 Update RSCore. 2019-12-31 18:58:57 -08:00
Tim Ekl
e4c84bc501 Add two missing expectation fulfillments
It looks like two tests in FeedlySetStarredArticlesOperationTests
created but never referenced XCTestExpectation instances. Based on the
other nearby tests, add a call to `fulfill()` inside the associated
completion block after the rest of our test assertions are done.
2019-12-31 19:41:32 -06:00
Tim Ekl
6c10774c4a Fix build errors stemming from FeedlyTestSupport
There was one call to a throwing function inside
`checkArticles(in:correspondToStreamItemsIn:)` which was not
appropriately marked with `try`. Add that keyword, and then bubble out
the chain of errors through additional layers of helpers to the
enclosing test:

* This `checkArticles` variant was called by two others
* …one of which was used in `testAddNewFeedSuccess()`
* …another of which was used in various `verify` sync helpers
* …which were referenced from `testSyncing()`, a test case method

None of these involved any particular async hoops to jump through, and
since the top-level callers were all test functions, we can count on
XCTest to handle any errors thrown — no additional `catch` or handling
on our part is necessary.
2019-12-31 19:36:42 -06:00
Tim Ekl
711aca3d1b Fix build errors in Feedly test support
Two more cases of completion blocks taking Results, requiring a
do/catch/Result.get() to unwrap.

This commit deliberately leaves one build error for a more comprehensive
fix, since it occurs in a helper function that will have broader
fallout.
2019-12-31 19:29:44 -06:00
Tim Ekl
152b1f2b8a Fix errors in Feedly sync unread operations tests
Yet more completion blocks with Results; apply the usual
do/catch/Result.get() dance.
2019-12-31 19:27:47 -06:00
Tim Ekl
13b227a461 Fix errors in Feedly set starred operations tests
More of the same: completion blocks which take Results need
do/catch/Result.get().
2019-12-31 19:24:36 -06:00
Tim Ekl
f12e8b4a4a Fix errors in starred articles operations tests
Pull the same do/catch/Result.get() trick as previously for completion
blocks which now take Results. `try` a few throwing calls.
2019-12-31 19:11:37 -06:00
Tim Ekl
6a4f3fb11e Fix build errors in sync stream operations tests
Prefix two throwing calls with `try`. Label the enclosing test functions
with `throws` so the XCTest machinery helps us with error reporting.
2019-12-31 19:08:29 -06:00
Tim Ekl
6583688e38 Fix errors in Feedly unread operations tests
Most fetch completion blocks took a parameter that was expected to be
some result data type, but is now a Result. Rename these parameters;
wrap their existing bodies in do/catch blocks; and recreate the original
underlying variable using the result of `Result.get()`.

Prepend a few synchronous calls that started throwing with `try` along
the way.
2019-12-31 19:06:10 -06:00
Brent Simmons
51faf77e59 Update isExecuting and isFinished in a way that should make NSOperationQueue happy. Hopefully this fixes a mystery crash bug. 2019-12-31 15:40:05 -08:00
Tim Ekl
ae1651fad1 Fix errors in Feedly update-feeds operation tests
Mark some throwing calls with `try`; mark the enclosing test functions
with `throws`, letting the XCTest framework handle error reporting for
us.
2019-12-31 15:55:59 -06:00
Tim Ekl
f82be27666 Resolve errors in Feedly statuses operation tests
Add `error` parameters to completion blocks which now pass them. Assert
these errors are always nil in the existing tests.

Flip calls to `selectPendingCount()` so they are async, with a
completion block that asserts about the results instead of asserting
about the return value. Since the closure takes a Result, unwrap it in a
do/catch block at each site; `XCTAssertNoThrow` doesn't help us bubble a
value out from `Result.get()`, and I'd rather not use `try!` here. There
might be a stylistic discussion to be had about this unwrapping, though.
2019-12-31 15:52:54 -06:00
Kiel Gillard
3b47edfba7 Models the feed identifier of feedly articles as an optional since it seems the Feedly API will not always provide one (despite the API documentation).
Additional, more elegantly handle the failure to parse an article when Feedly does not provide a matching feed.
2019-12-31 08:47:27 +11:00
Brent Simmons
388886a355 Base our active articles window on dateArrived instead of datePublished. This reverses a recent change that led to some bugs. 2019-12-28 22:20:13 -08:00
Brent Simmons
ac519c5c90 Add new and updated articles to the in-memory cache when saving articles. 2019-12-28 21:19:02 -08:00
Brent Simmons
26bb2b8eaf Remove references to Article.bannerImageURL. We can bring it back if/when we start using it. 2019-12-28 20:53:36 -08:00
Brent Simmons
aeaeac61fc Get rid of DatabaseArticle entirely. Cache Article objects. This will make fetches faster *and* save memory. 2019-12-27 22:47:02 -08:00
Brent Simmons
3a33c38d5c Use an inner function in FeedbinAccountDelegate.refreshMissingArticles. I like this pattern because 1) it keeps the switch statement and its cases near each other, and 2) it puts all the actual processing in a single function, which makes it easier to see where processing happens. 2019-12-17 21:24:17 -08:00
Brent Simmons
db564d9cf9 Remove all references to fetchArticleIDsForStatusesWithoutArticles. Use fetchArticleIDsForStatusesWithoutArticlesNewerThanCutoffDate instead. 2019-12-17 21:15:20 -08:00
Maurice Parker
236f581d95 Update Feedbin to use fetchArticleIDsForStatusesWithoutArticlesNewerThanCutoffDate for missing articles. 2019-12-17 17:43:08 -07:00
Kiel Gillard
40dacd6522 Update set starred articles operation to honour database errors. 2019-12-18 09:45:30 +11:00
Kiel Gillard
5a9b138a9d Update set unraed articles operation to honour database errors. 2019-12-18 09:42:08 +11:00
Kiel Gillard
7ddcb2fc8e Add optional completions to avoid race conditions involving these marked statuses. 2019-12-18 09:41:45 +11:00
Kiel Gillard
6fb0e2e0d0 Honour the error case when ingesting read and star statuses 2019-12-18 09:32:58 +11:00
Kiel Gillard
bd307cbb6c Give the FeedlySyncStarredArticlesOperation a delegate so that if the database becomes suspended, the remainder of the sync operation cancels. 2019-12-18 09:26:57 +11:00
Kiel Gillard
311f5b2e81 Check the account update error when update a Feedly account and finish with an error, indicating to its delegate that remaining operations should cancel. 2019-12-18 09:19:00 +11:00
Maurice Parker
73d6d5f5d5 Merge branch 'master' of https://github.com/brentsimmons/NetNewsWire 2019-12-17 14:29:53 -07:00
Brent Simmons
948d366a4e Created fetchArticleIDsForStatusesWithoutArticlesNewerThanCutoffDate — this gets articleIDs of articles we care about. They’re not deleted. They’re either (starred) or (unread and newer than cutoffDate). Also: it’s async. Use this instead of fetchArticleIDsForStatusesWithoutArticles, which is deprecated. 2019-12-17 13:28:48 -08:00
Maurice Parker
b637a6f01b Process the article downloads in smaller transaction groups to make possible to interrupt. Issue #1437. 2019-12-17 14:28:04 -07:00
Maurice Parker
7192a6893e Change Feedbin to always check the error from Account.update. 2019-12-17 13:25:01 -07:00
Brent Simmons
567a971a1c Remove no-longer-used fetchStatuses functions. 2019-12-16 23:09:46 -08:00
Brent Simmons
704ccb2927 Remove no-longer-used ensureStatuses functions. 2019-12-16 23:06:21 -08:00
Brent Simmons
e2db7b4a5d Fix bug where completion wasn’t getting called on the main thread. 2019-12-16 22:56:38 -08:00
Brent Simmons
e8045b0e8b Merge branch 'master' of https://github.com/brentsimmons/NetNewsWire 2019-12-16 22:46:24 -08:00
Brent Simmons
15184aa3f1 Finish changes mandated by DatabaseQueue changes. 2019-12-16 22:45:59 -08:00
Brent Simmons
3c8097404f Make progress on update ArticleFetcher to handle DatabaseQueue changes. 2019-12-16 17:04:00 -08:00
Brent Simmons
51393967e2 Finish making Account and AccountManager compatible with DatabaseQueue changes. 2019-12-16 17:03:41 -08:00
Brent Simmons
9516392c61 Make two more Feedly operations compatible with DatabaseQueue changes. 2019-12-16 17:03:05 -08:00
Brent Simmons
3883d24ebe Simplify FeedlySetUnreadArticlesOperation. 2019-12-16 16:26:35 -08:00
Brent Simmons
67f65545b3 Continue changes mandated by DatabaseQueue changes. 2019-12-16 15:55:37 -08:00
Brent Simmons
e700da9410 Mark appropriate functions as throws. 2019-12-16 15:32:08 -08:00
Brent Simmons
f2052f110f Make updateUnreadCounts compatible with database changes. 2019-12-16 14:59:15 -08:00
Brent Simmons
9a36051d8a Remove a reference to database.isSuspended. 2019-12-16 14:43:25 -08:00
Brent Simmons
908652df51 Make just one database call in fetchUnreadCounts — use fetchAllUnreadCounts and process the UnreadCountDictionary. 2019-12-16 14:43:11 -08:00
Maurice Parker
9dad3f0540 Pass the account metadata to delegate on initialization 2019-12-16 14:19:55 -07:00
Brent Simmons
aa5859ff27 Use makeDatabaseCalls/switch pattern in ArticlesTable. 2019-12-16 12:49:46 -08:00
Brent Simmons
3981312d6f Update sync code to handle async selectForProcessing. 2019-12-16 12:49:07 -08:00
Brent Simmons
7b7346d010 Make selectForProcessing async. 2019-12-16 11:08:47 -08:00
Brent Simmons
7a134740ec Make SyncDatabase selectPendingCount async. 2019-12-16 10:50:13 -08:00
Brent Simmons
894d3909a3 Make SyncDatabase work with DatabaseQueue changes. 2019-12-15 23:07:28 -08:00
Brent Simmons
e0f61c362b Switch to using the new DatabaseError. 2019-12-15 22:37:45 -08:00
Brent Simmons
1f65b3fc87 Remove isSuspended property; add a try! when creating tables. 2019-12-15 22:28:48 -08:00
Brent Simmons
df45484205 Update Articles.framework to use revised DatabaseQueue — use Result types and throwing functions. 2019-12-15 22:09:27 -08:00
Brent Simmons
9cb0bcbc94 Make ArticlesDatabase.swift compatible with the DatabaseQueue revisions. 2019-12-15 17:26:45 -08:00
Maurice Parker
58b24f3349 Rename callback: to completion: 2019-12-14 18:01:34 -07:00
Maurice Parker
43bf65b7a6 Rename occurrences of completionHandler to completion. 2019-12-14 17:14:55 -07:00
Brent Simmons
45cdb7bea3 Create a fetchStatuses method that will optionally create statuses if needed. Callback gets Set<ArticleStatus> — or nil if the app is suspended. 2019-12-11 22:28:01 -08:00
Maurice Parker
e90c6d1395 Guard against empty queries. Issue #1431 2019-12-11 13:19:22 -07:00
Maurice Parker
e303d64c1d Refresh feeds and sidebar when downloaded articles update all their unread counts. Issue #1430 2019-12-10 18:17:54 -07:00
Maurice Parker
b8ef6c7549 Don't process OPML file if it hasn't changed since it was last produced. Issue #1428 2019-12-10 14:10:07 -07:00
Maurice Parker
358f386c4b Change progress view to use the most recent last fetch end time. Issue #1383 2019-12-09 18:34:26 -07:00
Maurice Parker
5872893293 Prevent calls to database while it is suspended. Issue #1424 2019-12-09 14:06:03 -07:00
Kiel Gillard
2401b0be1b Fix compilation issues with tests after Account API changes. 2019-12-09 18:54:29 +11:00
Brent Simmons
e3e07e771d Remove maximumArticleCutoffDate; just use articleCutoffDate. 2019-12-08 22:38:00 -08:00
Brent Simmons
cf84021fab Make NetNewsWire’s article display window 90 days. It was 93 days, which is weird, even though there was a good reason (3 * 31). 2019-12-08 22:21:53 -08:00
Brent Simmons
03fd162d37 Use datePublished when fetching articles for a feed for display in the UI. This defines the window instead of dateArrived — though dateArrived is still the fallback when datePublished is nil. 2019-12-08 22:17:25 -08:00
Brent Simmons
03f95e4788 Make article indexing more efficient. 2019-12-08 17:14:20 -08:00
Brent Simmons
f7bc920f11 Merge branch 'master' of https://github.com/brentsimmons/NetNewsWire 2019-12-08 11:49:09 -08:00
Brent Simmons
cb96fe64ed Fix bug where search indexing wasn’t actually happening. 2019-12-08 11:49:02 -08:00
Maurice Parker
a3dc787fb0 Change to call completion when exiting early. Issue #1421 2019-12-08 10:00:20 -07:00
Brent Simmons
0b87531f2f Make fetchStarredArticles an async call. Also have it respect subscribed-to feed IDs. 2019-12-07 22:23:44 -08:00
Brent Simmons
a561ea9484 Fetch unread article IDs async. Also: fetch only for feeds currently subscribed-to. Fix #1218. 2019-12-07 20:57:23 -08:00
Maurice Parker
0759c303cc Don't query unread counts if database is suspended 2019-12-07 16:57:21 -07:00
Maurice Parker
a75ce688d9 Update to latest RSWeb so that refreshAll completion handler no longer gets called early 2019-12-07 16:26:38 -07:00
Brent Simmons
ffaa630f34 Improve performance of finding updated articles by improving performance of comparing articles by improving performance of comparing authors. 2019-12-07 14:23:51 -08:00
Brent Simmons
b61cd3a869 Hash just the webFeedID in WebFeed’s hash function. This will almost always be unique, and it helps performance because 1) string hashing is slow, and 2) we update sets of WebFeeds kind of often. 2019-12-07 12:05:58 -08:00
Maurice Parker
d4722f766f Make sure local accounts can't initiate processing after suspendNetwork is called. Issue #1401 2019-12-06 16:06:54 -07:00