Commit Graph

2875 Commits (64680384019cea37f3d71dac5e39c976f79aa134)
 

Author SHA1 Message Date
Scott Nonnenberg 65283d2794 Unload conversations and old messages every half-hour
FREEBIE
Scott Nonnenberg 4ea457a01c Fix second fetchConversation call if unread > 0
FREEBIE
Scott Nonnenberg 73a77c7b97 Consistent returns, no more eventTarget, comments for tricky bits
FREEBIE
Scott Nonnenberg 8c231d9830 MessageReceiver: Flow promises back properly in decrypt error case
FREEBIE
Scott Nonnenberg 31d7e652fe Dismiss the app loading screen if we failed to connect to socket
FREEBIE
Scott Nonnenberg af2ce56c8d Reset MessageReciever queue whenever possible
(like we do with the conversation queue already)

FREEBIE
Scott Nonnenberg 305bd6b3b8 App loading screen: show messages processed so far
Also, show the same loading screen on index.js before we've bootstrapped
the app.

FREEBIE
Scott Nonnenberg e36aa524c9 background.js: Flow promises properly in error case
FREEBIE
Scott Nonnenberg 39795170c1 Handle the 'extension loaded, reopen window' scenario
Not sure exactly how to think about Chrome app lifetimes, so we're
being conservative. We only show the full-application loading screen
once, on first display of the inbox.

FREEBIE
Scott Nonnenberg 53f2bfbb57 Animated loading screens on startup and first conversation load
FREEBIE
Scott Nonnenberg 3e8b34f3d0 findOrCreateById instead of private-specific method
Anyway, findOrCreateById with no type didn't succeed, because the
conversation didn't validate.

FREEBIE
Scott Nonnenberg ef3431af1b isUntrusted: Return false if firstUse is true
Because users will see this upon first trying to communicate with a new
contact if they're quick about it.

FREEBIE
Scott Nonnenberg f38d715250 Read receipts: Log sender and timestamp when related msg not found
FREEBIE
Scott Nonnenberg c6bc167975 Increase log length to 5000, since we're logging so much now
FREEBIE
Scott Nonnenberg 82c0b4aaa6 Add return to onContractReceived for consistency
FREEBIE
Scott Nonnenberg 9dc406dc8d Apply reliable trigger to Backbone.Collection as well
FREEBIE
Scott Nonnenberg 3e0fa995dd When finding all groups involving a number, load from DB not memory
FREEBIE
Scott Nonnenberg 0adc398a6f Fetch conversation before saving in all sync handlers
FREEBIE
Scott Nonnenberg 9db0a58260 Whenever adding something to a queue, include a timeout
No more wedged queues!

FREEBIE
Scott Nonnenberg cc2c3edaa6 Override Backbone's trigger with one that catches exceptions
Model operations are vulnerable to exceptions thrown by event handlers.
Because this can interrupt really important data operations, it's better
to let the operation continue and log the error. In all likelihood it's
a view-related problem, and that shouldn't cause any data operation to
fail.

FREEBIE
Scott Nonnenberg 700272cf85 Add a pure copy from backbone into reliable_trigger.js for diff
FREEBIE
Scott Nonnenberg 7b55fde92d Gruntfile: Remove firefox target in sauce labs task
FREEBIE
Scott Nonnenberg b985228160 Last seen indicator/scroll down button - defensive removal
FREEBIE
Scott Nonnenberg 4f90cefd4f More bullet-proofing - reject surrounding promise if save() fails
FREEBIE
Scott Nonnenberg 1eb450ca35 Conversation: Start w/DEFAULT verified state, avoid null timestamp
Fix too-aggressive verification notifications on startup by starting a
conversation with the right initial verified state, and then making sure
to fetch() before setting a new verified state.

FREEBIE
Scott Nonnenberg bd0050b6c6 Cache messages on receipt, remove from cache when processed
FREEBIE
Scott Nonnenberg e6859a3684 Ensure that promises always resolve, or that rejections are okay
Scott Nonnenberg 4da1722ee8 Bullet-proof _setVerified and handleDataMessage against rejections
And the weird behavior we get from $.Deferred.

FREEBIE
Scott Nonnenberg 5da324103a Throttle calls to getProfile when opening conversation
We don't want to throttle other calls to getProfile, so we localize this
to the fetch we do when we first open a conversation.

FREEBIE
Scott Nonnenberg aa80cdd74d ConfirmationDialogView: Make showCancel an explicit option
Also, don't call resolve/reject callbacks if they weren't provided.

FREEBIE
Scott Nonnenberg 14765599f3 Delete individual message
FREEBIE
Scott Nonnenberg 782b8c7640 someRecipientsFailed string: Add period for consistency
... with messageNotSent.

FREEBIE
Scott Nonnenberg 80a2a01e37 Remove jitter on verifying/unverifying safety number
On every click, even when sub-panes were open, we were calling
markRead(), which would save the conversation model with the new
unreadCount. The KeyVerificationPanelView was wired up to the change
event on conversation, so it would render with the results of that
update, then finally the user's intended update.

FREEBIE
Scott Nonnenberg 12b2674bde Show size of files even if size not precomputed for attachment
FREEBIE
Scott Nonnenberg 9ba5aaa54d Verification sync logging: include whether it was from contact sync
FREEBIE
Scott Nonnenberg 4124d5cb9b Show 'Message not sent' only if 'Some recipients failed' not showing
Also switch up the visual style for 'Some recipients failed' text to
match the more-visible 'Message not sent' text and the 'Resend' link.

FREEBIE
Scott Nonnenberg 25243ad9de Send warning: Show single problematic group member, not group name
FREEBIE
Scott Nonnenberg 08ecb5f3d2 Improve wording on the 'SN changed' popup after verification
FREEBIE
Scott Nonnenberg 697079cf9b Add else handlers with logging in toggleVerified catch handler
FREEBIE
Scott Nonnenberg 8112cd220a Show warning when we discover key change on verify
FREEBIE
Scott Nonnenberg 91f50c028f Unify processVerifiedMessage with Java implementation
This removes our support for the New Key/DEFAULT case, which iOS will
sync to us. Why? Because it ensures that in out of date scenarios, we
don't lose the higher-security state we were in previously.

FREEBIE
Scott Nonnenberg 5bba6d3f17 setTrusted() -> setApproved() to dismiss the five-second warning
This change makes sense, since there was already a reference in the code
to the then-nonexistent setApproved()!

FREEBIE
Scott Nonnenberg 86b1aafe0c "Clear verification" -> "Mark as not verified"
We lose consistency with iOS, but it is more consisent with the other
phrasing used throughout the app.

FREEBIE
Scott Nonnenberg d1a9b62077 test/index.html: Restore previous location of code coverage stuff
I changed the location when trying to get code coverage to work properly
and it turned out not to be necessary for the fix.

FREEBIE
Scott Nonnenberg 23a806a6b1 removeAllSessions: properly reject in failure cases
FREEBIE
Scott Nonnenberg 7ab20f09cc Fix focus issues with identity key send view
Tabbing right after entering the view would cause everythign to go crazy
as focus went back to the pane you were just on. This change both sets
the proper focus on load of that view (on the cancel button) and hides
other panes when they aren't active, only making them visible again when
they are once again the 'top' pane.

FREEBIE
Scott Nonnenberg ff4fde651c Make it clear in conversation just some recipients failed
FREEBIE
Scott Nonnenberg c10e1b4ad0 Code coverage test run: Fix broken test
This test failed only under code coverage runs - because start up of the
page too took long!

FREEBIE
Scott Nonnenberg 5c990d2a35 Code coverage: Collect test coverage for the protocol layer
Because we were only doing a partial instrumentation run prior to this
change, un-instrumented code had references to un-instrumented code
(because Blanket's instrumentation re-runs the code once it is
instrumented, updating the window.NAME reference).

A big part of this was that libtextsecure was not instrumented. And for
good reason; it takes a long time to load and run, especially when
instrumented. But without covering it, we'll have an incomplete view
of our code coverage. So, all coverage collection remains off by
default.

FREEBIE
Scott Nonnenberg 10f4f3fea5 Fix crash in keychange listener test
FREEBIE