* Hook up RegistrationPhoneNumberViewController
* Fix existing tests
* add some new tests; fix test scaffolding bug
* Show an error before going back to phone number entry if the session is invalidated
This renames `RegistrationPhoneNumber` to
`Deprecated_RegistrationPhoneNumber`, which should have no user impact.
This will be useful for an upcoming change.
This change should have no user impact. I made sure I could go through
registration as normal after this change.
`RegistrationCountryState` was an `NSObject` and now it's a Swift-only
struct. (It still requires `Dependencies` for now, but I think this is
an improvement.)
This is a minor change that should have no user impact.
We had a bunch of calls like this:
modalActivityIndicator.dismiss {}
This makes the parameter optional, so you can do this:
modalActivityIndicator.dismiss()
Split it based on whether the purpose is “editing” or “sharing”. If
we’re editing, it generally means we have full access to contacts, and
that we’ve checked which of the contacts are registered on Signal. If
we’re “sharing”, we don’t care whether or not they’re registered.
If we’re “sharing”, we check whether or not we’ve prompted for the
contacts permission yet. If not, we’ll show the prompt.
If we’re “editing”, we assume we’ve already prompted (which is already
the case today), so `.notDetermined` isn’t a possible state.
Other things to note:
- The `supportsContactEditing` was always true, so it’s been removed.
- The error when contacts access isn’t allowed is now shown more
consistently. Previously, it was sometimes shown in response to
initializing a view controller.
- Some RecipientPickerViewController code was moved from Obj-C to Swift.
This is probably useful on its own, but it’ll also make it easier to
build some new UI in subsequent commits.
* Enable zooming for photos and videos.
* Shrink media when keyboard is up.
* Fix minor animation issues on iPad.
* Fix "Add Message" placeholder not fading out properly.
In abf556fb7a, we passed all presented
view controllers to the app’s main UI. However, screen lock errors don’t
immediately dismiss the screen lock UI, so they weren’t ever shown.
In 6ca4bfeff9, we adopted the new limited
photo picker APIs, and manually presenting the photo picker allows us to
specify the view controller from which it should be presented. That
eliminates the root cause that necessitated the workaround.
* Use iOS 13+ UINavigationBarAppearance for navbar styling
* various individual view controller navbar style tweaks and fixes
* Remove unused navigation bar styles
* rename 'default' style blur
* Apply blur style to the UIVisualEffectView generated by UINavigationBarAppearance
* Use iOS 12 navbar blur method on iOS 13 since its bugged
* Fix on iOS 15, use old method on iOS 14
* PR comment nits
* explicitly invalidate KVO observers
This change should have no user impact.
We post a notification when the user touches the status bar. This was
added in 4f80100234 but stopped being used
in dc543ce24f, so we can remove it.
* Make text input field's background translucent.
* Add animations to link preview panel in conversation input toolbar.
* Remove unused LinkPreviewViewDraftDelegate method.
* Add comment explaining layout logic.
* Improvements to "suggested stickers" panel in conversation input bar.
• ensure the panel doesn't show behind the text input area when sliding down.
• create panel lazily when it's needed for the first time.
* Do not disable user interaction on animated views in conversation input bar.
This change fixes an issue where Send button wasn't responsive for a few hundreds
of milliseconds after becoming visible.
RATE LIMITS & IS CRITICAL PRIORITY
Before this change, there was a notion of “critical” discovery tasks
that had their own rate limit, and that rate limit was used for
UUIDBackfillTask. In this change, that logic has been generalized to
consider a separate rate limit for additional request types.
QUEUE PRIORITIES
All of the discovery operations were updated to use `.userInitiated` as
their priority. Before this change, the `UUIDBackfillTask` and message
sending flow used lower priorities. However, both of those should use
higher priorities -- the former blocks receiving messages and the latter
blocks outgoing messages. This change allows the code to be simplified.
TESTS
This removes most of the existing `UUIDBackfillTaskTest` test cases
(they were commented out) and all of the `ContactDiscoveryTaskTest` test
cases (which were for the rate limiter, which has been moved elsewhere).
It introduces a few new tests. These aren’t meant to be exhausive;
instead, they’re meant to hit most of the code in the new classes and a
few specific edge cases that aren’t likely to be hit in normal use.
* Update checkmark icons (for selection rows only)
* Use selected/unselected checkmarks on my story privacy settings
* Initially show no setting on my stories privacy. Require setting to select My Story in recipient picker
* Clear my story privacy settings from debug ui
* design request: keep the all connections view button if unselected
* Same size for story privacy rows with and without detail text
* Remove "@objc" attribution in places related to ConversationInputToolbar where that is no longer necessary.
* Swiftify LinkPreviewState protocol.
* Convert ConversationScrollButton to Swift.
- Move recipient picker code to the correct file.
- Add a helper to fetch typed reusable table view cells.
- Only set shouldUseAsyncSelection in the one place that uses it.
- Remove some code that was duplicated between sync/async selection.
- Fix some strong references in the async preparation flow.
- Allow network errors when preparing recipients -- these may do network
fetches, and those can fail for non-interesting reasons.
- Move FindByPhoneNumberDelegate to Swift & make some code private.