1219 Commits

Author SHA1 Message Date
shannon
20771af55d Remove obsolete comment 2024-12-02 10:06:18 -05:00
shannon
a055d8ab1c Update localizations 2024-11-29 14:53:03 -05:00
shannon
f246ec508e Use localized string for filter label 2024-11-29 14:06:25 -05:00
shannon
a662406117 Fix #1369 [BUG] No option to re-hide filtered posts once they have been revealed 2024-11-29 13:52:52 -05:00
shannon
6bc34282e4 Fix #1368 [REGRESSION] Content Warning text is not displayed in the edit history view 2024-11-29 13:24:39 -05:00
shannon
d2b4d7b6b4 Refactor: Filter and Content Warning display and management
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.
2024-11-28 13:08:01 -05:00
shannon
862e1186ce Centralize filter management
Instead of publishing a list of filters, the StatusFilterService now publishes a struct that can apply those filters to any status in any context.

Also, we now use V2 of the filters API, which distinguishes between hide and warn.

Fixes  #1354 [BUG] Mastodon iOS App Ignores "Hide completely" Filter action Setting
2024-11-28 13:07:18 -05:00
shannon
311bbc0984 [REGRESSION] #1362 Cannot view profile of user mentioned in post 2024-11-25 15:18:09 -05:00
shannon
ac6157ea63 Fix [REGRESSION] #1363 Video and image areas are sometimes too short 2024-11-25 13:56:12 -05:00
shannon
c52e674ece Add filter awareness to feed loading
Filters used to be applied only at the display stage.

There is remaining work here:
- Hide filters still will not hide until we update Filter to use API V2.
- Filter work is now duplicated and should be made more efficient.
- It may be important to hold on to statuses even if they are hidden, so that they can be shown if the filter changes.

Contributes to #1354  [BUG] Mastodon iOS App Ignores "Hide completely" Filter action Setting
2024-11-25 12:36:48 -05:00
shannon
6d4e8762f5 Fixes [BUG] Filter titles not displayed in feed #789 2024-11-22 14:37:02 -05:00
shannon
8926e5a5f2 Refactor: Simplify login flow
Give full responsibility for API calls to the AuthenticationViewModel.
Give (nearly) full responsibility for UI flow of the signup/log in experience to the WelcomeViewController.

Transition more APIService functions to async await.
Remove unnecessary AppContext vars.
Update helpful text on Log In screen.

Contributes to iOS-321
2024-11-22 13:01:47 -05:00
shannon
ef31fc4e66 Clear Keychain after fresh install (iOS-315)
Files are removed when an app is deleted from device, but the Keychain is not cleared. So now if we find no cached account information upon launch, we remove any accounts remaining in Keychain and the app launches to the Welcome screen.

Fixes iOS-315
2024-11-20 08:49:29 -05:00
shannon
299e4f2cdf Cache updated account
contributes to iOS-319
2024-11-19 12:10:56 -05:00
shannon
7b0fe1a70b Ensure that currentActiveUser is updated by the time activateUser() returns.
contributes to iOS-319
2024-11-19 12:10:48 -05:00
shannon
082f5e6ce3 Fully initialize AuthenticationServiceProvider from within init
contributes to iOS-319
2024-11-19 12:10:38 -05:00
shannon
d96be97cf6 Only publish new active user if it has changed, and only fetch info for current user.
contributes to iOS-319
2024-11-19 12:10:30 -05:00
shannon
96e3bec016 Save account information after successful updateCredentials
This used to be handled at one callsite.

contributes to iOS-319
2024-11-19 12:10:14 -05:00
shannon
ae7aaf091d Only refetch information about the active user’s instance, not all of them.
contributes to iOS-319
2024-11-19 12:10:03 -05:00
shannon
54d04aed4e Continue to make MastodonAuthenticationBox the standard form of passing user information
Further simplify the AuthenticationViewModel and the public interface of AuthenticationServiceProvider.

Publish currentActiveUser from AuthenticationServiceProvider instead of assuming all callers know to take the first in the list as the active one.

contributes to iOS-319
2024-11-19 12:09:55 -05:00
shannon
1e472c8232 Some simplification to login
Creating async await alternatives to Combine publishers in cases where that makes sense.

Near term goal is to centralize responsibility for caching of user info.

contributes to iOS-319
2024-11-19 12:09:27 -05:00
shannon
8ee189e3cf Remove redundant function
contributes to iOS-319
2024-11-19 12:09:14 -05:00
shannon
9ed9c79f25 Begin moving filesystem cache responsibility into PersistenceManager
contributes to iOS-319
2024-11-19 12:08:22 -05:00
shannon
11c0deff2d Move PersistenceManager to its own file
contributes to iOS-319
2024-11-19 12:08:12 -05:00
shannon
08b47dde37 Make coreDataStack private 2024-11-15 14:51:22 -05:00
shannon
d7f473c892 MainActor for the new PersistenceManager 2024-11-15 14:45:37 -05:00
shannon
9380ef3361 Remove unused additionalPredicate 2024-11-15 14:32:47 -05:00
shannon
35f1280904 Make view models @MainActor 2024-11-15 14:15:01 -05:00
shannon
c4442fe8a9 Fix crash on launch due to infinite loop
And more honestly about singletons.
2024-11-15 12:25:58 -05:00
shannon
77f3c5a64d Combine AuthenticationService into AuthenticationServiceProvider
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.
2024-11-14 16:30:51 -05:00
shannon
5dcc64b094 Simplify MasotodonAuthenticationBox 2024-11-14 11:17:22 -05:00
shannon
cf9b947d94 Enforce immutability of MastodonAuthentication 2024-11-14 10:20:25 -05:00
shannon
04108fd0e4 Remove AuthContext
MastodonAuthenticationBox, which already wraps the MastodonAuthentication, is now used directly.
2024-11-14 09:49:19 -05:00
shannon
60f7f91114 Update accountCreatedAt date if missing
Contributes to iOS-252
2024-11-12 15:54:11 -05:00
shannon
93b8069ded Properly format TODO 2024-11-12 13:00:42 -05:00
shannon
9257477f92 Deleting unused code 2024-11-11 14:31:50 -05:00
shannon
c6df2b0651 Fixes filtered posts take up too much space (#441)
Use content warning UI for filtered posts, and restrict height of CW area in all cases.
2024-11-08 15:07:54 -05:00
shannon
76498442e3 Fix for logged in user requiring reauthorization.
Related to iOS-252
2024-11-07 15:37:18 -05:00
shannon
280df2ae39 Always use vertical layout for edit history (iOS-383)
Quick fix for layout of languages with lengthier strings.
2024-11-07 15:37:18 -05:00
whattherestimefor
9d774cb541
Add ability to donate to Mastodon from the app (#1353)
This change only affects users logged in to mastodon.social or mastodon.online. A banner may be periodically displayed at the bottom of the homescreen encouraging donations and menu options are now available in Settings to make new donations or manage existing ones.

Amounts will not necessarily be returned from the server in order. The first amount returned is taken as the default and the amounts are sorted before display.

---------

Co-authored-by: Marcus Kida <marcus.kida@bearologics.com>
2024-11-06 19:37:52 -05:00
shannon
fdca50179e Wait for authentications to be available before trying to use them.
The prior fix for memory corruption problems in authentications had caused the app to launch to the new user screen every time.
2024-10-30 14:41:48 -04:00
shannon
20f7d761bd Increasing thread safety for authentications.
Attempting to fix multiple crashes associated with the call to persist() triggered by the authentications setter called in restore().
2024-10-30 14:41:48 -04:00
shannon
583c796a4c Some defense against ProfileViewController.authContext.getter Forced Unwrapping Crash
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.
2024-10-23 10:29:50 -04:00
Marcus Kida
382098ed34
Use MetaTextKit fork 2024-10-09 19:29:55 +02:00
Marcus Kida
9dc130eeaf
Fix layout constraint issue 2024-10-09 11:37:53 +02:00
Marcus Kida
cd2a5d4b6b
Update L10n 2024-10-08 09:54:34 +02:00
Marcus Kida
b6d326bb03
Bump FaviconFinder to 4.5.0 (IOS-289) 2024-08-29 10:17:00 +02:00
Marcus Kida
b13a0e03d6
Update strings 2024-08-02 10:45:44 +02:00
Marcus Kida
f15311f2f6
Receive on DispatchQueue.main for consistency (IOS-285) 2024-07-31 11:55:56 +02:00
Marcus Kida
147c417a74
Run NSDataDetector link detection on background queue (IOS-285) 2024-07-31 11:53:13 +02:00