- avoid double-submit by disabling after hitting send.
- Animate SAE dismissal as modal
Requires hiding the load view
- attachment is centered in screen
- add gradient to ensure controls are visible
- Fix clamp constraints - I think this was a typo
Otherwise we couldn't show an image which was 1" wide by 2" tall
- set max zoom, hide scroll indicators
- use media view
- slower panning feels right
- white send button
- can share GIF, static, and sort of video...
- Play button for attachment approval
- move to image assets so we can use it in SAE
- slightly larger button for full-screen approval view
- don't launch redundant fullscreen UI for images when in approval view
- fix scrollOffset in AttachmentApproval
- consolidate view initialization logic in loadView and fix white background
- CR: more legible arithmetic
// FREEBIE
Usinig the new ShareViewDelegate to dismiss the share extension, might
have broken the "import with signal" functionality. But because we
want to remove it anyway, I've done that now, rather than fix it up.
// FREEBIE
Shows the conversation picker, and sends the attachment to that
conversation.
There's still a lot TODO
-[ ] resolve JSQ dependency
-[ ] properly wait for app to load
-[ ] dismiss share extension after send is complete
-[ ] support non jpeg file types
-[ ] Fix device sleep manager
// FREEBIE
- outring: Raised gain on ringer, max is now -0.6 dB
- outring: clipped hiss
- connecting-ping: reduced volume, max is now -17.8 dB
- remove unused audio files
// FREEBIE
- Include table index for contacts
- Fix extra spacing in OWS table view
- Separate search results into contact/invite sections
- Include groups in search results when composing new message
- Compose Screen search matches on group member names
// FREEBIE
== Account Registration ==
Not complete until push tokens are uploaded
== Remote Notifications Registration ==
Extracted from PushManager
- wait for notification-settings registration to complete before
requesting push tokens, otherwise it's possible token requests will
be ignored.
- Less state required for push notification callbacks, specifically, we
no longer need to ensure we've created a promise before the
registration delegate methods get called.
- no more TOCFuture in Signal-iOS (still in SSK for now). It's not in
cases of inexplicable behavior - one a recently, push notification
premature free, in redphone, and more popular use, and I've seen two
futures inexplicably being nil. Instead, let's consolidate around
PromiseKit for popularly used, maintained, strongly-typed futures.
- separate logic for registering for vanilla push/voip notifications
(few dependencies) from responding to UILocalNotifications (lots of
dependencies). Ultimately I'd like to consolidate the remaining
UILocalNotifications logic with the existing NotificationsManager
== Misc ==
more debug logging
more uniform logging
remove stale logic around newly registered user
// FREEBIE
* Send read receipts to senders.
* Honor "send read receipts" preference.
* Process read receipts from recipients.
* Refactor "mark as read" logic.
* Serialize and apply recipient read receipts received before sync transcript.
* Show recipient read receipts in conversation view.
// FREEBIE
As policy we don't include a language in Signal until it has at least
80% of strings translated. We don't currently remove languages that fall
below that threshold.
There are two things that must happen to add a localization in Signal.
1. Pull the Localizable.strings from transifex for each language, add
them to git.
2. Add the localization to the Xcode project file
These four languages were in the repository (step 1) but not properly
added to the project file (step 2):
- khmer (km)
- lithuanian (lt)
- hebrew (he)
- persian (fa)
Of these, only khmer and lithuanian were sufficiently translated, so I
added them properly to the Xcode project file, making them available to
our users.
To make this process slightly easier to track in the future, I've
removed the insufficiently complete `he` and `fa` files from the
repository. Once they fall above 80% translated they will be
automatically downloaded by our sync-translations script, appearing as
new files, being the cue to the developer to add those new translations
to the project (step 2).
Note: the fa/he translations were never available to users, so we're not
going removing anyones existing functionality.
// FREEBIE
There is a more true-to-life way to set verification state - mark
someone as verified or default via the SN UI.
If they are marked as verified, you can mark them as no-longer-verified
by toggling a keychange in the debug UI
// FREEBIE