Commit Graph

154 Commits (5fa1a3630f9d627ff39bc1ad0b80872e48dcc0ff)

Author SHA1 Message Date
Matthew Chen 5ff454fd90 Fix double creation of NotificationsManager singleton.
// FREEBIE
9 years ago
Matthew Chen 8374ca149e Apply assert to ensure singletons are only created once.
// FREEBIE
9 years ago
Michael Kirk 7f239c8040 [SSK] + Enforce singleton access for MessagesManager and MessageSender
// FREEBIE
9 years ago
Michael Kirk 0b49037179 Remove some more RP related code
// FREEBIE
9 years ago
Matthew Chen 47ae6ccf76 Don't show the "no contacts" mode of new conversation view again after it has been dismissed.
// FREEBIE
9 years ago
Matthew Chen 9db33a9651 Remove RedPhone code.
// FREEBIE
9 years ago
Matthew Chen 3fcdffb919 Only enforce CallKit privacy for missed calls if CallKit is present.
// FREEBIE
9 years ago
Matthew Chen c6a280e005 Only initiate WebRTC calls, not RedPhone calls.
// FREEBIE
9 years ago
Matthew Chen b9b81ca8ef Honor call privacy settings in call notifications.
// FREEBIE
9 years ago
Matthew Chen 1820fdbde8 Merge remote-tracking branch 'origin/hotfix/2.8.3' 9 years ago
Matthew Chen a226a4a1b3 Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 47df77f38c Only run "enable video calling" migration if user is registered.
// FREEBIE
9 years ago
Michael Kirk 3ee1d5568c Migrate existing users to RTC calling
// FREEBIE
9 years ago
Matthew Chen dc422f7b00 Convert "is logging enabled" methods to class methods so that they can safely be used before Environment has been initialized.
// FREEBIE
9 years ago
Matthew Chen 164db41c29 Move TSImageQuality enum.
// FREEBIE
9 years ago
Matthew Chen 15e14a9b5c Convert "is logging enabled" methods to class methods so that they can safely be used before Environment has been initialized.
// FREEBIE
9 years ago
Michael Kirk 9b2eb80392 Code review on new-features
* use page view controller
* UIPageControl instead of arrows for idiomatic swiping
* Nudge title lower
* better hit area for dismiss
* use darker blue for text
* Open privacy settings from callkit update screen
* tweak copy
* latest translations

// FREEBIE
9 years ago
Michael Kirk b371e627c4 one-time carousel of changes
// FREEBIE
9 years ago
Matthew Chen 012dd3d192 Add “nag” to call settings view that prods the user to change their privacy settings after calls.
// FREEBIE
9 years ago
Matthew Chen a20a21867e Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 065d383c15 Add and honor the “CallKit Privacy” setting.
// FREEBIE
9 years ago
Michael Kirk 4b8a5f8ccb TURN-only option, and for unknown caller
Now, by default, we only use TURN for incoming calls from unknown
contacts. We will potentially directly connect for outgoing calls and
for incoming calls from known contacts.

Optionally, the user can disable direct connection altogether, at the
cost of some call quality.

// FREEBIE
9 years ago
Matthew Chen f4453eb995 Enable WebRTC-based audio and video calls by default.
// FREEBIE
9 years ago
Michael Kirk e5c6d0db9a fix potential deadlock
// FREEBIE
9 years ago
Matthew Chen 49ba0ff942 Flush logs before exiting the app.
// FREEBIE
9 years ago
Matthew Chen 3c3f782e7d Clean up prekey usage.
// FREEBIE
9 years ago
Michael Kirk 2a9aa4c852 users can opt out of CallKit
// FREEBIE
9 years ago
Michael Kirk 08425853cf re-use shared call strings
// FREEBIE
9 years ago
Michael Kirk a339f52564 Only touch mutable dict only main thread
* and make nonatomic since we're only assigning it in init

// FREEBIE
9 years ago
Michael Kirk 17b89f44aa share global callUIAdapter, outboundCallInitiator
// FREEBIE
9 years ago
Michael Kirk bbfd9ba74d Place Signal/Redphone calls from system contacts
// FREEBIE
9 years ago
Michael Kirk a6029f2545 Merge remote-tracking branch 'origin/master' into feature/webrtc 9 years ago
Michael Kirk a89bde933d Respect silent-switch pre-CallKit
8 Cases considered:

(Silent Switch toggled vs. Silent Switch not-toggled)
x (App in Foreground vs. App in Background)
x (CallKit vs. NonCallKit)

CallKit already does the "right thing"

// FREEBIE
9 years ago
Michael Kirk 907e122d62 Migrate legacy db stored logging preferences to NSUserDefaults
This is part of making sure we can log *before* the DB is initialized.

// FREEBIE
9 years ago
Michael Kirk 870fb960a2 Start logging earlier in app setup.
Because logging-preference was previously stored on the storageManager
this meant we couldn't possible log anything related to the init'ing the
storage manager.

TODO: migrate old logging preference to use the new NSUserDefaults
setting

// FREEBIE
9 years ago
Matthew Chen 654bdb1a85 Add WebRTC setting.
// FREEBIE
9 years ago
Matthew Chen 98e087a47f Fix font lookup on iOS before 8.2.
// FREEBIE
9 years ago
Michael Kirk 647b2b37e9 WIP: WebRTC calling
* 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
9 years ago
Matthew Chen 6106326b34 Update to reflect changes in SSK https://github.com/WhisperSystems/SignalServiceKit/pull/85.
// FREEBIE
9 years ago
Russ Shanahan e7126f8c60 Less confusing "#" avatar for unknown Contact instead of "+"
For consistency with the Android and Desktop client behavior.

* Show a placeholder avatar when no image, initials (#1512)

  If all we know about the user is their phone number, their avatar image
  is rendered as a placeholder. Previously, it would render the first few
  characters of their phone number as if they were initials (eg. "+")

* Rename, extend OWSContactsManager methods (#1512)

  Rename from: nameStringForPhoneIdentifier
           to: displayNameForPhoneIdentifier

  Also, add:
  - (BOOL)nameExistsForPhoneIdentifier:(NSString *)identifier;

  Which reports whether there's any "name" for a contact.

* Remove unused typedefs

  These aren't used in the project anymore, and they were causing
  compiling warnings due to a lack of nullability indication.

* Resolve some OWSContactsManager nullability warnings

  Did a pass through all of the existing nullability warnings in
  OWSContactsManager. Tried to pick descriptors that best reflected the
  behavior of the methods.

// FREEBIE
9 years ago
Michael Kirk f30c733ef3 Custom contact picker for invite flow
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
9 years ago
Michael Kirk eb995cb389 revert to tracking longform build
We use this to determine which legacy migrations to run.

Also, soften the "your device is too old" behavior to just exit, rather
than blow away the users installation. Ouch!

* bump version

// FREEBIE
9 years ago
Michael Kirk fbcf5fbf07 Properly assign global contacts updater to environment
broken in 33f6a95520

// FREEBIE
9 years ago
Michael Kirk c2aa17e362 Changed Safety numbers no longer block communication
When your partner changes their identity key (e.g. by reinstalling),
you'll see a notice alongside their message, but it will no longer
prevent the message from showing. aka "non blocking".

Existing users will be opted into the previous blocking behavior.

This is configurable for all users in Settings > Privacy.

// FREEBIE
9 years ago
Michael Kirk c6a2fbff23 Tapping corrupted message opens "session reset" activity
This action was previously hidden under a secret longpress gesture in
the fingerprint view controller.

Ideally we'd never receive corrupted messages, but at the point we do,
our sessions are out of whack, and the only recovery option is to reset.
Let's help our users do that.

* Resetting session sends END_SESSION message

  Otherwise the remote side wouldn't know we reset the session and will
  send us a message on the old ratchet.

* Don't reset their identity key when resetting sender ratchet.

* Updated translations

// FREEBIE
9 years ago
Michael Kirk 1dd06a5e6c Fix registration flow / Keep push tokens in sync
* 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
9 years ago
Michael Kirk 33f6a95520 Explain send failures for text and media messages
fixes #1231

Motivation
----------
Previously when messages failed to send, there was no reason given.
Furthermore, when media messages failed to send there was no indication
that any attempt to send the message even occurred, nor a retry
dialog.

UX Changes
----------
- Show "uploading" status for media
- Show specific error message in retry-send dialog
- Only scroll to bottom when new message is inserted
- Show specific errors when group creation fails

Code Changes
-----------
- Updated incorrect references to TSMessageAdapters which were actually
  references to OWSMessageData
- MessageSender was extracted from SSK MessagesManager
- access MessagesManager as property
- idiomatic init/properties for Env
- log contact intersections
- Move scroll-to-bottom animation to main thread.

// FREEBIE
9 years ago
Michael Kirk 64f4eb73c5 Allow autogenstrings to find all strings
* Inline #define strings, so genstrings can find them
* Make all strings single line so they don't get truncated by auto-genstrings
* Properly quote LHS in strings file

// FREEBIE
9 years ago
Michael Kirk 11a586a835 New Fingerprint Format
Rather than verifying eachothers keys separately, you now verify the
privacy with your recipient by sharing a single composite number or
QRCode.

This is a breaking change, in coordination with Desktop and Android.

UX
--

Fingeprint is no longer in line with identity key error. Instead you
have the option of going to the full-screen safety number verification
experience.

Overhauled fingerprint design
-----------------------------

* use same modal dismiss button as elsewhere
* remove fingerprint from settings.
* quick slide in animation vs slow fade
  * existing was painfully slow
  * blur effect is better metaphor for something slide over top
  * anyway there was a rendering glitch in the end of fade where
    underlying navbar would "snap" out

Also Fixed
----------
Always provide a name string for contact

* Centralize all the nil-checking
* Fall back to "unknown contact"

allow multi-line error messages

// FREEBIE
9 years ago
Michael Kirk 3e7e67e276 Async migrations framework
* nonblocking by default
* track success of each migration independently

// FREEBIE
9 years ago