Commit Graph

90 Commits

Author SHA1 Message Date
Michael Kirk
6466e9f41f [SSK] Better logging for envelopes
Leave last 3 digits of recipientId when scrubbing logs.

This is in line with other Signal clients, and makes it possible to
trace interactions.

// FREEBIE
2017-03-23 17:10:26 -04:00
Michael Kirk
6036e20079 Filter high diacritical text, regardless of length
// FREEBIE
2017-03-22 14:59:29 -04:00
Michael Kirk
da32570dc6 [SSK] remove convoluted dependency
Moved query method to PhoneNumberUtil since that's they only caller.
Moved corresponding tests to SSK

// FREEBIE
2017-03-20 15:35:09 -04:00
Matthew Chen
a264d9aa9b Responding to CR.
// FREEBIE
2017-03-16 15:04:59 -03:00
Matthew Chen
a226a4a1b3 Respond to CR.
// FREEBIE
2017-03-16 15:04:59 -03:00
Michael Kirk
3e651fb8df filter undisplayable text
// FREEBIE
2017-03-09 17:52:19 -05:00
Michael Kirk
f37b8bac0f Fix test to use updated PeerConnectionClient API
// FREEBIE
2017-02-27 18:58:34 -05:00
Matthew Chen
f4453eb995 Enable WebRTC-based audio and video calls by default.
// FREEBIE
2017-02-21 11:10:57 -05:00
Matthew Chen
3c3f782e7d Clean up prekey usage.
// FREEBIE
2017-02-14 13:46:08 -05:00
Matthew Chen
97001018ae Clean up prekey logic.
// FREEBIE
2017-02-10 16:35:16 -05:00
Matthew Chen
ca76ec6f36 Respond to CR.
// FREEBIE
2017-02-06 09:39:14 -05:00
Matthew Chen
d9bcd563b1 Avoid possible deadlock in PeerConnectionClient.
// FREEBIE
2017-02-06 09:33:47 -05:00
Matthew Chen
b415b6142f Respond to CR, mainly by fixing broken tests.
// FREEBIE
2017-02-01 12:26:10 -05:00
Michael Kirk
dbb29d7d7e Don't require recording permissions until call is ringing.
We do this by manually managing the RTCAudioSession.
Unfortunately to do this we have to include a couple of RTC headers not
exported by the default build of WebRTC.framework (see: Libraries/WebRTC)

// FREEBIE
2017-01-17 21:49:13 -05:00
Michael Kirk
ca218ebb64 update call signatures for test fakes
// FREEBIE
2017-01-17 21:49:12 -05:00
Michael Kirk
32789bd960 Move RTCDataChannelDelegate to PeerConnectionClient
- minimizes CallService exposure to WebRTC

// FREEBIE
2017-01-17 20:14:33 -05:00
Michael Kirk
8998853aff Move RTCPeerConnectionDelegate to PeerConnectionClient
This makes sense as PeerConnectionClient is our interface to WebRTC

- Makes it easier to test PeerConnectionClient and CallService
- Allows us to shrink CallService class a bit (it's huge)

// FREEBIE
2017-01-17 20:14:33 -05:00
Daniel Rosado
76d01863db [Invite Flow] Use email address to collate contacts when no given or family name is provided
* Add tests to ContactsPicker collate contacts functionality
2016-12-09 15:12:13 -05:00
Michael Kirk
7bcf5190b4 Address some lingering emoji cropping
This is an expedient, but not good, "fix". Some messages are going to
have extra space at the bottom of the bubble. But, for the time being,
that's preferable to getting messages clipped.

// FREEBIE
2016-11-13 11:48:05 -05:00
Michael Kirk
ddf0890408 Fix crash on nil message
// FREEBIE
2016-11-04 16:32:12 -04:00
Michael Kirk
bd370f1de4 Fix cropped Chinese/Japanese messages
The earlier fix for the broken ios10 emoji font ended up breaking
messages for some users with a tall font.

Here we have a lighter touch - ensuring we don't touch messages that
don't use emoji.

Also, introduce a different approach to the fix, rather than trying to
compute the bounding rect of an appropriately attributed string, just
add an extra bit of height per line.

This approach isn't ideal for long messages with only one emoji line in
them, but the previous approach was incompatible with Chinese messages
that also contain emoji. See the new
`MesssagesBubblesSizeCalculatorTest.swift` for test cases considered.

// FREEBIE
2016-11-03 16:22:33 -04:00
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
2016-11-03 16:13:49 -04:00
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
2016-10-26 15:22:35 -04:00
Michael Kirk
2ab6955967 More logging, scrub phone numbers from file logs (#1357)
Phone number are still logged in TTY for development.

// FREEBIE
2016-09-27 21:20:58 -04:00
Michael Kirk
84156698c4 Provision device from QRCode.
NEEDS DESIGN - will likely have an intermediate "device manager" screen.

* extracted QRCode Scanner into re-usable ViewController

// FREEBIE
2016-09-02 12:40:21 -04:00
Michael Kirk
9db3b0db27 Consistent and efficient media Delete/Copy/Save UX
copy/save/delete is accessed via longpress for all media messages, just
like for simple text messages.

Notes
-----
We don't support saving audio attachments as it's not clear where they should go.
(I don't think users expect them to end up in their iTunes library.)

There is still no UX for "pasting" media into Signal.

Removed the now redundant (and confusing) "share" button interface.

//FREEBIE
2016-07-18 09:20:48 -07:00
Michael Kirk
a181d218cf extract and test contact searcher
// FREEBIE
2016-06-28 14:13:39 -07:00
Michael Kirk
1e0f0157c1 namespace ContactsManager -> OWSContactsManager
rename test class ContactManager->OWSContact_s_Manager
update docs

// FREEBIE
2016-06-28 08:58:29 -07:00
Frederic Jacobs
4034baedb9 Adapting to renaming. 2016-04-08 09:47:41 +02:00
Frederic Jacobs
1b02e186f8 Fixes #146 #147. 2015-12-24 18:52:18 +01:00
Frederic Jacobs
975cda312c Adding missing queue test.
The test wasn’t running because wasn’t prefixed with `test`.

//FREEBIE
2015-12-24 16:35:20 +01:00
Frederic Jacobs
c6d44e59e2 TextSecureKit Refactoring
- Using same clang format file for old and new files.
- Moving out all TextSecure code to allow other clients (OS X, iOS) to
  integrate easily TextSecure functionality.
- Use TextSecure API to signup.
2015-12-22 23:41:10 +01:00
Frederic Jacobs
26f9207cab Bye Bye Bloomfilters
For reasons outlined in
https://whispersystems.org/blog/contact-discovery/ , Signal will no
more use bloom filters for RedPhone contact intersection.
2015-11-29 01:14:49 +01:00
Frederic Jacobs
bbde7cd2a8 iOS 9 Support
- Fixing size classes rendering bugs.
- Supporting native iOS San Francisco font.
- Quick Reply
- Settings now slide to the left as suggested in original designed
  opposed to modal.
- Simplification of restraints on many screens.
- Full-API compatiblity with iOS 9 and iOS 8 legacy support.
- Customized AddressBook Permission prompt when restrictions are
  enabled. If user installed Signal previously and already approved
  access to Contacts, don't bugg him again.
- Fixes crash in migration for users who installed Signal <2.1.3 but hadn't signed up
  yet.

- Xcode 7 / iOS 9 Travis Support
- Bitcode Support is disabled until it is better understood how exactly
  optimizations are performed. In a first time, we will split out the
  crypto code into a separate binary to make it easier to optimize the
  non-sensitive code. Blog post with more details coming.
- Partial ATS support. We are running our own Certificate Authority at
  Open Whisper Systems. Signal is doing certificate pinning to verify
  that certificates were signed by our own CA. Unfortunately Apple's App
  Transport Security requires to hand over chain verification to their
  framework with no control over the trust store. We have filed a radar
  to get ATS features with pinned certificates. In the meanwhile, ATS is
  disabled on our domain. We also followed Amazon's recommendations for
  our S3 domain we use to upload/download attachments. (#891)
- Implement a unified `AFSecurityOWSPolicy` pinning strategy accross
  libraries (AFNetworking RedPhone/TextSecure & SocketRocket).
2015-10-31 04:45:55 +01:00
Frederic Jacobs
ada07351e1 Support for supportsVOIP attribute.
- Deprecates RedPhone upgrade flow.
- Adds a generic upgrade dialog.
- Upgrades dependencies.
- Reorganizes `TSStorageManager` & TSNetworkManager imports.
2015-08-23 00:00:39 +02:00
Frederic Jacobs
f6c0625c2c Removing unused imported classes.
//FREEBIE
2015-07-27 16:19:08 +02:00
Frederic Jacobs
b6ef5f0b7f Bloomfilter moves to Cache folder
The bloom filter is not user generated content so Apple is not going to
let us store it into the Documents folder. Moving it to the Cache
folder.
2015-03-12 00:46:31 +01:00
Frederic Jacobs
456d1c479a Fixes #530 2015-02-28 11:40:00 +01:00
Frederic Jacobs
19ca10d431 Allows retry of failed downloads. 2015-02-19 01:57:38 +01:00
Christine Corbett
8a5c5efd73 Group avatar relationship for deletion. 2015-01-31 01:37:39 -10:00
Frederic Jacobs
884c960798 Closes #319 2015-01-27 19:54:14 -10:00
Frederic Jacobs
bcd98f90ee Closes #263 2015-01-27 15:31:54 -10:00
Frederic Jacobs
5ccbc4131b Closes #315 2015-01-25 14:58:40 -10:00
Frederic Jacobs
7c658b2879 Enhancements in build configuration.
- Helps onboarding of new contributors because signup generates a fake
push token to register devices.
- Deleted Ad-Hoc configuration since no more HockeyApp distribution.
TestFlight uses default `AppStore release` build configuration.
2015-01-18 10:28:11 +01:00
Christine Corbett
b954ff2445 Closes #261 - Signal 1.0 to 2.0 utility.
Reviewed-by: @FredericJacobs
2015-01-16 14:24:05 +01:00
Christine Corbett
e58f9bf966 Groups: Update messages, avatars and bug fixes 2015-01-04 11:30:27 +01:00
Christine Corbett
333c920e0b Group functionality
• create
• send/receive full functionality
• basic UI for group updating.

TODOS:
    -group avatars not supported
    -group update occurrence initiated by Android displayed in thread UI but not yet fully

Reviewed-by: @FredericJacobs
2015-01-04 11:30:26 +01:00
Frederic Jacobs
8334adb4d9 Attachments: Sending and receiving 2015-01-04 11:30:26 +01:00
Frederic Jacobs
9683451ed9 Rename to 'attachment' 2015-01-04 11:30:26 +01:00
Frederic Jacobs
a55b00552d Removing keyboard when proposing new fingerprint. 2015-01-04 11:30:25 +01:00