- Saved searches (if any) are now listed near the bottom of the feeds list.
- When one is tapped, the folder or feed is displayed and the search performed.
- When showing a saved search, a Delete Saved Search command appears at the top of the menu.
- When showing a non-saved search, a Save Search command appears in the menu.
- Added Statistics to the preferences for the left swipe in the feeds list.
- A bit of refactoring to support displaying the popover from a cell on iPad.
- Added an Export Preferences… button in the Preferences view to save a copy of the preferences to a file.
- Added an Import Preferences… button to load a saved preferences file and replace the prefs.
- Added a document type and UTI type for the prefs file (you can provide an icon if you like).
- Enabled iCloud document support to allow saving to shared locations.
- Added a bridging header to enable Swift code to work properly.
- Added the feed color bars (sharing those colors required a bit of refactoring).
- The fonts etc now more closely match the app.
- Now uses elipsises for the feed name, title, and content text, if needed.
- Improved HTML tag cleanup.
- Added a "Download text" preference. Defaults on.
- If on, the text is fetched for feeds that are in text view when fetching new stories.
- The text is fetched after stories, and before images, using a similar mechanism.
- The text is stored in a new "cached_text" database table.
- The text is deleted when the story is deleted.
- When displaying a text view, the cached text is used if available, otherwise it is fetched as before.
- Now reloads the feeds list when the preference is changed.
- This also fixed some other preference changes, since the notification handler passes a different class for multi-select options.
Note that need to pull-to-refresh to make the preference take effect, since it sorts on loading the feeds. I think that’s reasonable; not something people would change often.
This was a tricky one to reproduce and trace. I added a safety check for the master navigation view getting too big. I also fixed a couple of other Catalina bugs: a crash on launch due to incorrectly creating an image, and a NaN issue with drawing.
- Fixed the story appearing to be unread after returning to the app.
- Fixed the "scroll horizontally" preference appearing twice.
- Fixed the add feed and action toolbar buttons sometimes appearing blue.
- Implemented the feature, showing or hiding hidden stories, only offering it if there are some.
- I used the “all” icon in the menu as a placeholder; please provide one you’d prefer.
- Since the crusty old menu mechanism doesn’t handle dynamic items well, I took this opportunity to migrate the feed detail menu to the block-based MenuViewController mechanism, resulting in significant code reduction.
- Enhanced MenuViewController to support the theme controls etc, so other menus can be more easily migrated next time they need to be updated.
- Now doesn’t use estimated row heights, since that seemed to cause the jitter.
- Increased efficiency by caching row heights.
- The cached row heights are reset when reloading the table etc.
- Added a "Restore position" preference in the "Reading Stories" group, with options to restore the previous state on launch always, within a specified interval, or never.
- When within the indicated interval, the app restores the feeds, feed detail, and story selections and scrolling positions.
- The active story is marked unread to ensure it remains available for restoring, and re-marked read when resumed.
- NOTE: only supported on iPhone for now. I’ll add iPad support later.
Folder headers were misplaced due to adding the refresh control as a subview instead of setting the table property; jumping to the top was due to hiding search field, now only does that if at the top, and does it animated.
Purchases could fail if they require approval, and complete after leaving the premium view, or on next app launch. So I’ve split the premium business logic into a separate manager that maintains a permanent transaction observer.
Works just like on the website, except easier to find. :) Note that I had to add the Cmd key to the Add Site and Select Everything keyboard shortcuts, so the A and E characters could be typed in the search field.
* master: (398 commits)
Another fix for premium sub activation.
Fixing issue with activating premium when already premium.
Fixing premium dialog crash.
Only auto-enable every feed if a free user is moving to premium
New Android phones for scrteenshots.
Fixing major Stripe bug where changing a CC# would not correctly update the subscription, so some users would change their credit card but never receive a bill, either immediately if they were expired or on the correct expiration date. Both cases now fixed.
Android v8.0.0.
Fixing crash on network change.
Handling no host error in text importer.
Better handling of broken original text.
Handling twitter error
Handling missig feed on page importer.
Fixing missing schema exception.
Migrating to jQuery 2.2.4.
Incorrectly skipping title-less stories.
Switching to working NewsBlur Notifier Plus Chrome extension by @JoshSchreuder. https://gitlab.com/JoshSchreuder/newsblur-notifier-plus
Fixing copied/saved toasts on ios.
Preventing double counting of Stripe payments.
Better handling of broken page server.
Fixing handling of invalid feed url on share story feed finding.
...
These indices are used in appDelegate.dictFoldersArray and as UIButton tags.
Removes a number of places where a number-to-name lookup was done for no apparent reason when the items are in appDelegate.dictFoldersArray already.
Fixes issue where all stories are now at index 3, not 2, and shift-E was showing infrequent stories on iPad because the index was not updated when infrequent stories were introduced.