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.
Added a new "Scroll horizontally" preference (in the "Reading Stories" section of the prefs). Defaults off. Note that this is a change in behavior from before; you might want to default it on to avoid confusing existing users. I do prefer the new vertical scrolling behavior.
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: (53 commits)
Increasing timeout on feedfinder, just in case (see https://blog.dbrgn.ch/).
Handling multiple stripe ids.
If no iOS receipt, still send proof to server.
Don't upgrade premium users on stripe reimport.
Handling missing customer.
Fixing stripe import history.
Fixing stripe import history.
Fixing logging for mercury parser error.
Adding images to shared twitter stories.
Creating MSocialServices when necessary.
Fixing truncate chars to do a proper unicode truncate.
Handling APNS unicode encode errors.
Fixing APNS notifications.
Attempting to corral APNS push notification max sizes due to chinese unicode characters being 3 bytes.
Handling missing user sub folders for IFTTT.
Handling missing original page.
Handling mercury text parsing error.
Fixing issue with double saving of classifier.
Android v9b1.
remove cruft
...
* 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.
Provide (in descending priority order):
1. an StoryTitleAttributedString object which provides attributed string containing the (optional) image and a link, for drops into apps such as Notes, or if rich text is unsupported, Story Title <story URL>.
2. a URL (alone)
This avoids the issue where a “2” or “3” is displayed and multiple items appear to be being dragged (see #1072).
Correctly return an empty array rather than nil if we have nothing to drag.