Commit Graph

61 Commits

Author SHA1 Message Date
Michael Kirk
7e8b2e3034 Faster conversation presentation.
There are multiple places in the codebase we present a conversation.

We used to have some very conservative machinery around how this was done, for
fear of failing to present the call view controller, which would have left a
hidden call in the background. We've since addressed that concern more
thoroughly via the separate calling UIWindow.

As such, the remaining presentation machinery is overly complex and inflexible
for what we need.

Sometimes we want to animate-push the conversation. (tap on home, tap on "send message" in contact card/group members)
Sometimes we want to dismiss a modal, to reveal the conversation behind it (contact picker, group creation)
Sometimes we want to present the conversation with no animation (becoming active from a notification)

We also want to ensure that we're never pushing more than one conversation view
controller, which was previously a problem since we were "pushing" a newly
constructed VC in response to these myriad actions. It turned out there were
certain code paths that caused multiple actions to be fired in rapid succession
which pushed multiple ConversationVC's.

The built-in method: `setViewControllers:animated` easily ensures we only have
one ConversationVC on the stack, while being composable enough to faciliate the
various more efficient animations we desire.

The only thing lost with the complex methods is that the naive
`presentViewController:` can fail, e.g. if another view is already presented.
E.g. if an alert appears *just* before the user taps compose, the contact
picker will fail to present.

Since we no longer depend on this for presenting the CallViewController, this
isn't catostrophic, and in fact, arguable preferable, since we want the user to
read and dismiss any alert explicitly.

// FREEBIE
2018-08-24 08:54:23 -06:00
Matthew Chen
a76d488e8b Fix QA issues in theme. 2018-08-15 17:09:59 -04:00
Michael Kirk
ebd2e6d5ac Tweak theme 2018-08-09 16:43:25 -06:00
Matthew Chen
5ef0b6d056 Refine theme. 2018-08-08 15:04:23 -04:00
Matthew Chen
ce4fdd5135 Refine theme. 2018-08-08 15:04:23 -04:00
Matthew Chen
9fefce94a2 Refine theme. 2018-08-08 15:04:23 -04:00
Michael Kirk
24e675ff07 Use dismissable text views where cramped on shorter devices
// FREEBIE
2018-07-05 17:43:47 -06:00
Michael Kirk
29d08545e2 Use OWSNavigationController instead of UINavigationController
- [ ] document picker
- [ ] camera picker
- [ ] image picker
- [ ] restore "confirm to go back" behavior (interactive pop gesture?)

// FREEBIE
2018-05-24 12:28:20 -04:00
Michael Kirk
33eb4c38cd Centralize translucency configuration
// FREEBIE
2018-05-24 12:28:20 -04:00
Matthew Chen
8c1362b807 Fix small text usage. 2018-04-09 16:15:24 -04:00
Matthew Chen
ade2ee7216 Use dynamic type everywhere in conversation view. 2018-04-09 14:25:53 -04:00
Michael Kirk
6f1608f44b Conventional naming for out custom PureLayout methods.
This moves methods more in line with PureLayout conventions.

- Methods always specify if they pin to an edge vs margin

- `margin` is a reserved word which should only refer to layout margins.
  i.e. do not use it to refer to "inset" and "offset".

// FREEBIE
2018-04-02 17:02:32 -04:00
Matthew Chen
593f7da72d Upload test file to CloudKit. 2018-03-12 16:40:07 -03:00
Matthew Chen
d6f4db1523 Rename TSStorageManager to OWSPrimaryStorage. 2018-03-06 17:12:13 -03:00
Matthew Chen
baf6fcc535 Add 2FA registration view. 2018-03-02 10:55:00 -05:00
Matthew Chen
9258b0883e Clean up TSStorageManager usage. 2017-12-19 11:41:31 -05:00
Matthew Chen
9a990b58e8 Respond to CR. 2017-12-19 11:38:25 -05:00
Matthew Chen
f684482c54 Don't emit "user profile changed" notifications if nothing changed. 2017-12-11 12:28:28 -05:00
Matthew Chen
b4e8df79da Migrate environment to SignalMessaging. 2017-12-05 10:29:29 -05:00
Matthew Chen
6e840ff956 Fix build warnings from XCode 9. 2017-11-09 02:52:44 -05:00
Matthew Chen
3b945a9da2 Respond to CR.
// FREEBIE
2017-10-18 12:13:26 -07:00
Matthew Chen
227fd5280d Resize conversation view cells as necessary.
// FREEBIE
2017-10-16 20:41:14 -07:00
Michael Kirk
df15c904bc Rework push registration
== 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
2017-10-12 12:02:22 -04:00
Matthew Chen
fd9188415f Respond to CR.
// FREEBIE
2017-10-02 14:26:03 -04:00
Matthew Chen
2affcd934f Respond to CR.
// FREEBIE
2017-09-19 09:40:29 -04:00
Michael Kirk
4997b4e332 update to new support URL
// FREEBIE
2017-09-18 14:34:52 -04:00
Matthew Chen
46d00383fd Create Flat UI rounded button class.
// FREEBIE
2017-09-12 14:45:57 -04:00
Matthew Chen
928525c31e Rename home view.
// FREEBIE
2017-09-06 13:59:39 -04:00
Michael Kirk
cd4cfb50d3 clean up avatar icon
avatar outline was showing behind camera which had transparent center

// FREEBIE
2017-09-01 18:15:50 -04:00
Michael Kirk
ae174d4a87 proper handling for multibyte characters
// FREEBIE
2017-09-01 18:15:02 -04:00
Michael Kirk
362b383785 Length-limit profile name field
// FREEBIE
2017-09-01 18:14:08 -04:00
Matthew Chen
3d0300242a Use "skip" not "stop" in profile upgrade nag.
// FREEBIE
2017-09-01 15:26:11 -04:00
Matthew Chen
e8a6ca1c22 Show an error when profile name is too long.
// FREEBIE
2017-08-25 16:01:09 -04:00
Matthew Chen
15d2fd23d7 Rework save/cancel buttons in profile view.
// FREEBIE
2017-08-23 14:07:31 -04:00
Matthew Chen
68309eb00f Rework save/cancel buttons in profile view.
// FREEBIE
2017-08-23 13:31:06 -04:00
Matthew Chen
ae1908c40c Show "share profile with group" banner.
// FREEBIE
2017-08-21 17:49:54 -04:00
Matthew Chen
6dda535f24 Rework the profile view.
// FREEBIE
2017-08-21 17:32:01 -04:00
Matthew Chen
313d06b31d Rework the profile view.
// FREEBIE
2017-08-21 17:32:01 -04:00
Matthew Chen
020d2c567a Rework the profile view.
// FREEBIE
2017-08-21 17:32:01 -04:00
Matthew Chen
3181ee7882 Rework the profile view.
// FREEBIE
2017-08-21 17:32:01 -04:00
Matthew Chen
27e496ad06 Respond to CR.
// FREEBIE
2017-08-21 10:10:22 -04:00
Matthew Chen
1b055c485d Rework "cancel navigate back" logic.
// FREEBIE
2017-08-21 10:10:22 -04:00
Matthew Chen
25b0f79615 Rework "cancel navigate back" logic.
// FREEBIE
2017-08-21 10:10:22 -04:00
Matthew Chen
08347478a2 Implement alternative approach to veto-able back buttons.
// FREEBIE
2017-08-21 10:10:22 -04:00
Matthew Chen
9d8c396848 Add profile view to upgrade/nag workflow.
// FREEBIE
2017-08-21 10:10:22 -04:00
Matthew Chen
ffb4b3f9d2 Add profile view to registration workflow.
// FREEBIE
2017-08-21 10:10:22 -04:00
Matthew Chen
ddd8c9ff5f Respond to CR.
// FREEBIE
2017-08-16 16:10:07 -04:00
Matthew Chen
3ecd415b84 Show activity indicator during profile update; trim whitespace from profile names.
// FREEBIE
2017-08-16 16:05:05 -04:00
Matthew Chen
cdb181eadc Sketch out profile header in app settings view.
// FREEBIE
2017-08-15 16:47:12 -04:00
Michael Kirk
2c3e99c372 better var name per code review
// FREEBIE
2017-08-15 15:51:41 -04:00