Commit Graph

308 Commits (362b383785c3c61162d5089a29f907576d6fce16)

Author SHA1 Message Date
Matthew Chen a013a7206e Rework and unify the system messages.
// FREEBIE
8 years ago
Matthew Chen 2cbf1e1d05 Rework and unify the system messages.
// FREEBIE
8 years ago
Matthew Chen a69c6cce4e Decompose MessagesViewController, add “scroll to bottom button”, improve scrolling behavior.
// FREEBIE
8 years ago
Michael Kirk 130aa132a0 Reject incoming calls from an unseen changed identity
// FREEBIE
8 years ago
Michael Kirk 9a2f218bf3 show SN confirmation before adding to group
* Extract SN confirmation dialog

// FREEBIE
8 years ago
Michael Kirk 1a03be8ae7 Fetch safety number upon entering thread
* uniform method to get recipients in group/contact thread
  * use it to clean up markAsSeenJob

// FREEBIE
8 years ago
Michael Kirk bb25d2beb6 IdentityKeyStore changes
1) Always accept keys from incoming messages

2) Block sending only if it's a recent change, or if always
   block is enabled

// FREEBIE

// FREEBIE
8 years ago
Matthew Chen 4680a2465a Remove registration storyboard.
// FREEBIE
8 years ago
Matthew Chen db097ab8de Fix caching of message bubble sizes.
// FREEBIE
8 years ago
Matthew Chen bc501b16f2 Let users manually specify the domain fronting country.
// FREEBIE
8 years ago
Matthew Chen 867eb7d741 Convert CountryCodeViewController.
// FREEBIE
8 years ago
Matthew Chen a37b194dc0 Add debug functions for sending media messages.
// FREEBIE
8 years ago
Matthew Chen 7b70fe674a “Add to contacts” offer.
// FREEBIE
8 years ago
Matthew Chen ac458cc7ad Add unread indicator.
// FREEBIE
8 years ago
Matthew Chen 0ec095f216 Nag users on iOS 8 to upgrade.
// FREEBIE
8 years ago
Michael Kirk 557488bc7d return iOS8 support in project files
// FREEBIE
8 years ago
Matthew Chen ea34cec0d9 Clean up ahead of PR.
// FREEBIE
8 years ago
Matthew Chen 96e155c75e Rework appearance of voice messages and audio attachments.
// FREEBIE
8 years ago
Matthew Chen 19b80d1f4b Rework the “disappearing messages” logic.
// FREEBIE
8 years ago
Matthew Chen ad3a1a671a Merge remote-tracking branch 'origin/hotfix/2.11.3' 8 years ago
Matthew Chen 34a7f9cba5 Respond to CR.
// FREEBIE
8 years ago
Michael Kirk fbcda40400 rename class, extract color
per code review

// FREEBIE
8 years ago
Michael Kirk a58a71f8f4 no contacts banner -> system settings 8 years ago
Matthew Chen 0c4351a908 Use SignalAccount class to sync contacts.
// FREEBIE
8 years ago
Michael Kirk ce2ee759f8 Update to latest recommended xcode.proj settings
// FREEBIE
8 years ago
Matthew Chen 363d84fd2d Update “new conversation” view to use OWSTableView, contacts view helper, etc.
// FREEBIE
8 years ago
Michael Kirk 2ec893d315 Ensure we're retaining all promises to completion
// FREEBIE
8 years ago
Michael Kirk b24cf29189 don't request contacts until necessary
Most commonly this will be after hitting the "compose" button

But also we'll do it in the SignalViewController once you've received a
message.

- get rid blocking contacts nag
- use Contacts framework simplifies logic
- remove dead AB code

// FREEBIE
8 years ago
Matthew Chen 2bec1db541 Respond to CR.
// FREEBIE
8 years ago
Matthew Chen 6801963a1b Add SignalAccount class.
// FREEBIE
8 years ago
Matthew Chen 42768294ee Extract labels for phone numbers.
// FREEBIE
8 years ago
Matthew Chen 61f59067b6 Improve contact-related views.
* Add support for contacts with more than one Signal account using ContactAccount class.
* Use OWSTableViewController in contact-related views.
* Let users add non-contacts to groups.
* Improve the "new group" and "edit group" views.
* Add utility methods for displaying alerts.
* Warn users before discarding unsaved changes in "edit group" view.
* Pull out "contact view helper" to de-duplicate common logic among contact-related views.
* Pull out "group view helper" to de-duplicate common logic among group-related views.
* Pull out new base class for view used to add accounts to groups or the block list.

// FREEBIE
8 years ago
Matthew Chen 6e36ce97a5 Let users share imported files to a thread or contact of their choice.
// FREEBIE
8 years ago
Michael Kirk 70d235a670 Choose arbitrary attachments from iCloud/GDrive/Dropbox/etc
// FREEBIE
8 years ago
Matthew Chen eb23252c6c Fix timer retain cycle.
// FREEBIE
8 years ago
Matthew Chen 980d726a48 Add audio attachment player.
* Fix two bugs around play/pause button appearance.
* Fix bugs around stopping playback when leaving view/entering background.
* Fix bugs around cleaning up playback state  when leaving view/entering background.
* Fix audio playback vs. hardware mute button.
* Improve handling of invalid audio attachments.

// FREEBIE
8 years ago
Michael Kirk d9e3e87735 New downloading progress view (#2006)
Replace previous "scary" warning-style attachment notifications with
something less alarming.

Includes file name and file type emoji when discernable.

// FREEBIE
8 years ago
Matthew Chen b2664158b1 Pause animated gifs when offscreen; clean up media views more aggressively.
// FREEBIE
8 years ago
Matthew Chen bfd29cd994 Send contacts sync messages whenever the contacts change.
// FREEBIE
8 years ago
Matthew Chen f38f3d8887 [SSK] Update SignalAttachment to allow arbitrary attachments.
// FREEBIE
8 years ago
Matthew Chen 54cd8cfa3c Add blacklist controls to 1:1 conversation view.
// FREEBIE
8 years ago
Matthew Chen 271cc6f07e Sketch out BlockListViewController and AddToBlockListViewController.
// FREEBIE
8 years ago
Matthew Chen a155df161f Pull out OWSTableViewController.
// FREEBIE
8 years ago
Matthew Chen d12a582ee3 Rename source directories with a space in their name.
// FREEBIE
8 years ago
Michael Kirk 0b49037179 Remove some more RP related code
// FREEBIE
8 years ago
Matthew Chen 4649fcfd20 Add "oversize test message" view.
// FREEBIE
8 years ago
Matthew Chen 80fbc093d9 Handle oversize text messages and arbitrary attachments.
// FREEBIE
8 years ago
Matthew Chen 6b8d4ea7ae Sketch out debug UI.
// FREEBIE
8 years ago
Matthew Chen 9db33a9651 Remove RedPhone code.
// FREEBIE
8 years ago
Michael Kirk f29ca7851f Move PureLayout back to cocoapods for now
This introduced some unexpected crashes related to frameworks in Swift.

// FREEBIE
8 years ago
Michael Kirk f2728d461b Remember to copy PureLayout.framework
// FREEBIE
8 years ago
Matthew Chen 814c6d2505 Only initiate WebRTC calls, not RedPhone calls.
// FREEBIE
8 years ago
Michael Kirk da32570dc6 [SSK] remove convoluted dependency
Moved query method to PhoneNumberUtil since that's they only caller.
Moved corresponding tests to SSK

// FREEBIE
8 years ago
Michael Kirk c39a26659e Merge pull request #1860 from WhisperSystems/mkirk/intern-pastelog
Intern pastelog
8 years ago
Matthew Chen 9ae047a1da Add progress & disable media views while uploading attachments.
// FREEBIE
8 years ago
Matthew Chen 442546fba8 Align the message state indicators with the behavior on Android and desktop.
// FREEBIE
8 years ago
Matthew Chen 1820fdbde8 Merge remote-tracking branch 'origin/hotfix/2.8.3' 8 years ago
Michael Kirk 8adba61b37 intern Pastelog back into Signal.
Not worth the cocaopods/framework/project mgmt machinery for making
changes to 1 class.

// FREEBIE
8 years ago
Michael Kirk 99c982fbb2 change ZXing to framework for faster incremental compiles in xcode
// FREEBIE
8 years ago
Michael Kirk 3ee1d5568c Migrate existing users to RTC calling
// FREEBIE
8 years ago
Matthew Chen cd928cd9be Update MessagesViewController to use SignalAttachment.
// FREEBIE
8 years ago
Michael Kirk 3e651fb8df filter undisplayable text
// FREEBIE
8 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
8 years ago
Michael Kirk b371e627c4 one-time carousel of changes
// FREEBIE
8 years ago
Matthew Chen a4093a5f7f Respond to CR.
// FREEBIE
8 years ago
Matthew Chen 5bd44673ea Add sharing of attachments.
// FREEBIE
8 years ago
Michael Kirk 2791b9551e bump build
// FREEBIE
8 years ago
Matthew Chen 97001018ae Clean up prekey logic.
// FREEBIE
8 years ago
Matthew Chen c43063e1d6 Add “interstitial call view” that is shown during lengthy “webrtc supported” check.
// FREEBIE
8 years ago
Michael Kirk bbfd9ba74d Place Signal/Redphone calls from system contacts
// FREEBIE
8 years ago
Matthew Chen 699b364ec7 Show/hide call view controls in remote video mode if user taps screen.
// FREEBIE
8 years ago
Michael Kirk e556a369bb Include missing files to fix tests
// FREEBIE
8 years ago
Michael Kirk 814aec6cdd Recover CallKit state when remote client fails to hangup
Distinguish between localHangup, remoteHangup, and call failure.

This allows us to put CallKit in the proper state, ready to receive new
calls without having a backlog of phantom calls which haven't been
properly removed.

Note the "call error" occurs at the point ICE fails, which takes a
while. Anecdotally, like 10 seconds, which feels like a long to be
talking into the ether.

I briefly considered failing at 'disconnected', which happens much
sooner, but that's actually a recoverable state. E.g. if you toggle
airplane mode you can see that you bounce into `disconnected` and then
back to `connected`, so I don't think we'd want to fail the call as long
as WebRTC considers it "recoverable".

// FREEBIE
8 years ago
Michael Kirk a6029f2545 Merge remote-tracking branch 'origin/master' into feature/webrtc 8 years ago
Michael Kirk b2091431dc Fix retain cycle
// FREEBIE
8 years ago
Michael Kirk 87ed662116 Persist AudioService if CallViewController is dismissed
...in response to CR, move the AudioService off of the CallViewController

Adopt multiple observer pattern vs. a singular delegate. Doing so
required implementing some machinery to address the ARC (see:
Weak.swift)

// FREEBIE
8 years ago
Michael Kirk 4374e431a2 Respect silent switch in and out of app.
// FREEBIE
8 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
8 years ago
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
8 years ago
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
8 years ago
Matthew Chen c6de676018 Respond to CR.
// FREEBIE
8 years ago
Matthew Chen 4a65a88512 Rework new call view.
// FREEBIE
8 years ago
Michael Kirk a17873291b Fix up tests
// FREEBIE
8 years ago
Michael Kirk 9e248168b9 merge CallKitProviderDelegate into CallKitCallUIAdaptee
There was not a clear distinction in responsibilities and mostly the
Adaptee was just delegating to the CKProviderDelegate
8 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
8 years ago
Thomas Guillet d7b27a4021 Refactor ContactsPicker to show a clean search bar
* Replace UITableviewController to UIViewController
* Create a custom xib file
8 years ago
Michael Kirk 90daf60c56 Fix travis build
* Add generated Signal-Swift.h to test search header path. You must do
  this when testing an ObjC clas with swift dependencies (PushManager. in this case)
* Word on the street is that XCode8.2 is less flaky for running simulator tests

// FREEBIE
8 years ago
Michael Kirk ddba843d44 Censorship circumvention in Egypt and UAE
* domain fronting
* non-websocket message fetching

// FREEBIE
8 years ago
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
9 years ago
Michael Kirk 5a0141003d "No Contacts" screen uses new invite flow
fixes #1501

// FREEBIE
9 years ago
Josh Schneier 896dd026d2 Remove DJWActionSheet 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 06ca3c9290 Mail and Message invite flow
* 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
9 years ago
Michael Kirk 584118a9fc compare safety numbers with clipboard (#1475)
* Compare safety numbers with clipboard

// FREEBIE
9 years ago
Michael Kirk 88d9ef987f Share dialog for Safety Numbers
// FREEBIE
9 years ago
Michael Kirk d3c2f44aeb Exclude extra data detectors.
Data detectors work by matching local text against a series of local
matchers. No network activity is required. Some of the data detectors
are really useful (e.g. a link, or being able to copy a phone number).

Some aren't very useful, e.g. pop culture references, and seeing things
underlined is giving people the false impression that their data is
being inspected remotely.

// 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
Jarosław Pawlak c152c1c83a asking for camera permissions #1363 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 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
9 years ago