Insted of using fixed image and text insets to try to center this image,
split the image out into a separate view and center it properly using a
constraint. Touches still pass through to the button underneath.
Fixes#1622. FREEBIE
In the process, extracted the CallDelegate to allow the
CAllViewController to observe useful call state properties (call.state
and call.isMuted)
// FREEBIE
* Ensure NotificationsManager has dependencies
Otherwise it's easy to mess up the order of the required dependencies.
* move AccountManager into Environment, it's heavy to construct
// FREEBIE
Preferred to the system contact picker because:
1. removes "group" clutter from header, unlikely to be used much.
2. can select while searching
3. fixes unified contact problem where e.g.
If only one of your contact has a phone number, they appear disabled
when choosing to invite via messaging, even though the other linked
contact *does* have a phone number.
4. label users w/o email so it's clearer why they can't be selected
Also:
* Twitter share-image was too tall
// FREEBIE
* Spruce up compose contact-picker
- Fix random sorting for contacts missing first or last name
- Add Avatar to contact picker
- de-dupe contacts
Better copy for INVALID_MESSAGE error.
// FREEBIE
* Separate registering an account from registering for push notifications
* Allows us to complete registration without prompting user for
notification settings.
UX Changes
----------
* Automatically keep push tokens in sync on startup.
Push tokens *can* change, though they rarely do. It happens more often
for people switching between appstore/beta builds.
fixes#1174
* Show alert with registration failure
* add secret 8-tap debug log gesture to registration flow
* Move registration to separate flow
* don't see flash of inbox when first launching
* show useful error messages when given wrong code / no code
* remove background fetch
We werent using it, but only relying on a side effect of it which is
no longer necessary.
Code Changes
------------
* More registration logging.
* Install PromiseKit with carthage
Our dependencies are not yet framework compatible, so we can't use
cocoapods.
* Merge preferences util "category" into superclass.
The immediate reason for this is Swift interop was assuming optional
types were not optional, and exploding when a value was nil.
This is clearer anyway, since we were treating it like a subclass, and
it was the only thing using the class anyway.
* auto-genstrings now searches *.swift (and *.h, which was previously
broken) for translateable strings.
// FREEBIE