Commit Graph

1112 Commits

Author SHA1 Message Date
Jeremy Beker 15ae97f7c9
Merge branch 'master' into google_reader_compatible_syncing 2019-06-19 13:53:30 -04:00
Maurice Parker d794240bd9 Merge branch 'mac-candidate' 2019-06-19 11:31:38 -05:00
Jeremy Beker d87f68a006
Renamed GoogleReaderCompatible to just Reader 2019-06-19 12:25:37 -04:00
Jeremy Beker 52cb066dd4
Cleanup unused objects 2019-06-19 07:56:25 -04:00
Jeremy Beker 97585326c8
Merge branch 'master' into google_reader_compatible_syncing
# Conflicts:
#	iOS/Settings/SettingsAddAccountView.swift
2019-06-18 15:38:59 -04:00
Maurice Parker 35866d558d Only display active accounts for OPML import on iOS 2019-06-17 15:50:17 -05:00
Maurice Parker 47a7fa420d Fixed error caused by updating to the latest from RSWeb 2019-06-16 14:55:48 -05:00
Maurice Parker f6677367ec use refresh indicator to track all network activity. Issue #759 2019-06-16 14:48:50 -05:00
Jeremy Beker 42203c0170
FIrst pass at OPML import. Broken. 2019-06-16 15:14:20 -04:00
Jeremy Beker adf53add3a
removed unused page number function. 2019-06-16 13:15:36 -04:00
Jeremy Beker 17439c8c5e
Disbale and rename tags functional. 2019-06-16 13:14:23 -04:00
Jeremy Beker 41af536212
Rename feeds 2019-06-15 16:13:08 -04:00
Jeremy Beker 62afd312f0
Subscribing and loading initial articles functioning. 2019-06-15 15:46:13 -04:00
Jeremy Beker 029bcbda96
Merge cleanup. 2019-06-15 13:30:12 -04:00
Jeremy Beker f54bc3569b
Merge branch 'master' into google_reader_compatible_syncing
# Conflicts:
#	Frameworks/Account/Account.swift
#	submodules/RSWeb
2019-06-15 12:34:50 -04:00
Jeremy Beker e5eb8df333
Add feed working on backend, thread crash inside account code. 2019-06-15 12:27:21 -04:00
Maurice Parker 1208e319de Updated to the Sparkle 1.21.3 2019-06-15 09:54:16 -05:00
Jeremy Beker 5490dac86d
Need to use rawValue to properly mark starred/read 2019-06-15 08:21:13 -04:00
Jeremy Beker 2128afd465
Refactor endpoints into an enum 2019-06-13 12:44:20 -04:00
Jeremy Beker dac166cf58
Refactor status change calls. 2019-06-13 09:35:01 -04:00
Maurice Parker 871dbbb752 moved dispatch group notify to background thread as it was deadlocked with the dispatch group wait on app exit 2019-06-12 17:28:54 -05:00
Jeremy Beker 45c15c96aa
Marking read/unread functioning. 2019-06-12 16:41:44 -04:00
Maurice Parker c1e89a2ae0 Updated to the latest RSWeb 2019-06-12 15:09:06 -05:00
Jeremy Beker 69c947bd65
Mark read/unread structure. 2019-06-11 16:42:28 -04:00
Jeremy Beker dc60ebf1f8
Unread status is properly set when articles are downloaded from backend 2019-06-11 15:37:21 -04:00
Maurice Parker 17c04b2aef Show the refresh progress bar when an OPML import starts. Issue #732 2019-06-10 16:17:54 -05:00
Jeremy Beker 9144ee71e5
Request article IDs and content. 2019-06-10 16:53:35 -04:00
Maurice Parker 93fbbd4cc3 Make sure that FeedFinder and InitialDownloader are running on the main thread. 2019-06-10 08:21:03 -05:00
Maurice Parker f4e0cfaf2b Fix folder renaming issue that occurs for Feedbin when the tag doesn't exist at Feedbin. Issue #724 2019-06-07 05:03:54 -05:00
Maurice Parker eb71e88845 Resolved issue where local account feed finder could lock up the UI if an error was thrown. Issue #720 2019-06-06 19:46:42 -05:00
Maurice Parker e7ec59f31f
Merge pull request #725 from tgt/tgt/feedbin-fixes
Various Minor Feedbin Fixes
2019-06-06 15:27:06 -05:00
Maurice Parker 1cfc3bceef Fixed restore folder functionality for Feedbin. 2019-06-06 15:22:25 -05:00
Tom Grimwood-Taylor b0a24b6f17 Revert "Fix updating local feed list when no remote feeds."
cd85e52fdd
2019-06-06 14:23:06 +01:00
Tom Grimwood-Taylor 534da0bca6 Move call to sendArticleStatus to delegate. 2019-06-06 14:22:29 +01:00
Tom Grimwood-Taylor 0447694142 Fix feed selection when the max feed score is 0.
This occurs, for example, when searching for “macrumors.com” and adding
to the Feedbin account. All four feeds have a score of 0 since their
source is set as HTMLLink. This would also fix a case in which there are
two feeds: one with a negative score and one with a score of 0.

Since the method uses a Set the feed selected when there are multiple
feeds with an identical maximum score will be random.
2019-06-06 10:31:00 +01:00
Tom Grimwood-Taylor ac9057299a Remove edited name when remote feed name changes. 2019-06-06 10:31:00 +01:00
Tom Grimwood-Taylor f3505e4537 Fix posting name notifications when name changes. 2019-06-06 10:31:00 +01:00
Tom Grimwood-Taylor b4d7042a7b Ensure status changes are sent before refresh.
When the refresh button was manually clicked a full refresh would occur,
but locally changed statuses wouldn't be sent. This meant the statuses
of items in NetNewsWire would revert to their remote values until an
automatic status sync was triggered.
2019-06-06 10:31:00 +01:00
Tom Grimwood-Taylor 3c1b84dd73 Fix a Feedbin subscriptionID going out of sync.
If, for example, a user deleted a feed and recreated it on the server
without a sync in between, the subscription ID for the feed would update
on the server, but remain unchanged locally. If the user then wanted to
delete or rename the feed they'd get a 404 error.
2019-06-06 10:31:00 +01:00
Tom Grimwood-Taylor cd85e52fdd Fix updating local feed list when no remote feeds.
When there were no remote feeds the logic to remove local
feeds was skipped.
2019-06-03 17:09:17 +01:00
Jeremy Beker 6b147e7dc9
Add feeds to tags. Set iconURLs
remove unused functions.
2019-06-01 17:05:55 -04:00
Jeremy Beker a0efc7fda9
Cleanup tag names, fetch subscriptions 2019-06-01 08:08:19 -04:00
Jeremy Beker 76d1daf122
Cleanup merge issues/API changes 2019-06-01 06:54:10 -04:00
Maurice Parker 2d91e64148 Provide a better error message when encountering feed not found and already subscribed errors 2019-05-31 17:24:43 -05:00
Maurice Parker 8e0c857810 Update the extract page number function to make it more readable 2019-05-31 13:38:33 -05:00
Jeremy Beker 98c32b9987
Merge branch 'master' into google_reader_compatible_syncing 2019-05-31 09:54:25 -04:00
Maurice Parker 88b2775076 Make sure that an account doesn't try persist to the disk in the time that it is logically deleted and when it is actually deallocated 2019-05-31 08:05:26 -05:00
Maurice Parker fec3c69f4a Remove Feedbin api workaround for unpropagated mode=extended parameter 2019-05-31 07:54:12 -05:00
Maurice Parker 10296a1b74 Clear the feed metadata on Feedbin feed delete 2019-05-31 07:47:05 -05:00
Maurice Parker d602f894f6 Fix link parsing bug that causes crash 2019-05-31 07:22:28 -05:00
Maurice Parker 0ddb47aa32 Refactor feed finder to make it threadsafe 2019-05-30 17:35:08 -05:00
Jeremy Beker 46e21f57e8
Decoding of tags working. 2019-05-30 16:01:56 -04:00
Maurice Parker 30c21bb125 Enable folders to be dropped in a move or copy between accounts 2019-05-30 14:36:21 -05:00
Maurice Parker 1352dda8aa Modify Feedbin feed deletes so that they emulate how the local account feed deletes work. 2019-05-30 10:12:34 -05:00
Jeremy Beker fdc0374c4f
Ensure credentials are available for use
Need to load metadad first
2019-05-30 07:48:34 -04:00
Maurice Parker 7bec55c90b Add missing completion call that was causing restored feeds to not show 2019-05-29 21:39:53 -05:00
Maurice Parker 51284b5aa4 Rename deleteFeed to removeFeed to be more consistent with other API's 2019-05-29 21:04:44 -05:00
Maurice Parker 527e677934 Rename deleteFolder to removeFolder to make the API more consistent 2019-05-29 20:53:00 -05:00
Maurice Parker f4bc17c8f1 Refactor addFeed and removeFeed usages to be more consistent 2019-05-29 20:47:52 -05:00
Maurice Parker 5e3fcfd955 Correct how feeds were deleted so that only the feed in the correct container was deleted 2019-05-29 17:56:26 -05:00
Jeremy Beker aa6dfe8a08
Rework to store endpoint URL in metadata
Endpoint URL did not belong with credentials. This breaks it out and stores it in the account metadata. Updates validation code to take it as a parameter.
2019-05-29 15:16:09 -04:00
Jeremy Beker 0df86e5761
Authentication working
* Updates to use new API style per discussion with Maurice
* Credential validation functioning
2019-05-29 10:54:52 -04:00
Maurice Parker 0648053417 Enforce tag specific drop validation (can't copy to the account level) 2019-05-28 17:42:19 -05:00
Maurice Parker cf016c5d7d Prevent Feedbin in account copy from putting a feed in both the root account and a folder at the same time. 2019-05-28 13:38:40 -05:00
Jeremy Beker 84dbdf25e2
Google Reader API Account Provider and initial integration
* Creation of account classes (based on FeedBin)
* Integration on Mac side into account dialog
* Initial authentication call works and extracts auth token, but no where to put it right now.
2019-05-28 13:08:15 -04:00
Maurice Parker 493abbb609 Refactor create feed functionality to increase code reuse and encapsulation 2019-05-28 09:45:02 -05:00
Maurice Parker c7b61f7d87 Enable copy between local accounts. 2019-05-27 18:01:24 -05:00
Maurice Parker 61f9a66d74 Change so that we fire off status update immediately if the number of pending status changes exceeds 100. Issue #658 2019-05-27 12:03:12 -05:00
Maurice Parker 886b82f3bd Fix issue where unread and unstar statuses were getting lost if there wasn't already an article. Issue #708 2019-05-26 21:05:05 -05:00
Maurice Parker 7e6db47956 Add extended mode for Feedbin entries to get avatar url. Issue #669 2019-05-26 18:35:54 -05:00
Brent Simmons e974d788ff Wrap OPML import in BatchUpdate. This makes it pretty much instant. Fix #653. 2019-05-26 14:45:09 -07:00
Maurice Parker 32712533d1 Fixed duplicate adds for local account folder feed adds. Issue #701 2019-05-26 12:17:38 -05:00
Maurice Parker c61949bc04 Add account name to network error messages and prevent background iOS errors from displaying alerts 2019-05-26 11:54:32 -05:00
Maurice Parker 5f98f0d2fc Correct usage of weak self in completion handlers 2019-05-22 15:40:34 -05:00
Maurice Parker a406fa9d4d Enhance error handling to make syncing more resilient to network failures. 2019-05-21 19:15:24 -05:00
Maurice Parker d289bbea94 Fix crashing bug caused by nesting update statements. 2019-05-21 17:59:33 -05:00
Maurice Parker 8816de4a0e Fix issue where new Feeds added to a folder also got left in the account container. 2019-05-21 10:26:11 -05:00
Maurice Parker d9458c8980 Make progress indicator more accurate 2019-05-21 08:34:05 -05:00
Maurice Parker 31cc3b609c Make delete animation correct for deletes and restores by wrapping them in BatchUpdates. Issue #667 2019-05-20 18:05:28 -05:00
Maurice Parker 8e7b1c8454 Make sure the statuses get updated before the unread count query executes. Issue #670 2019-05-20 17:08:16 -05:00
Maurice Parker a5d6e5403e Add additional sql check to ensure we don't pick up deleted articles when querying for missing articles 2019-05-20 13:55:26 -05:00
Maurice Parker 59ea5cadec Add status syncing to iOS 2019-05-20 13:51:08 -05:00
Phil Viso 1f8463d091 Merge branch 'master' of https://github.com/brentsimmons/NetNewsWire into iPadPopover
# Conflicts:
#	iOS/Settings/AddLocalAccountViewController.swift
#	iOS/Settings/DetailAccountViewController.swift
#	iOS/Settings/Settings.storyboard
2019-05-19 19:03:50 -05:00
Maurice Parker 48e19c23a7 Set content type for Feedbin OPML Import. 2019-05-19 18:19:08 -05:00
Phil Viso bce45d28e4 Updated all iOS references to default local account new to be device specific 2019-05-19 16:52:21 -05:00
Maurice Parker 80e1888244 Rename AccountsDidChangeNotification to AccountsDidChange to match other notification names. 2019-05-19 15:51:08 -05:00
Brent Simmons 7bd4520746 Remove unused weak self. (Was causing warning in Xcode.) 2019-05-19 11:33:48 -07:00
Maurice Parker c7f02150f9 Make sure we go and get missing articles when we add a new feed. 2019-05-19 10:43:45 -05:00
Maurice Parker 9c159d21f6 Retrieve articles when we have a status but don't have an article on full refresh. 2019-05-17 14:56:27 -05:00
Maurice Parker 0a9bf2aef0 Prevent more than one OPML import from being run at the same time. 2019-05-17 10:44:22 -05:00
Maurice Parker b89f088917 Switch to using the new OPML import service 2019-05-17 10:04:13 -05:00
Maurice Parker 87512a64a5 Removed old TODO and update to latest RSWeb 2019-05-16 11:01:44 -05:00
Maurice Parker d8e6355b1e Fix bug where restoring a feed in a folder could leave the feed in the account container 2019-05-16 10:33:58 -05:00
Maurice Parker 3986e00bf7 Fix bug where account unread counts weren't changing with async api calls 2019-05-16 09:54:19 -05:00
Maurice Parker 5f65fba9e2 Fix bug that prevented last unread or last unstrap from changing correctly. 2019-05-16 06:01:10 -05:00
Maurice Parker 6882b152d9 Add timer to trigger article status sync process. 2019-05-15 17:21:58 -05:00
Maurice Parker 6be6c6a682 Add send sync database contents to Feedbin 2019-05-15 11:52:56 -05:00
Maurice Parker b1303661b2 Save article statuses to new sync database as they are created 2019-05-14 18:24:19 -05:00
Maurice Parker f449ed9608 Make sure progress gets cleared incase the last page adjustment is inaccurate 2019-05-14 17:39:55 -05:00
Maurice Parker 30273795a8 Delegate article marking functionality to the account delegate 2019-05-14 15:34:05 -05:00
Maurice Parker 1984af4664 Add download progress for Feedbin accounts 2019-05-14 13:10:07 -05:00
Maurice Parker e31e1a4d60 Save article statuses from articles we have not received yet 2019-05-14 10:06:29 -05:00
Maurice Parker 62d154d0f2 Add download syncing of article statuses 2019-05-14 06:20:53 -05:00
Maurice Parker 39a337d096 Stub out syncing article state 2019-05-13 17:04:12 -05:00
Maurice Parker eede1cc7eb Add initial feed download for Feedbin. 2019-05-13 11:18:54 -05:00
Maurice Parker ccac456d77 Change to use the entries.json service for Feedbin instead of the per feed one 2019-05-13 10:29:34 -05:00
Maurice Parker c4ce93e96a Set default read state for Feedbin articles to read when syncing 2019-05-13 08:32:03 -05:00
Maurice Parker c47fee2384 Delete unused parameters (dead code) 2019-05-13 07:17:50 -05:00
Maurice Parker 20388eff46 Change how completion handlers work for refreshArticles so that we can tell for sure when all the articles have been downloaded and updated in the database 2019-05-13 06:34:27 -05:00
Maurice Parker 2684b92a67 Added service calls for unread and starred entries 2019-05-13 03:13:06 -05:00
Maurice Parker 1b22abbbfc Make sure a refresh happens after an OPML import. 2019-05-12 19:31:29 -05:00
Maurice Parker f4510e57e5 store last article fetch time in account metadata 2019-05-12 19:17:16 -05:00
Maurice Parker 9c676f29f8 add articles download for Feedbin 2019-05-12 18:32:32 -05:00
Maurice Parker 4ed1b8a66a Move ConditionalGetKeys as they are account type specific 2019-05-12 08:47:27 -05:00
Maurice Parker 60895fc7fa Restrict Feedbin to a maximum of 1 concurrent connection to keep us under Feedbin's 250 requests per second rate limit 2019-05-12 07:22:33 -05:00
Maurice Parker 51c2527da2 Add OPML import for Feedbin. 2019-05-11 16:07:27 -05:00
Maurice Parker 6f92cd1a73 Refactor to differentiate between loading the Subscriptions.opml file and importing an external OPML file as they now need separate behaviors 2019-05-11 12:26:23 -05:00
Maurice Parker 5200e49175 Capture 401 http status codes as already subscribed error when creating a Feedbin subscription 2019-05-10 10:40:02 -05:00
Maurice Parker fd8a973084 Add already subscribed error to LocalAccountDelegate and updated iOS to work with latest Account API 2019-05-10 10:22:28 -05:00
Maurice Parker fe70723eb4 Use best feed specifier code to determine which Feedbin option to use when creating a feed 2019-05-10 10:14:24 -05:00
Maurice Parker 75fbd9e3eb Add folder delete undo support 2019-05-09 18:20:09 -05:00
Maurice Parker 23b43ecc07 Add undo for feeds 2019-05-09 16:09:21 -05:00
Maurice Parker d4bfab2da6 Fix delete folder bug 2019-05-09 13:35:40 -05:00
Maurice Parker cda8acc66c Add the ability to move feeds between folders for Feedbin 2019-05-09 13:31:18 -05:00
Maurice Parker 50d3a5799c added subscription delete 2019-05-09 07:25:45 -05:00
Maurice Parker 49116fd8e3 Add subscription id to Feed so that we can correctly rename Feedbin subscriptions 2019-05-08 18:13:54 -05:00
Maurice Parker 06626f10a7 Add feed rename 2019-05-08 17:55:53 -05:00
Maurice Parker 43d32b1281 Add create Feedbin feed 2019-05-08 17:41:19 -05:00
Maurice Parker 72c92587d2 Keep feedID and feedURL better separated 2019-05-08 09:54:55 -05:00
Maurice Parker f12494cc31 Add some debug logging 2019-05-08 08:20:29 -05:00
Maurice Parker e52dc84f13 added create subscription service 2019-05-08 06:56:15 -05:00
Maurice Parker c5b0bfcd91 Save feed folder relationship identifier 2019-05-07 18:34:45 -05:00
Maurice Parker 52e5e43d10 Add download feed to folder relationships syncing 2019-05-07 17:41:32 -05:00
Maurice Parker ae61d36c7d Change FeedbinAccountDelegate to use BatchUpdate 2019-05-07 11:10:00 -05:00
Maurice Parker 7f9055fe78 Add download subscriptions and faviconURLs 2019-05-07 10:51:41 -05:00
Maurice Parker d6ae740305 Added folder (tag) delete for Feedbin 2019-05-06 17:34:41 -05:00
Maurice Parker b7e2df1a68 Add Folder rename for Feedbin 2019-05-06 10:53:20 -05:00
Maurice Parker 51a1562e4b make slight change to how not modified responses are handled 2019-05-06 05:28:02 -05:00
Maurice Parker 18f2c7b723 Fix bug that prevented http caching from working 2019-05-05 17:46:53 -05:00
Maurice Parker 15a0ba89d7 Add folder syncing for Feedbin account 2019-05-05 15:41:20 -05:00
Maurice Parker 29f9cf83b1 Add HTTP Caching for Feedbin (conditional get) 2019-05-05 08:44:57 -05:00
Maurice Parker 35160aaf75 Rename AccountSettings to AccountMetadata to show that more than settings are stored in it and that it is analogous to FeedMetadata 2019-05-05 07:49:59 -05:00
Maurice Parker 6e7477fd89 Modify AccountSettings so that it works like FeedMetadata and can be leveraged by the AccountDelegates 2019-05-05 07:21:26 -05:00
Maurice Parker d12a056ca3 Pass stored credentials to the delegate when updated 2019-05-05 06:02:28 -05:00
Maurice Parker fc7b6f2c6b refactor how Credentials work 2019-05-05 03:25:21 -05:00
Maurice Parker aaa4342494 Add encrypted credential storage 2019-05-04 15:14:49 -05:00
Maurice Parker 595db517a7 change func signitures to use Credentials protocol from RSWeb instead of username/password 2019-05-04 11:48:48 -05:00
Maurice Parker 38202ece8d Made credentials verification errors more descriptive. 2019-05-04 09:18:14 -05:00
Maurice Parker bb42e46887 Update to use latest webservice network layer in RSWeb 2019-05-04 08:54:07 -05:00
Maurice Parker 5a852c1615 validate Feedbin account credentials and add Feedbin account 2019-05-02 18:17:52 -05:00
Maurice Parker e0efcfa847 Update unread counts for activate/inactivate and delete account 2019-05-02 08:41:22 -05:00
Maurice Parker 137f061169 Prevent delete while refresh in progress 2019-05-02 06:50:35 -05:00
Maurice Parker 636468bbf0 Implement active account processing functionality 2019-05-02 06:01:30 -05:00
Maurice Parker 747079157b Implement account state UI 2019-05-02 05:41:44 -05:00
Maurice Parker f5523dd610 Add delete from disk 2019-05-01 19:22:07 -05:00
Maurice Parker 93630a7b72 Load accounts from disk 2019-05-01 13:13:53 -05:00
Maurice Parker f4180424e1 Add multiple local accounts 2019-05-01 12:37:13 -05:00
Maurice Parker 4edffa488d Rename classes to match naming convention 2019-05-01 11:05:55 -05:00
Maurice Parker fe8e825c0d Add account add UI 2019-05-01 10:28:13 -05:00
Maurice Parker 4bc7611721 Rename AccountManageer.localAccount to AccountManager.defaultAccount to make it different from other local accounts 2019-05-01 05:53:18 -05:00
Maurice Parker ba57a27a35 Make local account display names changeable 2019-04-30 06:38:18 -05:00
Maurice Parker ae63805479 Change property to have correct swift naming convention name 2019-04-27 16:16:46 -05:00
Maurice Parker 9400ea361e Add notification for downloaded article(s). 2019-04-27 13:54:52 -05:00
Maurice Parker e10bfde6d9 Rollback code created to support background downloads that are no longer needed 2019-04-26 14:21:17 -05:00
Maurice Parker f5941fda64 Add AccountRefreshMode to be able to choose between background and foreground download sessions 2019-04-25 09:25:13 -05:00
Maurice Parker f3c2d8c1f8 Updated to lastest RSWeb 2019-04-25 07:13:14 -05:00
Maurice Parker f4c0fca6a8 Implement background downloading of feeds 2019-04-24 07:30:35 -05:00
Maurice Parker 17caa31ee5 Added device specific local account names. 2019-04-17 13:01:26 -05:00
Maurice Parker b9f2a500a1 cleared the code signing identity 2019-04-15 17:14:47 -05:00
Maurice Parker 6b8524b70d Made frameworks cross platform and got generated iOS app to compile. 2019-04-15 13:30:10 -05:00
Brent Simmons 0e44c135ae Convert Account to Swift 5. 2019-03-31 16:12:17 -07:00
Brent Simmons 10cdc1553e Post display name did change notification when an Account’s name changes. 2019-03-31 16:12:03 -07:00
Brent Simmons 268a5453ad Convert Articles to Swift 5. 2019-03-31 16:09:32 -07:00
Brent Simmons cd77dd1bcf Convert ArticlesDatabase to Swift 5. 2019-03-31 16:06:57 -07:00
Brent Simmons 2819403d62 Store the account name in a settings file. Set a default name based on the account type. 2019-03-27 22:10:14 -07:00
Brent Simmons c84f273b92 Continue work on accounts UI in Preferences. 2019-03-20 22:10:22 -07:00
Brent Simmons 70bc4a7b45 Pay attention to the changed key when handling feed setting change notifications. 2019-03-17 13:54:30 -07:00
Brent Simmons 5f1bdb29ec Give the .FeedSettingsDidChange notification a userInfo with the key of the setting that changed. This way observers can ignore changes they don’t care about. 2019-03-17 12:47:04 -07:00
Brent Simmons 80bee5b487 Do minor formatting changes in Feed.swift. 2019-03-17 11:24:21 -07:00
Brent Simmons 6a8ee9a2fb Perform minor cleanups in Account. 2019-03-16 17:30:30 -07:00
Brent Simmons 908ae515c0 Remove unneeded import RSDatabase from Account. 2019-03-16 17:12:09 -07:00
Brent Simmons cb45897256 Remove unused markEverywhereAsRead. 2019-03-16 16:48:14 -07:00
Brent Simmons 1d484220eb Skip setting feed.editedName on OPML import. It’s not necessarily true that the name in the OPML file is an editedName. 2019-03-16 16:42:51 -07:00
Brent Simmons e11fc1dfad Make feed.init and FeedMetadata internal. 2019-03-16 16:39:16 -07:00
Brent Simmons 3e52bb9c24 Make feed.metadata no longer an optional. 2019-03-16 12:08:31 -07:00
Brent Simmons 4d727ce094 Continue removing old code for pre-OPML subscriptions. 2019-03-15 13:27:01 -07:00
Brent Simmons 8de36d8282 Start removing old code for pulling settings from a plist. 2019-03-15 13:17:37 -07:00
Brent Simmons 7335c65ecb Remove last ODB stuff. Feed metadata is now entirely stored in FeedMetadata.plist. 2019-03-14 22:59:07 -07:00
Brent Simmons 1d52a1229b Pull editedName from OPML when feed.editedName == nil. 2019-03-14 22:34:22 -07:00
Brent Simmons 79a6d5f761 Continue transition from ODB to FeedMetadata.plist. It’s simpler and uses less memory. 2019-03-13 23:41:43 -07:00
Brent Simmons d498c3f19d Create FeedMetadata. Not actually used just yet. (Soon.) 2019-03-12 22:40:11 -07:00
Brent Simmons dd39e3a0fe Delete unused code in Author. 2019-03-12 21:52:21 -07:00
Brent Simmons 4c6d3807cb Remove unused settingsTable. 2019-03-03 21:35:04 -08:00
Brent Simmons 08110044ea Create database index on searchRowID, which should make searching slightly faster. 2019-03-03 12:30:58 -08:00
Brent Simmons ef9f2b1cdd Remove extraneous semicolon. 2019-03-03 12:11:16 -08:00
Brent Simmons 9b05c7185e Remove unneeded self. 2019-03-03 12:05:34 -08:00
Brent Simmons a9751d5a51 Get searchRowID by column index 0, since it’s a single-column query. This should make searching imperceptibly faster. 2019-03-03 12:02:26 -08:00
Brent Simmons e04250f1b3 Use DatabaseDictionary instead of NSDictionary. Work around a Swift memory leak with NSDictionary. 2019-03-02 16:17:06 -08:00
Brent Simmons 1950b0ab47 Remove extra resultSet.close(). 2019-02-25 21:01:20 -08:00
Brent Simmons 0a45dda375 Create SearchFeedDelegate. Make searching synchronous, since it’s fast enough. 2019-02-24 19:22:16 -08:00
Brent Simmons b957753f5c Revise fetchArticlesMatching function to use FTS. 2019-02-24 18:37:13 -08:00
Brent Simmons e9c76e8ac0 Index articles using SQLite FTS. 2019-02-24 15:34:10 -08:00
Brent Simmons 44edbc7b09 Add search index to database. Move create-table statements into ArticlesDatabase since we can do big strings. 2019-02-22 22:17:05 -08:00
Brent Simmons efe8a4ab15 Implement search — fetch articles matching a search string from the database. 2019-02-18 22:29:43 -08:00
Daniel Jalkut ddb0ee21b6 Quiet warnings/errors from Xcode 10.2 about redundant public attributes on methods implemented inside public extensions. 2019-02-12 10:05:51 -05:00
Brent Simmons 8a5428c1cf Discard future dates. Fix #538. 2019-02-08 21:54:45 -08:00
Brent Simmons 1466f7e919 Fix bug getting unread count for the Today smart feed — it would skip articles with no pubDate, but that did arrive today (and thus should be considered as part of Today). 2019-02-08 21:05:55 -08:00
Brent Simmons 7f82f9d607 Fix a bug where articles with changed dates wouldn’t update in the database. Make the code a bit more clear, too. 2019-02-08 20:41:46 -08:00
Brent Simmons 6f41b2a728 Queue saving to disk, in Account, even during refresh. 2019-02-07 21:29:05 -08:00
Brent Simmons eb3c69f4d0 Don’t write "Untitled" to Subscriptions.opml when a feed lacks a name or editedName — “Untitled” is a localizable, display-only string, not something to store in OPML. Fix #527. 2019-02-06 21:18:22 -08:00
Brent Simmons aadf4ec09f Don’t set feed.editedName when importing OPML in Account. 2019-02-06 21:17:17 -08:00
Brent Simmons ddccbdf610 Add addFeed and addFeeds to the Container protocol. This was confusing before. Now you can add directly to a Folder or Account. 2019-02-05 21:48:32 -08:00
Brent Simmons 448293a836 Set feed.title from the OPML — don’t just leave it blank. 2019-02-02 18:08:01 -08:00
Brent Simmons 30324c8ec0 Make sure that feed.editedName is never "". Treat it as nil. 2019-02-02 17:46:15 -08:00
Brent Simmons a8ec3b9d58 Switch skip-install to Yes for Articles.framework. 2019-01-28 20:44:09 -08:00
Brent Simmons f5d6e7e8fa Fix bug where empty folders would be lost between runs of the app. 2019-01-27 21:42:58 -08:00
Brent Simmons 142774f5ae Use hash(into…) instead of a hashValue instance variable. 2018-12-27 21:07:34 -08:00
Brent Simmons b900cbc0b7 Make Feed and Folder conform to Renewable. 2018-11-22 13:57:49 -08:00
Brent Simmons 485bde7ff2 Complete (probably) work on Feedbin sync data types. 2018-10-14 18:38:33 -07:00
Brent Simmons cd6e6daf31 Continue work on Feedbin sync data types. 2018-10-14 18:10:07 -07:00
Brent Simmons d69058c10c Fix a couple first-run startup bugs. 2018-09-26 22:05:35 -07:00
Brent Simmons 33fe733a8e Redo the database indexes, after some trial and error, to get some significant speed boosts in fetching articles and unread counts. 2018-09-25 22:48:47 -07:00
Brent Simmons 7026eae899 Skip writing OPML file to disk during startup. Structure-changed notices happen during startup as the object graph is created, but it doesn’t mean that there’s a change that requires saving to disk. 2018-09-16 20:02:24 -07:00
Brent Simmons 1c3dca4d9b Update unreadCount for an Account only when one of its feeds changes its unreadCount. 2018-09-16 19:07:07 -07:00
Brent Simmons a914b3949b Made launch performance *much* faster for large (thousands of feeds) subscriptions list. Also: split container.children in container.topLevelFeeds and container.folders. This simplifies a bunch of things, and makes some things faster. 2018-09-16 17:54:42 -07:00
Brent Simmons 6b6d393b3d Delete some dead code. 2018-09-16 13:08:44 -07:00
Brent Simmons 3d45231494 Stop using urlToFeedDictionary. Feeds don’t have to be uniqued. 2018-09-16 13:04:42 -07:00
Brent Simmons f8d6cb48dc Remove instance where Feed equality was expected to be pointer equality, which is no longer true. 2018-09-16 12:46:50 -07:00
Brent Simmons 4010b4cb2a On startup, import from AccountData.plist one last time, then rename it to AccountData-old.plist. On subsequent startups, import using Subscriptions.opml. 2018-09-16 12:42:46 -07:00
Brent Simmons 823d83c942 Write to disk on display-name-change only if it’s a Folder, since Feed names are stored in ODB. 2018-09-15 12:08:57 -07:00
Brent Simmons d0df791b93 Skip writing to disk when feed setting changes, since we’re writing OPML now and storing feed settings in ODB. 2018-09-15 12:06:19 -07:00
Brent Simmons abd8fb2236 Store feed.name and feed.editedName in ODB. 2018-09-15 11:45:01 -07:00
Brent Simmons ce1fe6ed1f Store feed.editedName in ODB. 2018-09-15 11:39:33 -07:00
Brent Simmons 0f59b904ef Store feed.authors in ODB. Make Author Codable. 2018-09-15 11:16:05 -07:00
Brent Simmons 904feb9950 Store feed.homePageURL in ODB. 2018-09-14 22:23:30 -07:00
Brent Simmons fb9590de98 Make feedID and accountID the things that determine hashing and equality for a Feed. 2018-09-14 22:15:22 -07:00
Brent Simmons 47cf018143 Store feed.unreadCount with the Account rather than the feed. This is part of making it so that feeds no longer have to be uniqued. 2018-09-14 22:06:03 -07:00
Brent Simmons 28d084e246 Store iconURL and faviconURL in ODB. 2018-09-14 21:51:05 -07:00
Brent Simmons 6d2bb123e3 Save conditional GET info in ODB. 2018-09-14 19:33:47 -07:00
Brent Simmons 3f1f4fd24c Write Subscriptions.opml to disk. 2018-09-14 13:25:38 -07:00
Brent Simmons b8546d8e8b Don't store account.unreadCount in Settings.odb. Don’t rewrite AccountData.plist when feed.contentHash changes. 2018-09-14 13:12:55 -07:00
Brent Simmons 13fbad12a5 Store feed.contentHash in Settings.odb. 2018-09-13 22:52:34 -07:00
Brent Simmons 679e6f6c0b Give Feed a weak account rather than accountID. 2018-09-13 22:37:40 -07:00
Brent Simmons b5b42b8df6 Stop storing unreadCount for Feed and Folder objects on disk, since they’re fast to fetch at startup. Also, give Feed an ODBRawValueTable for metadata storage. 2018-09-13 22:25:10 -07:00
Brent Simmons b7e9fbf2a6 Stop saving account’s unread count to disk — no need. It gets calculated at startup plenty fast enough. 2018-09-13 21:25:35 -07:00
Brent Simmons 4bc6c7d5db Start using ODB code with Account. Store the unread count in the settings database. 2018-09-12 22:28:21 -07:00
Brent Simmons 25ff76e1e5 Fix a performance bug when fetching all unread articles. When validating unread counts, it was looping through the entire set of articles once per feed. Now it loops through articles just once, for a major performance boost with lots of feeds and/or lots of unread articles. 2018-09-10 22:08:38 -07:00
Maurice Parker 6e6f64321b fixed unintended developement team change 2018-09-07 13:50:34 -05:00
Maurice Parker 808715892f Changed project and framework projects to default to using tabs per the coding guidelines. Also corrected previously committed files with spaces used incorrectly. 2018-09-07 13:46:00 -05:00
Brent Simmons 0e5051b060 Fix a major performance regression with article fetching/creation by not using implicit hashing — use explicit and simpler hashValue that will still provide high quality. 2018-09-02 12:36:46 -07:00
Brent Simmons fdb159a61b Normalize homePageURL in its setter. Fix #397. 2018-09-02 12:14:04 -07:00
Brent Simmons 5d2a3e9142 Normalize homePageURL on init-ing Feed. 2018-09-02 12:08:35 -07:00
Brent Simmons 141ae5cc2f Continue rename to NetNewsWire. 2018-08-28 22:18:24 -07:00
Brent Simmons 9263ffcb79 Use synthesized init. 2018-08-25 17:07:55 -07:00
Brent Simmons 30972ef435 Use synthesized init, Equatable, Hashable. 2018-08-25 16:29:11 -07:00
Brent Simmons d274b4eac1 Use new hash-into instead of hashValue. WIP on #402. 2018-08-25 12:52:48 -07:00
Brent Simmons a3a9e9c9bd Use new hash-into over hashValue in Articles.framework. WIP on #402. 2018-08-25 12:05:47 -07:00
Brent Simmons cfb3bd706e Use new hash-into function instead of calculating hashValue. WIP on #402. 2018-08-25 11:54:58 -07:00
Brent Simmons 6d49cd4620 Unignore IDEWorkspaceChecks.plist. 2018-08-25 11:33:09 -07:00
Brent Simmons f621f8fff7 Fix missing setting for Articles.framework — fixes bug doing Release build. (Didn’t affect Debug builds.) 2018-08-19 15:32:19 -07:00
Brent Simmons b16112ad56 Remove deleted frameworks from Account. 2018-07-28 17:30:12 -07:00
Brent Simmons fc338d5371 Move Feed from Articles.framework to Account.framework. 2018-07-28 12:16:14 -07:00
Brent Simmons b7575c687c Rename Data.framework to Articles.framework. Rename Database.framework to ArticlesDatabase.framework. 2018-07-23 18:29:08 -07:00
Brent Simmons ce0d2450b8 Get the app building with Xcode 10 beta 3. 2018-07-15 12:05:00 -07:00
Brent Simmons 74e07521ea Build still broken. De-framework-ized FeedFinder. 2018-06-23 11:35:55 -07:00
Brent Simmons b61df8c185 Rename RSFeedFinder references to FeedFinder. 2018-06-21 13:18:28 -07:00
Brent Simmons 168f6138ac Rename RSFeedFinder.h to FeedFinder.h. 2018-06-21 13:07:31 -07:00
Brent Simmons 375bef6d44 Break build. Rename RSFeedFinder on disk to FeedFinder. 2018-06-21 13:06:13 -07:00
Brent Simmons fdda92e4c2 Break build. Remove local copy of DB5.framework. 2018-06-21 13:04:26 -07:00
Brent Simmons ecfee69fdf Break the build. Continue switch to submodules. Remove local copy of RSDatabase. 2018-06-18 16:59:22 -07:00
Brent Simmons 72a89dd048 Break the build. Continue switch to submodules. Remove local copy of RSParser. 2018-06-18 16:52:24 -07:00
Brent Simmons 2927422f1f Break the build. Continue switch to submodules. Remove local copy of RSWeb. 2018-06-18 16:45:29 -07:00
Brent Simmons d597631bd6 Break the build. Continue switch to submodules. Remove local copy of RSTree. 2018-06-18 16:39:16 -07:00
Brent Simmons 993d584731 Break the build. Switching to submodules. Delete local copy of RSCore. 2018-06-18 16:34:11 -07:00
Brent Simmons a1374d5420 Remove no-longer-used RSTextDrawing.framework. 2018-06-18 16:31:08 -07:00
Olof Hellman 3dd74ce148 better logic for rs_normalizedURLString 2018-04-29 19:36:40 -07:00
Olof Hellman c91f4621e1 Merge remote-tracking branch 'brentsimmons/master' 2018-03-04 18:43:49 -08:00
Brent Simmons 6e6eefab27 Make Node.childNodes non-optional. 2018-02-25 22:01:09 -08:00
Brent Simmons 7def2ae8d0 Fix bug where deleting from the sidebar would not stick across runs of the app sometimes — whatever you deleted could come back. 2018-02-24 15:54:32 -08:00
Olof Hellman 71005b56af support for "make new feed" 2018-02-20 00:26:46 -08:00
Brent Simmons b39bcd9a77 Remove RSTextDrawing and all references to it. 2018-02-19 22:06:36 -08:00
Brent Simmons 389f04bcfb Make the selected text in the timeline white. 2018-02-19 21:49:32 -08:00
Brent Simmons 6342eaeb00 Add mactories.net to the JSON special case list with titles. 2018-02-19 21:23:58 -08:00
Brent Simmons 6d46b44e22 Remove no-longer-used RSSingleLineView and RSSingleLineRenderer. 2018-02-19 16:00:26 -08:00
Brent Simmons c887cd7921 Fix bug in existingItemWithIdentifier. 2018-02-17 20:46:20 -08:00
Brent Simmons 5ffe3bb948 Move existingToolbarItem function to NSToolbar category in RSCore. 2018-02-17 20:45:15 -08:00
Brent Simmons 2325e7edbc Move the isOpen property from specific window controllers to the NSWindowController extension in RSCore. 2018-02-17 18:22:57 -08:00
Brent Simmons 8e7863c66d Add isDisplayingSheet calculated readonly property to NSWindow and NSWindowController. 2018-02-17 18:14:24 -08:00
Brent Simmons c80e3e86de Don’t save an Account to disk during a refresh session. Wait till it’s over. 2018-02-17 18:02:40 -08:00
Brent Simmons 3a94cf9a51 Create CoalescingQueue.standard, a shared instance. 2018-02-17 17:42:57 -08:00
Brent Simmons 64647c73c6 Use a coalescing queue (instead of a Timer) in Account for saving to disk. 2018-02-17 15:38:54 -08:00
Brent Simmons 4e7fc8efcb Remove rs_performSelectorCoalesced, since it’s been replaced by the CoalescingQueue. 2018-02-17 15:18:42 -08:00
Brent Simmons d9cba50c89 Remove DiskSave from RSCore, since it’s unused. 2018-02-17 15:17:08 -08:00
Brent Simmons 0951b525f1 Add CoalescingQueue, a FIFO queue of target/selector pairs, used for things like updating table row cells — things that should be coalesced and can be delayed minimally. 2018-02-17 15:14:00 -08:00
Brent Simmons 0e2e0f7eea Do a case-insensitive match when checking for special-case feed URLs. 2018-02-16 13:15:20 -08:00
Brent Simmons 891416e7b7 Add a special case to the JSON Feed parser for feeds that include HTML entities in their titles. At the moment this is used for kottke.org and pxlnv.com. More could be added later, and these feeds could be removed if fixed. 2018-02-16 13:13:00 -08:00
Brent Simmons f8f78810ef When detecting and parsing a potential JSON Feed, allow for the version URL to have the wrong scheme, as it does (at this writing) in https://pxlnv.com/feed/json/
Fix #347.
2018-02-14 20:56:02 -08:00
Brent Simmons 2f21dbf6be Remove extraneous get { from a bunch of read-only accessors. 2018-02-14 13:14:25 -08:00
Brent Simmons 192439abe7 Make Folder watch for children-did-change notifications — when its own children change, update the unread count. Fix #322. 2018-02-12 22:22:06 -08:00
Brent Simmons 2b6c2eb5ba Create a PasteboardWriterOwner protocol and an NSPasteboard extension that references it. 2018-02-11 21:55:32 -08:00
Brent Simmons a13d21395e Fetch starred articles for the Starred smart feed. 2018-02-11 12:07:55 -08:00
Brent Simmons 5aeb914ab6 Fetch articles for the Today smart feed. 2018-02-10 17:37:47 -08:00
Brent Simmons 863de80281 Add convenience method to Set<Article> for just getting unread articles. 2018-02-10 13:21:43 -08:00
Brent Simmons 00cf3934e5 Add fetchUnreadArticles method to Account, which will be used by the All Unread smart feed. 2018-02-10 13:00:16 -08:00
Brent Simmons c77866c4d7 Add takeItems: method to a new NSMenu extension. 2018-02-09 22:10:36 -08:00
Brent Simmons dcf758acc5 Pass menuForEvent: to the enclosing tableview. This gets contextual menus to appear in e timeline. 2018-02-09 21:40:09 -08:00
Brent Simmons 839780303f Add needed cast to return value in rs_enclosingTableView. 2018-02-09 21:39:33 -08:00
Brent Simmons 1b09d35c77 Add rs_enclosingTableView method as NSView category. 2018-02-09 21:33:13 -08:00
Brent Simmons a6db249ab6 Add ArticleFetcher protocol. Add Feed and Folder extensions for it. 2018-02-04 10:57:41 -08:00
Brent Simmons 50dcf436d9 Change Cocoa imports to AppKit imports, because we don’t need CoreData imported (which Cocoa imports). 2018-02-02 22:51:32 -08:00
Olof Hellman e038fb0fb5 convert Evergreen frameworks projects to use .xcconfig files. 2018-02-02 03:24:13 -08:00
Daniel Jalkut 56a39042f3 Remove Garbage-Collection-specific finalize method overrides, which were flagged by new deprecated OBJC methods warning. 2018-01-29 11:20:38 -05:00
Daniel Jalkut 3507313f84 Accept Xcode 9.3 recommended build settings. 2018-01-29 11:20:30 -05:00
Daniel Jalkut 68a8437ea2 It appears that libxml/parser.h must be explicitly imported as of Xcode 9.3. 2018-01-29 11:20:24 -05:00
Daniel Jalkut d7f13ca4be Change from flatMap to new compactMap rename in Xcode 9.3. 2018-01-29 11:19:54 -05:00
Brent Simmons fb45ae11eb Add URLPasteboardWriter to RSCore. It takes a string and writes a URL (if possible) and a string to the pasteboard. 2018-01-28 16:08:38 -08:00
Brent Simmons ef8f508ee4 Add NSOutlineView extension methods: canSelectItem and selectItemAndScrollToVisible. 2018-01-27 12:34:53 -08:00
Brent Simmons 7ba2fe72dd Add descendantNodeRepresentingObject to Node.swift. 2018-01-27 12:03:17 -08:00
Brent Simmons cf0d5cdc51 Remove unwanted debugging print statement. 2018-01-24 21:48:20 -08:00
Brent Simmons f109237bfa Handle feed renames in the inspector. Handle multiple selection. Fix #137. 2018-01-23 21:49:33 -08:00
Brent Simmons 2cf0dbd96e Extend Notification.Name, not NSNotification.Name. 2018-01-22 22:00:01 -08:00
Brent Simmons 02ad70097e Send a Notification when a Folder’s name changes. 2018-01-22 21:59:13 -08:00
Brent Simmons 786138d6e7 Create postDisplayNameDidChangeNotification, so that a DisplayNameProvider can post a Notification when its name changes. 2018-01-22 21:58:53 -08:00
Brent Simmons c692d357d2 Adjust for < 0 x origin. 2018-01-21 13:10:42 -08:00
Brent Simmons ca5703e14f Keep the inspector’s top-left origin steady on changing views. 2018-01-21 12:46:22 -08:00
Brent Simmons 394274f1e5 Continue progress on inspector. 2018-01-21 11:35:50 -08:00
Brent Simmons d3a0d8b8b7 Remove Inspector stuff from RSCore on YAGNI basis. Start work on inspector in Evergreen. 2018-01-20 19:06:07 -08:00
Brent Simmons 6b059671f5 Make progress on reloading timeline when feed updates. 2018-01-17 17:28:09 -08:00
Brent Simmons d1e915394e Use properties rather than strings and KVC. Duh. 2018-01-15 12:28:35 -08:00
Brent Simmons f4aca068ea Make SendToBlogEditorApp public in RSCore. 2018-01-15 12:21:54 -08:00
Brent Simmons 77bc330d8c Create SendToBlogEditorApp, which implements the sending side of the external blog editor interface: http://ranchero.com/netnewswire/developers/externalinterface 2018-01-15 12:11:28 -08:00
Brent Simmons c63303f05a Add UserApp.targetDescriptor. 2018-01-15 12:10:57 -08:00
Brent Simmons eaeb333120 Add NSAppleEventDescriptor category method: +descriptorWithRunningApplication:. 2018-01-15 12:10:31 -08:00
Brent Simmons 7a8e0ec4aa Increase the sleep interval for waiting for an app to launch. I’m sure there’s a better way to do this, but I don’t know what it is yet. 2018-01-14 11:19:19 -08:00
Brent Simmons 39d6086e0c Use %20 instead of + when encoding for URL query strings, since it appears to be more compatible. (Well, it works better with Micro.blog.) 2018-01-14 11:11:53 -08:00
Brent Simmons 75d0752a67 Make UserApp properties and methods public. 2018-01-14 11:00:29 -08:00
Brent Simmons fd7c6d07ac Add UserApp class to RSCore. It represents an of the type usually found in /Applications. A UserApp may or may not be running and may or may not exist locally on disk. It could be entirely fictional, even. 2018-01-14 10:56:06 -08:00
Brent Simmons f430d6a095 Add Dictionary and String extensions for creating URL query strings. Add tests. 2018-01-13 17:40:27 -08:00
Olof Hellman 775dbf0852 basic readonly scripting support for account, feed, folder 2018-01-11 00:51:25 -08:00
Brent Simmons 1b0648cd18 Make feed icons show up more promptly and reliably in the timeline. 2018-01-08 21:34:39 -08:00
Brent Simmons e181822c48 Merge, manually, fix and tests for detecting as JSON Feed feeds which do slash-escaping, such as Curt’s feed <http://curtclifton.net/feed.json>. 2018-01-08 13:13:15 -08:00
Brent Simmons 0d4a58e2ab Create and use an NSTableView extension method: indexesOfAvailableRowsPassingTest. 2018-01-06 12:12:31 -08:00
Brent Simmons 2938cc718d Check /index.xml when finding a feed when there are no other leads. Fix #235. 2018-01-05 22:54:28 -08:00
Brent Simmons e970caf459 Freeze the user agent as Evergreen (macOS; RSS Reader; https://ranchero.com/evergreen/). (An iOS version would say iOS rather than macOS, but would be the same otherwise.) 2017-12-31 10:09:40 -08:00
Brent Simmons 1968986d64 Make User-Agent of the form: Evergreen/1.0d28 (Macintosh; RSS Reader; ranchero.com/evergreen/)
The idea is that anyone looking at their stats can quickly find out what it is. It’s a Mac RSS reader. They can open that URL for even more info. (Before 1.0 ships, at that link will be a link to an article for publishers about RSS readers and lowering bandwidth use. Will talk about conditional GET, etc.)
2017-12-30 12:51:37 -08:00
Brent Simmons f4b33c6afb Add the OS to the User-Agent header, as in Macintosh or iOS. 2017-12-30 11:23:35 -08:00
Brent Simmons d093bf9a21 Add rs_debugStringWithData — to use when debugging. A quick way to turn data into a string. It will work most of the time. Good enough for debugging. 2017-12-30 11:23:04 -08:00
Brent Simmons 1e90237e7e Fix bug decoding &#39; entities.
1. Fix typo in the entities dictionary — add the actual ' character.
2. Add EntityDecodingTests.swift and a test for this.
2017-12-30 10:24:44 -08:00
Brent Simmons 20dccb1060 Add license and Readme from RSParser’s separate open source project. Just part of keeping these both in sync. 2017-12-30 10:24:04 -08:00
Brent Simmons 8f9575ee84 Remove assertion that wasn’t valid in some situations. Fix #283. 2017-12-29 10:13:11 -08:00
Brent Simmons a8bd15e9b4 Add method to convert HTML to plain text suitable for copying to text-based apps. It could be much improved, but it’s better than nothing for right now. 2017-12-26 16:17:57 -08:00
Brent Simmons 0b2d7c6733 Validate unread counts on fetching articles. Fix #274. 2017-12-26 11:27:55 -08:00
Brent Simmons 288f203bea Add setPointAndSizeAdjustingForScreen for placing windows without (usually) going offscreen. Use it for positioning the Keyboard Shortcuts window. Fix #263. 2017-12-22 11:13:20 -08:00
Brent Simmons a4c82739b6 Implement next and previous subscription navigation. Also: on first-run, position and size the window a bit nicer. 2017-12-21 14:43:29 -08:00
Brent Simmons 84845c21b3 Make sidebar expand/collapse keyboard shortcuts work. 2017-12-21 11:09:07 -08:00
Brent Simmons 70000c1d31 Progress on keyboard shortcuts. Add link to Technotes in Help menu. Fix #266. 2017-12-20 21:23:48 -08:00
Brent Simmons 035702d403 Add KeyboardKey and KeyboardShortcut structs. 2017-12-20 12:54:01 -08:00
Brent Simmons 23769bc391 Add AccountDelegate.accountDidInitialize method, so that the delegate can set the account’s nameForDisplay before anything else happens. Fix #247. 2017-12-19 17:48:30 -08:00
Brent Simmons 705efcb7e8 Add keyboard utilities to RSCore. 2017-12-19 15:23:42 -08:00
Brent Simmons dd89f2dea7 Add test for Macworld authors — make sure they appear as names instead of email addresses, even though they’re using RSS. 2017-12-19 13:28:33 -08:00
Brent Simmons 6c5566e184 Parse Atom authors. Fix #260. 2017-12-19 13:24:19 -08:00
Brent Simmons 0317196cf6 Add test for Atom authors. Currently failing. 2017-12-19 13:03:35 -08:00
Brent Simmons ccd87040c3 Support multiple authors in RSS and Atom feeds. 2017-12-19 13:03:05 -08:00
Brent Simmons 83c49bf428 Add two tests for parsing Atom attachments. Thanks to Marco for finding some examples (they’re very rare). 2017-12-19 11:52:12 -08:00
Brent Simmons b380d0597f Test Omni Show and Macworld unique IDs. The Omni Show ids should come from the feed’s guids. Macworld’s unique IDs should be calculated, since the feed doesn’t have guids. 2017-12-19 11:20:40 -08:00
Brent Simmons fefa96d259 Prefer permalink to link when creating a calculated unique ID. 2017-12-19 11:19:46 -08:00
Brent Simmons a3dde79b84 Add test to make sure RSS parser is using guid for article.uniqueID. 2017-12-19 11:02:05 -08:00
Brent Simmons a82cee29b8 Make RSParsedArticle calculate a unique ID only when there’s no guid. Otherwise use the guid. Do not attempt to create a globally-unique ID — that’s out of scope for the parser and should be (and is) handled at the app’s model layer. 2017-12-19 10:59:24 -08:00
Brent Simmons 7ccb531f0c Parse Atom enclosures. However, I couldn’t find any in the wild, so there are no tests yet. 2017-12-19 10:17:09 -08:00
Brent Simmons 5b01f04afe Save to disk right after importing OPML. Fix #249. 2017-12-18 21:46:35 -08:00
Brent Simmons fcda565d91 Remove references to tags. Fix #259. 2017-12-18 18:20:13 -08:00
Brent Simmons fb9a1d610c Parse enclosures in RSS. 2017-12-18 15:35:50 -08:00
Brent Simmons adf5a5e784 Add NSImage extension method to tint an image with a color. 2017-12-17 10:48:24 -08:00
Brent Simmons 0221eda956 Add Node.existingOrNewChildNode — recycles an existing node. Creates a new node only when needed. 2017-12-16 11:15:36 -08:00
Brent Simmons 859f479a89 Fix a memory leak that happened every time you added a feed. Use a weak delegate to avoid a retain cycle. 2017-12-13 21:19:12 -08:00
Brent Simmons b04876185d Clean up DownloadWithCacheManager’s cache at most every five minutes — it’s very expensive to do it on every request. This dramatically helps sidebar scrolling performance when you have a couple thousand feeds all trying to get their favicons. 2017-12-13 21:18:20 -08:00
Brent Simmons 3eb95ce63d Fix OPML import performance regression. Fix #238. 2017-12-11 23:12:54 -08:00
Brent Simmons 0b4a9f143e Parse Feedbin articles. 2017-12-11 13:36:16 -08:00
Brent Simmons 8160d8e38e Create Feedbin, FeedbinAccountDelegate, and FeedbinGetSubscriptionsDelegate. 2017-12-10 14:05:01 -08:00
Brent Simmons 6e93cc2718 Create FeedbinSubscription struct. 2017-12-10 14:04:14 -08:00
Brent Simmons 1d956c619d Make APICall.init public. 2017-12-10 14:03:35 -08:00
Brent Simmons 89a74077d9 Create FeedbinSubscription struct. 2017-12-10 13:58:44 -08:00
Brent Simmons 8d7eb910da Make APICall delegate based rather than defining a bunch of protocols. 2017-12-10 13:57:38 -08:00
Brent Simmons de883ce082 Define string constants in JSONFeedParser rather than using literals all over the place. Also: remove a no-longer-needed do/try/catch. 2017-12-10 13:56:40 -08:00
Brent Simmons cc3f77571b Make JSONTypes public. Add JSONUtilities. 2017-12-10 13:53:00 -08:00
Brent Simmons 16b1918580 Continue work on web services client. 2017-12-10 12:31:10 -08:00
Brent Simmons cc918daf37 Start work on web services support in RSWeb. 2017-12-09 11:27:06 -08:00
Brent Simmons 3d72ba4b44 Add case for detecting <https://www.natashatherobot.com/feed/> as an RSS feed.
It’s missing the opening <rss> tag, but it has enough other distinct markers that we can detect it as RSS.

Add two tests to make sure it’s detected and that the parser handles it.
2017-12-07 20:05:58 -08:00
Brent Simmons a488683550 Refresh all after importing OPML. Fix #59. 2017-12-03 12:54:51 -08:00
Brent Simmons 0c176eccd0 Fetch all unread counts at startup. This is done with a single SQL call, and it’s done in the background, so performance hit should not be noticeable. Fix #138. 2017-12-03 11:57:53 -08:00
Brent Simmons c83e0ca68d Do quite a bit less work on resizing the timeline. Fix #175. 2017-12-02 22:18:43 -08:00
Brent Simmons 179c889d9b Fix typo. 2017-12-02 21:35:02 -08:00
Brent Simmons 3da2521e8e When adding a feed, update it right away rather than waiting for the next Refresh. Fix #147. Fix #215. 2017-12-02 17:47:08 -08:00
Brent Simmons f99cd162bb Add support for RSS 1.0 (RDF) feeds. Added so we can handle Pinboard feeds. (Not sure if anyone else is still using RSS 1.0.) Fix #231. 2017-12-02 16:37:24 -08:00
Brent Simmons 35cb0fe078 Get rid of the lock. Add comment that Node is main-thread-only; add precondition to init method. Fix #230. 2017-12-02 16:12:09 -08:00
Brent Simmons e71d763443 Save feed.authors. 2017-12-02 14:20:58 -08:00
Brent Simmons b5d8233955 Fix bug saving related objects for articles — authors, tags, and attachments. 2017-12-02 13:20:27 -08:00
Brent Simmons f28d921aff Avoid skipping parsing Dr. Drang’s JSON Feed, which can’t be detected that it’s a JSON Feed with only partial data, since it has the version element at the end. Add a test for this. 2017-12-01 13:19:30 -08:00
Brent Simmons efcc4fedaa Add tests for Dr. Drang’s JSON Feed. 2017-11-30 13:19:22 -08:00
Brent Simmons 1e528ee8b0 Fix bug detecting Macworld’s RSS feed as an RSS feed. The feed doesn’t start with the standard XML header. 2017-11-28 21:29:09 -08:00
Brent Simmons 6c36107320 Prefer Apple touch icons to other feed icons. 2017-11-26 20:40:07 -08:00
Brent Simmons 82dace2acc Start FeedIconDownloader. 2017-11-26 13:48:40 -08:00
Brent Simmons bfccda8c88 Get twitter:image:src from HTML metadata. 2017-11-26 11:49:01 -08:00
Brent Simmons ff7695c290 Parse Open Graph images when parsing metadata from an HTML page. 2017-11-26 11:38:03 -08:00
Brent Simmons 18f6b177e9 Fix typo. 2017-11-25 20:24:12 -08:00
Brent Simmons e026e159d1 Rebuild the feed dictionary at appropriate times. Fix #169. 2017-11-25 18:05:20 -08:00
Brent Simmons 1047fa5a02 Use the proper index sets and so on to make deleting work from the sidebar again. Fix #192. 2017-11-25 17:44:54 -08:00
Brent Simmons 7d579733f0 Add tests to HTMLFeedFinder for finding the best feed from a web page. 2017-11-25 16:48:42 -08:00
Brent Simmons fce95bb5b6 Pull JSON feed from web page metadata (along with RSS and Atom, which already worked). 2017-11-25 16:48:13 -08:00
Brent Simmons 23af6b4d29 Adjust scoring in FeedSpecifier to slightly prefer JSON feeds. 2017-11-25 16:47:36 -08:00
Brent Simmons 489cf8e29b Start redoing HTMLFeedFinderTests. 2017-11-25 16:34:40 -08:00
Brent Simmons 50f4e46913 Add 'json' as possible-feed match string. 2017-11-25 16:34:20 -08:00
Brent Simmons 68c01491fc Note when feed settings change and update the sidebar cells. 2017-11-25 13:48:14 -08:00
Brent Simmons 9865bd8e51 Fix a crash on startup — detect when there are no feeds and don’t hit database. 2017-11-25 13:11:19 -08:00
Brent Simmons 97079108be Add Atom parser test for getting the home page link. It passed, which means the bug I’m currently hunting (no favicon for Dr. Drang) is somewhere else. 2017-11-25 13:02:21 -08:00
Brent Simmons 0b5f470654 Check "icon" as well as "shortcut icon" when finding the favicon link in a web page. (See Macdrifter.com, for instance.) 2017-11-25 13:01:20 -08:00
Brent Simmons 55166e0979 Update a Feed with settings taken from the raw feed. (Some Feeds had no homePageURL set, which meant, in most cases, no favicons.) 2017-11-25 12:17:49 -08:00
Brent Simmons bd8b7c6ed9 Implement debugDropConditionalGetInfo command. Fix #197. 2017-11-25 11:13:15 -08:00
Brent Simmons e4008b677f Fix two typos in JSONFeedParser which kept the parser from getting the feed’s favicon and icon URLs. Also added a test for this. 2017-11-25 10:34:48 -08:00
Brent Simmons 32973c4c85 Fix an ambiguous call to download in DownloadWithCacheManager. I’m honestly not sure what function would have been called. 2017-11-24 13:11:41 -08:00
Brent Simmons e4f65000b2 Replace Objective-C RSBinaryCache with Swift BinaryDiskCache in RSCore. 2017-11-24 13:10:22 -08:00
Brent Simmons 3282f0ec09 Create NSImage on background queue. 2017-11-23 12:15:33 -08:00
Brent Simmons b4ff1785ab Switch from download to downloadUsingCache where appropriate. 2017-11-23 10:29:00 -08:00
Brent Simmons c9610f1f8e Create DownloadWithCacheManager, for when it’s a good idea to use a cache. 2017-11-23 10:24:36 -08:00
Brent Simmons ca4f4d408f Create downloadUsingCache method — so we don’t download a home page several times in succession, for instance. 2017-11-22 13:37:07 -08:00
Brent Simmons 86907f6aab Create ThreadSafeCache, which FaviconDownloader uses. 2017-11-19 23:58:35 -08:00
Brent Simmons 1864f60e0b Save iconURL and faviconURL in Feed when found in ParsedFeed. 2017-11-19 22:38:42 -08:00
Brent Simmons 0284117bc3 Save and restore iconURL in Feed. 2017-11-19 22:37:59 -08:00
Brent Simmons f457694922 Save and restore faviconURL in Feed. 2017-11-19 21:24:19 -08:00
Brent Simmons ffaa55c50c Implement mark-everywhere-as-read. 2017-11-19 16:28:26 -08:00
Brent Simmons 9c571271e6 Create SmartFeed class. It’s for Unread and Starred pseudo-feeds — and will also be used later on by predicate-based smart feeds. 2017-11-19 15:40:02 -08:00
Brent Simmons 83cee90929 Fix a couple bugs in PseudoFeed. Make callback for fetching unread count @escaping. 2017-11-19 12:45:35 -08:00
Brent Simmons 19673f5c8a Add methods for fetching unread count since a certain date to Database.framework. 2017-11-19 12:44:17 -08:00
Brent Simmons e681007bbe Add TodayFeedDelegate. Start work on fetching unread count for Today pseudo-feed. 2017-11-19 12:12:43 -08:00
Brent Simmons 1cc532faa1 Add startOfToday and nullability annotations to NSCalendar+RSCore. 2017-11-19 12:11:56 -08:00
Brent Simmons 911e992b76 Use a Swift name for rs_performSelectorCoalesced — make it performSelectorCoalesced:with:delay:. 2017-11-19 11:42:22 -08:00
Brent Simmons 200ff61f6a Fix code formatting nit in DisplayNameProvider. 2017-11-19 11:41:27 -08:00
Brent Simmons eff6acba94 Create index on statuses (read) for performance reasons. 2017-11-19 11:40:45 -08:00
Brent Simmons 23ae585b12 Add a group-style row for accounts. 2017-11-18 16:56:36 -08:00
Brent Simmons ca081c41a9 Decode HTML entities in the JSON Feed parser for content_html. Fix #176. 2017-11-18 12:41:15 -08:00
Brent Simmons 828075454e Skip calculating a zero size for empty RSSingleLineView and RSSingleLineRenderer. 2017-11-16 21:10:44 -08:00
Brent Simmons 0e5b400a0c Show Error Log window from Window menu. 2017-11-15 22:40:49 -08:00
Brent Simmons 1d2fe4623b Add Inspector to RSCore. Show/hide inspector via Info command in Window menu. 2017-11-15 22:33:35 -08:00
Brent Simmons 1e713e3bfd Update Account unread count when BatchUpdate did perform. 2017-11-15 13:26:10 -08:00
Brent Simmons 38954448cb Move BatchUpdate.swift to RSCore. 2017-11-15 13:25:43 -08:00
Brent Simmons 3612469954 Make LogItem not crash on init. 2017-11-15 13:13:19 -08:00
Brent Simmons 48ca636796 Make progress on LogWindowController. 2017-11-14 22:04:14 -08:00
Brent Simmons 887e562716 Post a notification when a LogItem is added. 2017-11-14 21:39:24 -08:00
Brent Simmons 60ee139451 Add ability to log items to AppDelegate. 2017-11-14 21:31:17 -08:00
Brent Simmons bf45c3bdd9 Rename Logger to Log. 2017-11-14 21:19:12 -08:00