Commit Graph

304 Commits (236c17f65e40c6bbfc241a4fcb5f6bb633d404be)

Author SHA1 Message Date
Matthew Chen ac458cc7ad Add unread indicator.
// FREEBIE
9 years ago
Michael Kirk f87696cc6c do not use phone data detectors
The actions offered by the phone number data detectors are confusing
within the context of a messaging app - e.g. people might assume that
the "call" action correspons to a Signal call.

// FREEBIE
9 years ago
Michael Kirk cb1c843979 Fix disclosure icon direction on iOS9
// FREEBIE
9 years ago
Matthew Chen 1b99fd1df4 Respond to CR.
// FREEBIE
9 years ago
Matthew Chen ea34cec0d9 Clean up ahead of PR.
// FREEBIE
9 years ago
Matthew Chen 96e155c75e Rework appearance of voice messages and audio attachments.
// FREEBIE
9 years ago
Michael Kirk 0b6962cdd0 contacts reminder in compose view
// FREEBIE
9 years ago
Matthew Chen 2f3831e04b Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 716aa772f6 Always sync and log push tokens. Apply OWSAlerts in more places.
// FREEBIE
9 years ago
Matthew Chen b47337c0ba Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 34a7f9cba5 Respond to CR.
// FREEBIE
9 years ago
Michael Kirk fbcda40400 rename class, extract color
per code review

// FREEBIE
9 years ago
Michael Kirk a58a71f8f4 no contacts banner -> system settings 9 years ago
Matthew Chen 0c4351a908 Use SignalAccount class to sync contacts.
// FREEBIE
9 years ago
Matthew Chen 1b99671e0e Clean up ahead of PR.
// FREEBIE
9 years ago
Matthew Chen 363d84fd2d Update “new conversation” view to use OWSTableView, contacts view helper, etc.
// FREEBIE
9 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
9 years ago
Matthew Chen 6801963a1b Add SignalAccount class.
// FREEBIE
9 years ago
Matthew Chen 93700f1044 Extract labels for phone numbers.
// FREEBIE
9 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
9 years ago
Matthew Chen 8a8b10b688 Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 5c0c9b533e Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 9779527cf2 Let users edit group name and avatar by tapping on them in group settings view.
// FREEBIE
9 years ago
Matthew Chen 210802994e Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 03a97cdd70 Only the last cell associated with a media adapter should clear its views.
// FREEBIE
9 years ago
Michael Kirk 70d235a670 Choose arbitrary attachments from iCloud/GDrive/Dropbox/etc
// FREEBIE
9 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
9 years ago
Matthew Chen d65e398450 Respond to CR.
// FREEBIE
9 years ago
Matthew Chen b2664158b1 Pause animated gifs when offscreen; clean up media views more aggressively.
// FREEBIE
9 years ago
Matthew Chen e36b5a4602 Improve group members view.
// FREEBIE
9 years ago
Matthew Chen 27aeb425e4 Round avatar icons.
// FREEBIE
9 years ago
Matthew Chen 19d8f6cf01 Improvements around contact cells.
* Improve handling of accessory views/types.
* Use contact cell in “new/edit group” view.
* Don’t hide blocked contacts and group members in “new/edit group” view.
* Let users “unblock-to-add” blocked contacts in “new/edit group” view.

// FREEBIE
9 years ago
Matthew Chen 8867b2882e Tweak appearance of contact cell.
// FREEBIE
9 years ago
Michael Kirk 78705d3ac1 right align blocked indicator
// FREEBIE
9 years ago
Matthew Chen b3d6a82c4f Show blocked users in “add to block list” view.
// FREEBIE
9 years ago
Matthew Chen a7296db1fe Add contacts list to “add blocked number” view.
// FREEBIE
9 years ago
Matthew Chen 9db33a9651 Remove RedPhone code.
// FREEBIE
9 years ago
Matthew Chen 36ea273475 Slightly tweak the appearance of the attachment upload progress bar.
// FREEBIE
9 years ago
Matthew Chen bf2db32f85 Respond to CR.
// FREEBIE
9 years ago
Matthew Chen 9ae047a1da Add progress & disable media views while uploading attachments.
// FREEBIE
9 years ago
Matthew Chen e34d529620 Prevent system edge swipe gestures from showing/hiding call controls.
// FREEBIE
9 years ago
Matthew Chen 699b364ec7 Show/hide call view controls in remote video mode if user taps screen.
// 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
Michael Kirk e7bc2e86db Show email as name when contact has no name
// FREEBIE
9 years ago
Michael Kirk 243ff190bc Fix crash in group listing / new group views
The broken code addressed in 8211d4584f
was duplicated a couple of places. This commit ferrets out the rest of
them and centralizes the logic in the ContactsManager.

// FREEBIE
9 years ago
Michael Kirk 8211d4584f Don't explode when missing first name
// FREEBIE
9 years ago
Michael Kirk 5a0141003d "No Contacts" screen uses new invite flow
fixes #1501

// 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 7120ca1192 Make sure we're laying out contact cell after assigning avatar
// 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 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 49de772997 Fix slow reloading conversation view. (#1397)
Fix animation memory leak exacerbated every time you reload a
conversation with expiration timers.

Stop animation on cells that aren't currently being displayed. This is
relatively minor compared to the above, but still, no reason to waste
cycles.

// FREEBIE
9 years ago
Michael Kirk 5b01976466 Fix hidden incoming audio
Missed bottom constraint when customizing incoming message bubbles to
include timer icon in footer.

// FREEBIE
9 years ago
Michael Kirk 1e417ea93f Longpress to copy safety numbers
Nothing else to see here. =)

 ༼ つ ◕◡◕ ༽つ [swift]

// FREEBIE
9 years ago
Michael Kirk 04f5c3ce22 Slow the timer animation down a bit.
fixes #1384

// FREEBIE
9 years ago
Michael Kirk 607262df6a Remove observers on dealloc (#1379)
// FREEBIE
9 years ago
Michael Kirk 7106eee4a3 Call notifications are deletable
// FREEBIE
9 years ago
Michael Kirk 405990a7d5 Don't select or copy info message text.
// FREEBIE
9 years ago
Michael Kirk 023e62e6a6 fix reused cell starts blinking too early
There are dispatch_async's waiting to be fired on some re-used cells.

// FREEBIE
9 years ago
Michael Kirk 94a23021f8 Size error messages correctly.
* calculate size of info message using the info message font.
* offset by the info message header

There were instances of lines getting cropped, or an extra line being
added. The previous, more conservative, solution was to just make every
bubble too big, but it looked terrible.

// FREEBIE
9 years ago
Michael Kirk ee0cce75e8 Disappearing Messages
* Per thread settings menu accessed by tapping on thread title

  This removed the toggle-phone behavior. You'll be able to see the phone
  number in the settings table view.

  This removed the "add contact" functionality, although it was already
  broken for ios>=9 (which is basically everybody).

  The group actions menu was absorbed into this screen

* Added a confirm alert to leave group (fixes #938)

* New Translation Strings
* Extend "Add People" label to fit translations.
* resolved issues with translations not fitting in group menu

* Fix the long standing type warning where TSCalls were assigned to a TSMessageAdapter.

* Can delete info messages

  Follow the JSQMVC pattern and put UIResponder-able content in the
  messageBubbleContainer. This gives us more functionality *and* allows us
  to delete some code. yay!

  It's still not yet possible to delete phone messages. =(

* Fixed some compiler warnings.

* xcode8 touching storyboard. So long xcode7!

* Fixup multiline info messages.

  We were seeing info messages like "You set disappearing message timer to
  10" instead of "You set disappearing message timer to 10 seconds."

  Admittedly this isn't a very good fix, as now one liners feel like they
  have too much padding.

   If the message is well over one line, we were wrapping properly, but
  there's a problem when the message is *just barely* two lines, the cell
  height grows, but the label still thinks it's just one line (as evinced
  by the one line appearing in the center of the label frame. The result
  being that the last word of the label is cropped.

* Disable group actions after leaving group.

// 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 be0556f68a fix "last active" date
// FREEBIE
9 years ago
Michael Kirk 5200cccbe3 Update translations
* New bg (Bulgarian) localization!
* New sq (Albanian) localization!
* replace unfinished bg_BG localization with complete bg localization
* caps keys to make it easier to see missing localizations
* pull with newly pushed source keys

// FREEBIE
9 years ago
Michael Kirk 7c3a07960f Device manager fixes
* Avoid intermittent crash in device manager via YapDatabaseModified
* Properly align refresh text when expecting new device
* Avoid glitchy activityIndicator while polling
* Expose edit mode toggle

Much of the code changes here were in the corresponding SSK update.

// FREEBIE
9 years ago
Michael Kirk ef6784ed95 Device Manager
* List linked devices
* Adding a new device
* Removing a device

TODO: design on the QRScanner

// FREEBIE
9 years ago
Brandon Cheng 583d3e82ad Alternative solution for requiring direct taps for launching media view (#1235) (#1261)
// FREEBIE
9 years ago
Michael Kirk 835021b0d3 Fix extra tall error messages by rendering timestamp (#1268)
We were ocassionally seeing extra tall error messages. This is because,
when appropriate, we were adding the space for a timestamp, but then
never actually rendering the time stamp.

So now:

- Error Messages aren't rendered too-tall
- Error Messages get a printed timestamp when appropriate

// FREEBIE
9 years ago
Michael Kirk f8d65ab0f5 Post JSQMVC code cleanup
* formatting
* referencing TODOS
* remove unnecessary logging

// FREEBIE
9 years ago
Michael Kirk 1a4b38e34b Modernize init, dealloc, dicts
* Use NS_DESIGNATE_INTIALIZER to ensure we're setting all the variables we need to be in OWSCall
* no need to nil properties in dealloc on ARC
* use declarative dictionaries for legability

// FREEBIE

use declarative dictionaries for clarity
9 years ago
Michael Kirk e930574b1b rename our custom JSQ classes to OWS so it's clear what is/not our code.
This was done as part of unforking JSQMessagesViewController, but is
intentionally a separate commit so we can separate formatting changes
from code changes in git history.

* Import frameworks like:
    #import <FrameworkName/HeaderName.h>
* instead of:
    #import "HeaderName.h"

// FREEBIE
9 years ago
Michael Kirk 933281f234 format objc.
This is part of unforking JSQMVC, but I'm only reformatting files
otherwise changed rather than reformatting the entire project for git
sanity.

This is intentionally a second commit so we can separate formatting
changes from code changes

* brace should drop after method definition (this is common across
  almost all objc projects, and allows you to quickly differentiate
  multi-line method signatures from their implementation.
* aligning consecutive assignments ongoingly muddies git history

// FREEBIE
9 years ago
Michael Kirk 4d320d6015 Unfork JSQMessagesViewController
Geting back on upstream fixes a couple bugs (see ##Bugfixes), and also
will make future updates easier.

The unforking process was basically this:

* move custom message types (Calls and DisplayedMessages) classes from our
  custom JSQMVC fork into Signal-iOS.
* Move any method customization into our subclass. Including
  ColletionView stuff, bubble sizing, and gesture behavior

Bug Fixes
---------
* Fix mis-sized incoming media bubbles.

Bubble size was being cached by interaction id. Which broke when
receiving an attachment. The problem is that incoming media messages
were initially the height of a "Downloading Attachment" info message.
Instead we use the mediaHash for media messages to expire the bubble
size when the media changes.

* fix missized bubble when MVC did appear

The MessagesViewController isn't sized correctly until ViewWillAppear.
This caused the first round of bubbles to be rendered incorrectly (they
assumed a larger container than they had).  I think is reflected in the
current version of the app by a reflow occurring shortly after the view
appears.

Chores
------
* bump travis to build with xcode8
* specify RQV development team for device build. required by xcode 8 beta

Cleanup
------
* Refactor messageing XIB so that elements are hangning outside of
  the views frame
* Fix compiler warning with explicit cast
* delete deprecated lineBreakmode, it's the default value anyway.

// FREEBIE
9 years ago
Michael Kirk 62633ff7f4 remove unused code
// FREEBIE

dot notation is only for property access

// FREEBIE

remove unused code
9 years ago
Michael Kirk 1e0f0157c1 namespace ContactsManager -> OWSContactsManager
rename test class ContactManager->OWSContact_s_Manager
update docs

// FREEBIE
9 years ago
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.
10 years ago
Frederic Jacobs 53793e3c0f Fixes #950 10 years ago
Frederic Jacobs f6c0625c2c Removing unused imported classes.
//FREEBIE
10 years ago
Frederic Jacobs 9569a9b9c6 Multiple visual enhancements and repo cleanup.
- Revising iconography to stick to v2.0 design.
- Multiple bug fixes based on testers feedback
- Integration with system addressbook
- Removing unused assets.
11 years ago
Frederic Jacobs 7242680464 Contact ordering and graying out RedPhone-only users. 11 years ago
Christine Corbett 6d2acb70fc in message view compose, ability to call
• RedPhone contacts which aren't TextSecure contacts are disabled from starting conversation via compose.
11 years ago
Christine Corbett ccdc4b5d17 Redesign implementation.
Result of stashed commits by @corbett and @abolishme
11 years ago
Frederic Jacobs 402df72306 Attachments handling
- Sends image rotated
- If message is delete, delete the attachment db object and file
- Delete attachment from detail view
11 years ago
dtsbourg 91e0b66424 Addresses multiple UI issues.
- New Contact spacing to let user tap call/message icons
- Handeling error messages, delivery receipts, timestamps
11 years ago
Frederic Jacobs b22579d8f8 Settings and thread fixes. 11 years ago
Frederic Jacobs b58d2fb864 Integrating deletion of threads. 11 years ago
dtsbourg 84e12a39c9 ContactDetail: Link notes 11 years ago
dtsbourg e48ea52924 ContactDetail: Fix crash on parsedPhoneNumbers 11 years ago
dtsbourg 95c14ddefb General: Unused views cleanup 11 years ago
Frederic Jacobs 43af8c18e3 Merging UI code with some basic TextSecureKit code. 11 years ago
dtsbourg a60bc8be92 Initial Message UI 11 years ago
Frederic Jacobs 510831d701 Auto-layout enhancements + Submit Debug Logs 11 years ago
Craig Gidney f1de95ab06 Recursively added dot syntax, translating more terms when they were encountered in the dif
FREEBIE
11 years ago
Craig Gidney baaef78323 Using dot syntax for local*, all*, full*, first*, last*, to*, encodedAs*, copy*
FREEBIE
11 years ago
Craig Gidney 4cd30f32ed Using getter syntax for shared*, is*, and has* 11 years ago
Craig Gidney 9e36872644 Using dot syntax for count and length 11 years ago
Craig Gidney 1e9a3e9a46 Ran "Edit -> Refactor -> Convert to Modern Objective-C Syntax"
- dictionaryWithObject -> @{key: val}
- objectAtIndex -> a[i]
- numberWithBool/Int/etc -> @1, @(val)
- Reverted friendly fire on ProtocolBuffers
- Did not do ANY other changes (including changes to make more refactorings succeed)
//FREEBIE
11 years ago
Frederic Jacobs 60fb869baa Closes #80 #37
- Use of new Keychain Access attribute
- Error management (notifying the user) when opening app without
required push and microphone permission
- Enforcing APNID are sent to server, retry later if not able to reach
server
11 years ago
Frederic Jacobs 44bd921db2 Changes for arm64 and Clang redefined-types 11 years ago
Frederic Jacobs 6373507108 initial commit 12 years ago