* Add first send story privacy field to AccountRecord proto
* Store hasSetMyStoriesPrivacyKey on StoryManager
* sync hasSetMyStoriesPrivacy state
* Reuse MyStorySettingsViewController in a sheet view controller
* Show my story privacy settings from conversation picker if unset when selecting my story destination
* reload my story row to change subtitle
* pr feedback
* fix conflict between story viewer context menu drag and navigational pan gestures
* Fix RTL chevrons on story list
* swipe only between hidden stories OR visible stories, never both
* Add table row swipe actions for hiding/unhiding stories & update icons to sharp corners instead of rounded
* make story viewer context menu always dark theme to match design mocks
* dont fail dev builds when harmlessly double dismissing a context menu, which happens if backgrounding the app while the context menu is open
* update my story row icons to 16pt
* swipe to delete on my story rows
* Use themed icons. Get filled versions of various context menu icons from design
Also in photo editing UI - for text overlays.
Previous implementation used NSAttributedString's ability to set text background
color. Appearance wasn't impressive though as there wasn't a way to add padding
around the text or round corners for the background.
New approach is to add a rectangle background underneath the text - which
story viewer was already doing.
If you've left a group, we shouldn't show it in any pickers except the
blocking manager (`AddToBlockListViewController`). Before this commit,
we were showing it in a few places. That might let you sorta-send a
message to a group you'd left.
I enumerated all the places where we have pickers, and what their
behavior should be.
| Description | Code | Show groups? | Show left groups? |
| --------------------------------------------------------------------- | ------------------------------------------- | ------------------------ | ------------------------ |
| Various group member pickers (adding members, group story recipients) | `BaseMemberViewController` | No | N/A |
| Send payment screen | `PaymentsSendRecipientViewController` | No | N/A |
| Gift badging “choose recipient” screen | `BadgeGiftingChooseRecipientViewController` | No | N/A |
| Composer | `ComposeViewController` | Yes, only when searching | No |
| Add to block list (in Settings → Privacy) | `AddToBlockListViewController` | Yes, only when searching | Yes, only when searching |
| Share sheet | `SharingThreadPickerViewController` | Yes | No |
| Message forwarding | `ForwardMessageViewController` | Yes | No |
| In-app camera | `CameraFirstCaptureSendFlow` | Yes | No |
| Share group link via Signal | `GroupLinkViewController` | Yes | No |
| Share sticker pack, from in a chat | `StickerPackViewController` | Yes | No |
| Share sticker pack, from sticker management screen | `ManageStickersViewController` | Yes | No |
| “New Group Story” screen | `NewGroupStoryViewController` | Yes (exclusively) | No |
This doesn't intend to change the behavior of *deleted* groups. Those
will show up when searching if groups are shown at all. For example, a
deleted group will show in the composer if you search for it just like
any other group. A deleted group will *not* show in the "send payment"
screen because groups are never shown there. Again, the behavior around
deleted groups should remain unchanged.
Co-authored-by: Max Radermacher <max@signal.org>
* initial approach commit, needs cleanup
* Keep >30s videos for non-story recipients, but split for stories
* Some cleanup
* fix too many chats toast offset
* show tooltip in the send flow
* pr feedback
* Hide camera controls when switching to TEXT.
* Streamline camera capture session state tracking.
Stop camera when switching to TEXT.
* Basic text story composer.
All UI works, but needs fine-tuning and tapping on Next (->) doesn't do anything.
* Run auto-genstrings.
* Adjust text size and alignment as user enters text.
1..49 characters: 34 pt, center-aligned.
50..199 characters: 24 pt, center-aligned.
200.. characters: 18 pt, natural alignment.
* Change default text color in text story composer to white.
* Added support for changing background of text story composer.
Selection is allowed from palette of 5 gradients and 11 solid colors.
* Improve vertical alignment of text in text story composer.
Text (and possible link preview panel in the future) should be vertically
centered in the area above either bottom controls or onscreen keyboard.
* Add UI for attaching a link preview to a text story.
* Add support for posting text stories.
* Lint.
* Consolidate context menu actions into one class used by Stories list and my stories
* add context menu to story viewer
* change hidden stories header into a regular cell
* generate context menu at tap time to properly reload hidden state
* some cleanup
* pr feedback
* Add DelegatingContextMenuButton to maintain desired hooks without deviating ContextMenuButton's API from that of UIButton
- Dismissing the keyboard resets the PiP window to its original
location, unless it's been moved since
- Tested against all of iPad's various keyboard modes (undocked /
floating keyboards are ignored)
* Set hidden state from stories view controller context menu
* fix toasts when shown on controllers with UIScrollViews as their root views
* delete when hiding the onboarding story
* run translations script
* respond to pr feedback
* add hidden state to systemStoryManager
* use hidden state from SystemStoryManager for onboarding story
* remove unused method
Previously, archived groups didn't show up in the "Add to Another Group"
view. Now, they do!
This also orders groups entirely by recency.
This view used `ThreadViewHelper`, which (1) omitted archived groups
(2) had a bunch of dormant database observation code. I removed this
class and replaced it with some inline code that fetches groups.
When calculating layout size of the photo overlay text max width is capped at
how wide UITextView was during editing, with the purpose of preserving wrapping
between editor (UITextView) and overlay (CATextLayer).
Previously though, UITextView was set to auto-shrink its width to content size,
which caused max width to not be not enough after changing the font to a bolder variant.
The fix is to pin UITextView's width to view margins so that all available width
is always used when measuring text overlay height.
If "Speak Selection" is enabled in your iOS settings, you can now choose
to speak the message.
See [#5417][0] for more details.
Co-Authored-By: Evan Hahn <evanhahn@signal.org>
[0]: https://github.com/signalapp/Signal-iOS/pull/5417