Commit Graph

443 Commits

Author SHA1 Message Date
Igor Solomennikov
11d1807e35
More updates to chat input bar.
* Updates to "sticker" button in chat input bar.

• switch button to "keyboard" when sticker keyboard is active.
• add spring animations to sticker/keyboard buttons.
• clean up animation code: use one UIViewPropertyAnimator for all animations
  happening in chat bar at once.

* Ensure correct "pressed state" appearance for buttons in chat bar.
2022-11-14 13:33:37 -08:00
Harry
1be2c1489b
Require explicitly setting my story privacy settings before sending to my story
* 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
2022-11-11 13:28:14 -08:00
Harry
df420416dd
Story crashes - tentative fixes
* Dont incrementally reload the collectionview before blowing it all away with a reloadData

* Use proper api to set PureLayout priorities
2022-11-11 08:34:26 -08:00
Igor Solomennikov
03e01b4c7f
Updated animation for + attachment button in chat input panel. 2022-11-10 23:09:26 -08:00
Max Radermacher
b0e9af742a Fix missing animation when sending a message
Prior to 6a7d6c0fae, this comparison used
`isEqual:`. However, none of the `LinkPreviewState` concrete
implementations provided `isEqual:` implementations, so it was
equivalent to pointer equality. After that commit, these types no longer
subclassed `NSObject`, so the equality check always failed.
2022-11-09 14:15:21 -08:00
Sasha Weiss
242dfd2bce
Add all JobQueues to environment, via a wrapper
Currently, only some `JobQueue` types are initialized during startup
(as part of `Environment`, or `SSKEnvironment`). Initialization is
required, however, for a `JobQueue` type to restart any latent jobs.
That means that, for example, a durable `SendGiftBadge` job that failed,
and should be reattempted at a later date, will not in fact be restarted
since no `SendGiftBadgeJobQueue` will be initialized at launch.

This change adds `SSKJobQueues` and `SignalMessagingJobQueues` types,
which are intended to be singletons that hold within them a singleton
job queue for each of our `JobQueue` types. These wrappers are added to
`SSKEnvironment` and `Environment` (from SignalMessaging) respectively,
ensuring that all the `JobQueue`s they contain are initialized as part
of environment setup. The wrappers also avoid the need to add a new
property to the (already large) environment types for each new future
`JobQueue`.

This change also updates all existing call sites that accessed a
`JobQueue` from an environment object, to direct that access now through
the wrapper type.
2022-11-09 14:08:44 -06:00
Harry
190c56b68b
Fix broken navigation when interactive back swiping on root nav controller 2022-11-09 11:59:38 -08:00
Harry Sanabria
fe96c75920 Apply rotation+keyboard updates properly in OWSViewController 2022-11-09 08:51:39 -06:00
Harry
ca64272c56
Fix janky animation caused by uneccessary navbar hidden state changes
* Fix janky animation caused by uneccessary navbar hidden state changes

* Temporary fix for layout crash issues that re-introduces navbar sizing issue
2022-11-08 16:56:03 -08:00
Evan Hahn
198fc1784a
Consolidate one-time & monthly donation screens
Previously, one-time donations were on one screen and monthly donations
were on another. Now, they're on a single screen with a picker.

Most of the interesting changes are in `DonateViewController`.

Other things of note:

- There are some new TODOs here for existing bugs I didn't fix. For
  example, one-time donations don't do so well if there are any problems
  at all.

- Even though we only support Apple Pay, there's code that alludes to
  additional payment methods. For example,
  `DonateChoosePaymentMethodSheet`. We'll expand on this in the future.

- Users should only be able to select currencies that the server
  supports. For example, you shouldn't be able to select EUR if the
  server doesn't support euros. This wasn't working correctly before,
  but is fixed here.

  We already fixed one part, where users could change to an unsupported
  currency (see dab02f30ae). However, if
  your _default_ currency is unsupported and you didn't change it,
  that's no good. This is unlikely for most users but could happen.

  I fixed this by changing it from (effectively)
  `Locale.current.currencyCode ?? "USD"`, which might not be supported,
  to a preference list, choosing the first one the server likes.

- I skip animations if the Reduce Motion setting is enabled.

- On the donation screen, the logic for the preview badge has changed
  slightly. If you already have a badge, we'll always use that.
2022-11-08 16:27:50 -06:00
Igor Solomennikov
8a2fc1134f
Update text overlay UI in photo editor to match text story composer UI.
• same layout of text styling toolbar (Done button is new in the UI).
• default text color to white.
• now only allow to change text styling (color, font etc) while editing text;
  previously one could also update style after simply selecting a text overlay.
• clean up keyboard handling in photo editor's text overlay tool.
2022-11-08 11:26:54 -08:00
Igor Solomennikov
6a7d6c0fae
Switify some code related to ConversationInputToolbar.
* Remove "@objc" attribution in places related to ConversationInputToolbar where that is no longer necessary.
* Swiftify LinkPreviewState protocol.
* Convert ConversationScrollButton to Swift.
2022-11-07 16:32:59 -08:00
Igor Solomennikov
d8fc50cb42
Convert ConversationInputToolbar to Swift. 2022-11-07 16:22:51 -08:00
Adam Mork
06f5a09a22
[Payments] MobileCoin enclave measurements update for v3.0.0 (#5378)
added mainnet 3.0.0 MobileCoin enclave measurements, and updated flow of attestation measurements to attestations so hardening advisories match the measurements that need them.
2022-11-07 15:52:36 -08:00
Max Radermacher
9439cc5191
Clean up recipient picker contact/group cells
- 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.
2022-11-07 13:02:45 -08:00
Harry
5a42e0e608
A few stories fixes
This change:

- Ensures that the tab bar stays hidden when disabling stories from
  within the stories tab
- Updates the keyboard constraint when orientation changes
- Updates the stories search bar constraint to never resize the safe
  area layout guide
2022-11-07 14:31:37 -06:00
Harry
aafb484583
Fix navbar size sometimes blinking when pushing conversations 2022-11-04 19:32:32 -05:00
Harry
b415f4f70e
Fix some issues with OWSNavigationController.swift
* this is the dumbest bug fix I have ever experienced

* Fix uneccesary setNavigationBarHidden messing with scroll gestures

* update comment
2022-11-04 16:21:13 -07:00
Max Radermacher
49d7896f8e
Update “Find by Number/Username” to latest designs
Some changes:

- Convert most of the code to Swift.

- Update the search result section headers to “Find by Number”/“Find by
  Username” instead of “Phone number search”/“Username search”.

- Remove “New message to:” from the rows & update the icons.

- Don’t look up phone numbers until the user taps the row. As a result,
  there’s no “No user found. Invite via SMS?” row.

- Restore the invite via SMS feature if the user can’t be found. If a
  number appears unregistered, we’ll offer to send an SMS.

- Start showing search results after 3 digits (approximately).

- Show potentially-invalid phone numbers to avoid results that disappear
  if you happen to type a digit incorrectly.
2022-11-04 13:40:13 -07:00
Max Radermacher
f5eceb622a Make it explicit where we download missing avatars 2022-11-03 16:58:49 -07:00
Harry
520faa95df
Refactor OWSNavigationController
* make shouldCancelNavigationBack a var

* rename OWSNavigationView->OWSNavigationChildController

* forward delegate calls to OWSNavigationController

* apply theme and style to OWSNavigationBar consistently

fix themeing on gif picker controller

* Use topPinned navbar position. Size the blur effect view using the background view

* Use fade animation when hiding the navigation bar

* fix issues with reduced transparency setting

* pr feedback
2022-11-03 16:40:47 -07:00
Harry
d06babf59f
Translate OWSNavigationController to swift
* Translate OWSNavigationController to swift

* pr feedback
2022-11-03 15:33:02 -07:00
Harry
c745f9a6ae
Refactor OWSViewController
* Remove the useless shouldUseTheme

* Remove the useless shouldBottomViewReserveSpaceForKeyboard

* Add ViewControllerLifecycle

* Use more sensible constraints for keyboard layouts

* Consistent theme updates. themeDidChange is what you subclass, applyTheme is each class' internal application of theme changes, if needed

* Add app lifecycle hooks

* pr feedback

* pass through touches on the keyboard layout view(s)

* fix lint
2022-11-03 13:12:13 -07:00
Evan Hahn
25aef2ee45 Remove two unused blocklist methods
This removes `showBlockSignalAccountActionSheet` and
`showUnblockSignalAccountActionSheet`, neither of which are used (nor
return any results with `git grep` after this change).
2022-11-03 11:41:41 -07:00
Evan Hahn
5eebe44c77 Remove unused UI utility functions
This removes `UIUtil.applyRoundedBorderToImageView` and
`UIUtil.removeRoundedBorderToImageView`, which are unused.
2022-11-03 07:07:50 -05:00
Igor Solomennikov
2f3ad73dc3
Fix photo overlay text might be clipped in image editor.
Use NSTextStorage instead of NSMutableAttributed string when calculating text size.
NSTextStorage surprisingly provides more accurate text metrics when text contains
emojis and certain "complex" glyphs (eg Chinese hieroglyphs).

Also fix another minor issue that might cause text to be laid out differently
when being edited.
2022-11-02 15:42:44 -07:00
Harry
2b6d1da564
Un-index deleted private story threads. Omit disabled private story threads from search results
* Un-index deleted private story threads. Omit disabled private story threads from search results

* Fix bad debug assert on empty picker search results

* remove extra didRemove FTS check
2022-11-02 11:18:55 -07:00
Igor Solomennikov
9000a5cbb9
Add support for appropriate fonts for different scripts in Text Story composer / viewer. 2022-11-01 16:16:12 -07:00
Evan Hahn
a941c82c14
Prefer isEmpty with strings
This change may improve performance slightly but should have no other
user impact.

`myString.isEmpty` is faster than `myString.count == 0` or equivalent,
because computing `count` may require iterating over the string.

I tried to fix all occurrences of this.

Tested this by sending a message in a group and doing a full
re-registration, just in case I broke something there.
2022-11-01 17:53:46 -05:00
Evan Hahn
b72449490c Use contains instead of filter(...).count > 0
This small change should speed up the attachment approval process.
2022-10-31 17:15:31 -07:00
Max Radermacher
00378ea208
Handle theme changes in ReminderView
Co-authored-by: Evan Hahn <69474926+EvanHahn-Signal@users.noreply.github.com>
2022-10-31 15:45:06 -07:00
Sasha Weiss
e924cb50df
Hide the dropped-members banner more permanently when dismissed 2022-10-29 13:26:26 -07:00
Evan Hahn
f07735f706 Precommit script should fail if lint fails
This change should have no user impact.

I thought I did this in 1b00741b6d7dbfbe48e5b1c46f856902d0e6d02a...this
*actually* does it.
2022-10-28 15:51:02 -07:00
Harry
5865a0a478
Translate OWSViewController to swift 2022-10-28 10:24:55 -07:00
Adam Mork
2dd98c37b3
[Payments] Show alert if client is outdated
Co-authored-by: Phil Larson <phil.larson@icloud.com>
Co-authored-by: Max Radermacher <max@signal.org>
2022-10-25 15:43:43 -07:00
Harry
075133be72
Observe story viewed ring changes in ConversationAvatarView
* Observe story viewed ring changes in ConversationAvatarView itself

* Manage ConversationAvatarView's story observation based on the context

* remove story state from thread view model, now unused

* pr feedback renames
2022-10-25 12:57:52 -07:00
Max Radermacher
f7b18c5ea9 Remove unused BaseMemberViewController code 2022-10-25 00:41:24 -07:00
Max Radermacher
ef1bd4064f Don’t fetch UUIDs when opening BaseMemberVC
(Also, don’t call out recipients that don’t support New Groups.)

We try to populate this picker with users we believe are registered. Now
that GV2 is fully rolled out, all the recipients we believe are
registered should have a UUID. (If any don’t, we’ll resolve that on
launch via UUIDBackfillTask.) Since these proactive fetches *shouldn’t*
run, prevent them from running by removing them entirely.

If we hit a rare race condition where a recipient is missing a UUID,
we’ll still perform a lookup when trying to select that recipient.

In these rare edge cases where a recipient doesn’t have a UUID (which,
again, shouldn’t happen), the subtitle indicating that they don’t
support New Groups will be out of date. By removing proactive fetches,
it’ll remain out of date until the user taps the row. To avoid
confusion, defer showing an error until the user taps on the recipient.
2022-10-25 00:41:24 -07:00
Max Radermacher
3aa95a999a
Update SignalCoreKit 2022-10-24 23:28:33 -07:00
Igor Solomennikov
550f9b0a8a
Fix link preview not expanding to full-size in some cases. 2022-10-24 16:10:49 -07:00
Igor Solomennikov
3235eb6618
Render condensed text style (AA) in all caps in text story composer.
Preserve case-sensitive user input and make UITextView display ALLCAPS if
AA style is selected.
2022-10-24 13:33:48 -07:00
Max Radermacher
a51ce6ba2d Remove presentAddThreadToProfileWhitelist
It’s unused as of aab95db806.
2022-10-24 10:19:06 -07:00
Max Radermacher
ab55cf3929 Import SignalMessaging where it’s needed
The next commit removes a file that, through assorted Swift/Obj-C bridge
magic, resulted in SignalMessaging being available to all these files.
2022-10-24 10:19:06 -07:00
Max Radermacher
09e3c7e3d4 Only show non-empty “Contacts” search results
If the only result is blocked, we’ll show an empty “Contacts” section.
2022-10-24 09:18:28 -05:00
Igor Solomennikov
6005d55c11
Expand link preview vertically in composer if user deletes text.
In text story composer, link preview might be collapsed to "compact" layout 
after user enough text so that there's no more vertical room for both text 
and link preview.

This change improves composer behavior to expand link preview back to 
"regular" layout if user deletes some or all text and there's now room for both.
2022-10-20 17:23:11 -07:00
Igor Solomennikov
55be3e6405
Make text input cursor same color as text in text story composer and photo editor. 2022-10-20 15:52:49 -07:00
Harry
87db4ab0aa
Better multisend of text stories
* Shuffle code around, adding UnsentTextAttachment

* Replace usages of TextAttachment with UnsentTextAttachment where applicable, creating an actual TextAttachment (and associated OWSlinkPreview image TSAttachment, if applicable) only per-recipient

* Only upload one text story link preview image attachment and propagate it to the individual TSAttachments created for each destination

* update comments so I don't lose my mind the next time I read this code

* Dedupe text stories sent to the same person via multiple private threads

* fix non-compiling tests

* pr feedback
2022-10-20 11:04:25 -07:00
Harry
dc15f61a90
Fix text story link thumbnail blinking
* dont reload story thumbnails if the attachment hasn't changed

* Cache text attachment link preview images
2022-10-19 15:39:38 -07:00
Max Radermacher
1ea74d9266 Fix recipient picker nav bar when theme changes
On iOS 16, the nav bar itself is transparent, so the container view
controller’s background is visible. The color of that view wasn’t being
updated, which resulted in the nav bar appearing the wrong color.

A few view controllers worked around this by manually updating just the
background color to the same value used by the table view. It seems
cleaner to re-apply the overall styling when the theme changes.
2022-10-19 13:20:00 -07:00
Max Radermacher
a98cf8ebb5
Ignore private stories in compose search results 2022-10-19 10:03:02 -07:00