Goal: Begin to centralize the locus of view updates for easier bug fixing and future design flexibility.
Remaining: The supplementary views are still heavily using Combine.
Fixes#1372 [BUG] Cannot save new profile fields
Fixes iOS-340
A large amount of change primarily to the view model layer, to make reasoning about the content reveal/hide state easier.
To prevent terrible scrolling jags while allowing the cells to be shorter when hiding content, the layout changes for content display state now happen before the cell is returned by the datasource provider and the tableview is reloaded when a status’s display mode changes.
Also, AppContext, APIService, and AuthenticationServiceProvider are now more obviously singletons.
And AuthenticationServiceProvider can now be asked for the current active user, instead of every caller assuming the first element of a list of users is the active user.
Make the viewModel of the ProfileViewController optional rather than force unwrapping it. If the necessary information is not available, Profile page should show blank rather than crashing, and hopefully will have the expected info soon or the next time it is opened.
There is still a crash danger inherent in the use of TabBarPager, which requires a non-optional for several protocol methods were we can’t guarantee to have one to return. This dependency should be removed in the future.
* Add missing actions, hack way to inject options into menu (IOS-229)
* Implement new menu structure (IOS-229)
This doesn't work-work yet, as functionality isn't implemented yet. Also: Special options and traits.
* Add preferredElementSize to submenus (IOS-229)
* Copy Link (IOS-229)
* Open In Browser (IOS-229)
* Boost status from menu (IOS-229)
* Favorite status from menu (IOS-229)
* Fix following-status in menu and don't cache menu (IOS-229)
* Add some destruction, add localization and use "Boost" instead of "Reblog" (IOS-229)
* Use struct instead of tuple for those menu-parts (IOS-229)
* Add moderation-warning-notification-type (IOS-264)
* Add entity for new AccountWarning (IOS-264)
Details see https://github.com/mastodon/mastodon/pull/30065 for now, as there's no documentation (yet)
* re-add file header (IOS-264)
* Add authorization to instance-calls (IOS-264)
This will improve using the app with `LIMITED_FEDERATION_INSTANCES`
* Add basic cell for account-warnings (IOS-264)
* Show some content for a warning (IOS-264)
* Open strike in browser (IOS-264)
* Add localization (IOS-264)
* Add missing localization (IOS-264)
* Cleanup (IOS-264)
* Implement Settings->General->"Ask Before" and add "Ask Before Posting Without Alt Text" IOS-166
* Implement Alt Missing Alert for Status Edits (IOS-166)
* Fix status edit composes duplicate message
* Show (or don't) the "Really delete post?" Alert based on the User's preference (IOS-166)
* Implement alert for boost/unboost (IOS-166)
* Begin implementing "Default Post Language"-Setting (IOS-166)
* Show "Unfollow @user?" Alert (IOS-166)
* Merge conflict fixes for IOS-166
* Implement default post language setting (IOS-166)
* Fix follow button state not updated correctly (IOS-166)
* Add PR feedback (IOS-166)
* Improve default language cell style (IOS-166)
* Fix language filter broken (IOS-166)