Commit Graph

1129 Commits

Author SHA1 Message Date
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
Kiel Gillard
d5331c08c8 Improve Feedly's suspension support. #1396 2019-12-07 07:59:45 +11:00
Brent Simmons
66c9d287bb
Merge pull request #1403 from kielgillard/feedly-report-crawled
Feedly articles report the crawled and recrawled date…
2019-12-05 21:52:43 -08:00
Kiel Gillard
f58bb38e8f Remove unused code. 2019-12-05 19:02:40 +11:00
Kiel Gillard
d9a2ca8e7e Adds unit tests for adding a new feed with Feedly. #1300 2019-12-05 19:02:40 +11:00
Kiel Gillard
7563d1b2c6 Search Feedly for the best feed (and its identifier) for the URL entered when adding a new feed. #1300 2019-12-05 19:02:40 +11:00
Kiel Gillard
fcd6d15b4c Feedly articles report the crawled and recrawled date for the date published and updated values. 2019-12-05 18:55:28 +11:00
Brent Simmons
66c7a9532c Remove references to attachments in a couple more spots. 2019-12-04 22:45:15 -08:00
Brent Simmons
ebd7c68396 Merge mac-release — remove attachments. 2019-12-04 22:36:08 -08:00
Brent Simmons
a5c1341b0c Resume databases for all accounts before resuming anything else, so that notifications don’t trigger database calls. 2019-12-04 22:11:20 -08:00
Maurice Parker
95c1b36fe7 Change order of suspending steps to prevent work from going to a suspended queue. Issue #1400 2019-12-04 17:27:39 -07:00