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
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
* compress non-GIF media as JPEG
There are some problems with this approach
- Potentially re-encoding files
- Lots of code in the controller
* Compress GIF > 5MB into static JPEG.
This isn't ideal, but a stopgap to prevent people from sending huge
GIFs, while also giving them *some* kind of feedback (e.g. a static jpeg
is sent rather than their being no indication to sender+recipient that
anything was attempted.)
* spell bmp correctly
// FREEBIE
FIXES#1222
Maybe this code was a vestige of a former way we were customizing the
back button. In any case, it's no longer required for swipe-to-pop
functionality.
// FREEBIE
* all Signal users can send text messages, never hide texting toolbar.
//FREEBIE
* Fix composition box size when switching threads.
Partial revert of 2c83046ff6 which
introduced a shared reusable message view controller across threads.
2c83046ff6 resulted in several discovered
bugs so far (#1179, #1150, #1152, and maybe: #1146). It's pretty clear
at this point we're going against the grain of how
JSQMesageViewController is intended to be used, and since the nominal
purpose of this feature (iPad Layout) doesn't exist, we should revert to
the known good way of interacting with the MessageViewController,
creating a fresh instance per thread.
// FREEBIE
* Group actions bar button image was too big
Added image inset to resize.
// FREEBIE
* return blue line to neutral gray. (partial revert of 0c1a97a743)
// FREEBIE
* Podfile.lock corollary to updating SSL in b7813bdc9a
// FREEBIE
Since we're now re-using the message controller across threads, we have
to reset some elements to their initial state when switching threads.
Missed this one.
Fixes: #1150
// FREEBIE
* Fix ability to attach photos from camera
Looks like this came about with the animated GIF handling. We'll only
go down the byte-comparison-mime-type-detecting code path for attaching
existing photos, since it only exists for animated GIFs.
This will also revert to properly compressing our image attachments, so
long as they are taken from the camera.
* Prevent crash when tapping broken image
It never makes sense to present a "full screen" nil image. Previously
this happened when camera-capture was broken, but could conceivably
happen for other as-of-yet unknown reasons.
// FREEBIE
*most* of our time when scrolling around a message view is in this
method. Doubly so when these are media items.
remove interaction from cache when it is deleted/updated
// FREEBIE
- Use single MessagesViewController. Goal: Being able to reuse that UI
for SplitViewController on iPad. Prevents unnecessary deallocations and
re-allocations.
- Remove custom archiving UI for default swipe right to left archive
action, like in iOS Mail.app.
- DynamicType for main view.
- Simplify API of MessagesViewController to prevent undefined behavior.
//FREEBIE
- 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.
Implemented using corbett's suggestion in issue #525. Uses
Flipboard/FLAnimatedImage in an AttachmentAdapter. Detects gifs using
new Animated category in MIMETypeUtil.
Backwards compatible with previous versions of Signal on iOS for both
sending and receiving Gifs, though they are sent/received in older
versions as UIImage and won't animate. Gifs also animate on both ends of
conversations with TextSecure users on Android.
//FREEBIE
- Adding support for ContactsUI when adding contacts on iOS 9.
- Multiple performance updates by liberating the main thread and
reusing tableview cells.
- 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).
- Removes large confusing UX bar and related assets. Replaced with UISwitch.
- Enhanced user experience for missed calls.
- Fixes issue where missed call would appear as incoming call in call log.
- Fixing issues where PushKit handler not called on launch.
- Tap to reply to a message.
- Badges application with the number of unread messages.
- Pick up a phone call from lock screen, or decline it.
- Settings for notification sounds while app in foreground and text displayed on local notifications.
This fixes the issue with duplicate numbers in group chats. This is just a "fix" for 2.0.1 but the group code is still pretty messy and should be refactored for 2.1
- Revising iconography to stick to v2.0 design.
- Multiple bug fixes based on testers feedback
- Integration with system addressbook
- Removing unused assets.
- Call button should be removed from compose bar (when no text is in the input, or ever).
- Attachment options should be Choose from Library..., or Take Photo or Video
- Call button should move to right side of nav bar, and be solid white.
- Send button in compose bar should be the word Send.
- Attachment icon should be paperclip
- Settings iconography.
- Close buttons.
- Add gesture recognizers on navigation bar label, not the entire bar.
- Group view and conversation view back buttons.