Commit Graph

968 Commits (b0da4910254d497b3eda035815bf866a2ee83b7d)

Author SHA1 Message Date
lilia 6123c419d0 Remove refreshGroup
1. This is nonstandard behavior, not supported by any other clients. It
   may help sometimes but will also cause bugs (see 2)

2. iOS doesn't handle group updates with missing fields. all fields must
   be populated, and libtextsecure doesn't have any knowledge of the group
   name or avatar, so these updates will clobber group state on iOS.

// FREEBIE
10 years ago
lilia 94e1c2d123 Remove check for .humanError property
This property is no longer used by any of our errors.

// FREEBIE
10 years ago
lilia 6547538458 Use foreach instead of a loop
This syntax makes plain that the function is not used anywhere else,
and increases linearity/readability.

// FREEBIE
10 years ago
lilia acaf7b8de2 Refactor relay consistency check
Check the device list for relay consitency and throw an exception before
attempting to encrypt to any of the mismatched devices.

// FREEBIE
10 years ago
lilia bafc61600c Refactor sendMessageToDevices
Leverage map and Promise.all for more concise and linear code flow.
10 years ago
lilia 9ff95c7e61 DRY up group update sending
// FREEBIE
10 years ago
lilia f00d118c93 More logging
// FREEBIE
10 years ago
lilia f6b35ffbfc Log error stack traces
// FREEBIE
10 years ago
lilia 213dbdefd2 Reorder functions
// FREEBIE
10 years ago
lilia 62c90e3925 Don't save/log websocket error
It's a generic error Event and doesn't actually contain anything useful.

// FREEBIE
10 years ago
lilia 289b82d1dc Expose messageReceiver.close
// FREEBIE
10 years ago
lilia 1d370857fc Remove unused callback arguments
Unused since d0fd3e94 afaict.

// FREEBIE
10 years ago
lilia 2204ef863d Fix event name
We successfully retry after a websocket connection closes, but this typo
prevented us from retrying if the websocket simply never opened.

// FREEBIE
10 years ago
lilia d1191c509c Log outgoing errors individually
// FREEBIE
10 years ago
lilia ada3d999e0 Log outgoing errors
// FREEBIE
10 years ago
lilia ce49d14d85 Fix leave group bug
This one's been around since forever, but only manifests when someone
leaves the group and comes back. In that case we fail to reinit their
numberRegistrationId object, which causes a npe when we try to send
send them group messages.

Affected parties must ask their fickle friends to leave/join again.

// FREEBIE
10 years ago
lilia 4a482243d0 Simplify event arguments
// FREEBIE
10 years ago
lilia c8a76ab38e Fix websocket event handler name
// FREEBIE
10 years ago
lilia 21667d9181 Log when we start waiting for an online event
// FREEBIE
10 years ago
lilia 823f570955 Add more websocket debug logging
// FREEBIE
10 years ago
lilia f70e844cef Include url in http response logging
Otherwise it's impossible to tell which is which, especially when
sending group messages.

// FREEBIE
10 years ago
lilia d8803ee31f Mark leave group messages as sent
// FREEBIE
10 years ago
lilia b1d3829651 Update minimal window dimensions
Some day we'll probably lower these minimums but first we'd need a more
responsive design.

Fixes #310

// FREEBIE
10 years ago
lilia 960754ef04 Restyle compose button
Move it to a tool bar at the top of the conversation list. This is also
where a search bar will live someday.

Fixes #357

// FREEBIE
10 years ago
lilia 2243c09fea MessageReceiver is an event target
Rather than asking for a global target, the message receiver implements
the EventTarget interface itself. It does not expose the dispatchEvent
method, however. This ensures that events can only be triggered from
within the internal MessageReceiver class, which means we no longer need
to namespace them.

// FREEBIE
10 years ago
lilia a925027cd2 Refactor MessageReceiver for storage/server independence
Let the libtextsecure consumer pass in their own server url, username,
password, and signaling key, as with libtextsecure-java.

Also brings reconnect logic up into the MessageReceiver class, which
is the only place it should apply.
10 years ago
lilia e59a5792d5 Don't hardcode the attachment host 10 years ago
lilia 184e37383c Don't auto-populate the relay field
According to server api docs, relay is optional when it is the same as
our own server.

// FREEBIE
10 years ago
lilia 7d9cf0c167 Pass the signaling key into decryptWebSocketMessage
De-couple this file from dependency on storage.
10 years ago
lilia c167fc964d Revert "Remove global updateInbox method"
This reverts commit 1c70293bba.

This broke tests by blocking the database deletion during test
setup.
10 years ago
lilia 310f40fcad Contact sync should update existing contacts
// FREEBIE
10 years ago
lilia 7f4ef6e9e7 Remove double-check of unread count
This same condition is already enforced in the markRead method.

// FREEBIE
10 years ago
lilia 1c70293bba Remove global updateInbox method
This operation now needs to be done exactly once, at startup, so we
don't need to expose a global method for it.

// FREEBIE
10 years ago
lilia 6364cda7cb Create requires an object
// FREEBIE
10 years ago
lilia 78d7296f84 Fix tests
// FREEBIE
10 years ago
lilia b617240338 Stop calling updateInbox all the time
Now that the inbox collection keeps itself in sync, we don't have the
data duplication that was forcing us to reload constantly.

// FREEBIE
10 years ago
lilia 537f0ceef0 Log all http requests at start and end
// FREEBIE
10 years ago
lilia 0017f196ef Move ConversationController to its own file
Encapsulate the global conversation cache collection against accidental
access, avoiding the data-clobbering bug fixed in previous commit.

Also move some one-off program initialization code from panel controller
to background.js

// FREEBIE
10 years ago
lilia 8f28c3af68 Fix disappearing contact info
This errant reference to the global cache of conversations was causing
some contacts to get clobbered.

// FREEBIE
10 years ago
lilia 93a5d01127 Delete old code
We don't have any more 'default' css classes. Default avatar data is
simply provided by a model for rendering in a view.

// FREEBIE
10 years ago
lilia 2bc65c2ab4 Let messages fetch references to senders
The conversation's contactCollection only contains references to the
current membership, and will not provide contact info for people who
have left the group, causing their messages to render without numbers or
avatars.

// FREEBIE
10 years ago
lilia fd29ac8d2c Promote groups to top of inbox when we update them
// FREEBIE
10 years ago
lilia 73983118dc Render emoji in conversation title // Fixes #359
// FREEBIE
10 years ago
lilia 6f94888659 Use online event listener to reconnect more smrtly
No need to retry if we know we're offline.

// FREEBIE
10 years ago
lilia 37998e261d Log more errors
// FREEBIE
10 years ago
lilia 36ec4300cf Fix broken group avatar preview
Fixes #355

// FREEBIE
10 years ago
lilia b60d3d0b97 Make debug log handle multiple arguments
Ex: console.log('delivery receipt', phone_number, timestamp)

// FREEBIE
10 years ago
lilia 90e9216e19 Add UI for submitting debug logs
Fixes #343

// FREEBIE
10 years ago
lilia 9809894fd2 Automatically mark the open conversation read
If a conversation view is visible, it will automatically mark the
conversation read.

// FREEBIE
10 years ago
lilia 15a366dbf0 Opening a conversation should focus the window
Previously, this function might open the conversation but not show the
window, if it exists but wasn't on top.

// FREEBIE
10 years ago
lilia a57451d00b Show notifications if the window is minimized
// FREEBIE
10 years ago
lilia f74a7b9621 Add code for submitting debug logs
We keep the last 1000 log messages in memory and dump them to an
anonymous public gist if console.post is called.

// FREEBIE
10 years ago
lilia fa0e2584f4 Fix new threads not appearing at top of inbox
When messages from someone not in your inbox arrived, that thread would
appear at the bottom of the inbox instead of the top.

// FREEBIE
10 years ago
lilia df99da15c6 Mark relevant convos active/unread on key conflict
// FREEBIE
10 years ago
lilia 15d84199c2 Include ourselves in member list for a new group
Otherwise, the next incoming group update will show "<your number>
joined the group".

// FREEBIE
10 years ago
lilia 8b27c99f2b Fix exception while creating a conversation
When confirming the creation of a one on one conversation with a new
contact, the first click would do nothing but the second click would
work. Now the first click works.

Fix by only reject new conversation creation if not saved.

// FREEBIE
10 years ago
lilia 4b0c70fb44 Resolve multiple conflicts independently
When resolving multiple conflicts in a conversation, failure to resolve
one should not block any others.

// FREEBIE
10 years ago
lilia f8745e1e5b Remove inactive models from inbox collection
Fixes auto archive when deleting all messages, and auto unarchive when
sending a new message. Previously, the convo would not reappear in the
inbox after deleting all messages.

// FREEBIE
10 years ago
lilia 80764bf494 Remove unused function
// FREEBIE
10 years ago
lilia a390e37abc Fixup change:active_at handling when setting null
When a conversation goes from active to not active, it should be removed
the view rather than promoted.

// FREEBIE
10 years ago
lilia b81d93177a Fix double selected states
Previously, when changing selection from an unread to a read
conversation, the unread conversation would not be deselected.

// FREEBIE
10 years ago
lilia 50add90fd9 Include image previews in notifications
// FREEBIE
10 years ago
lilia d89e3ccdc4 Don't fetch messages from the background
Only fetch them from a frontend view. If the conversation is not open,
we don't need to load the messages, and if we do load them, they will
render before we've done the initial contact info loading (as
implemented in 74e96ce).

Fixes #344

// FREEBIE
10 years ago
lilia bd5f43bdb1 Avoid excessive re-rendering of the inbox list
This listener is doing way more work than necessary to update the dom by
removing all the list items and re-creating them. This also causes the
bug where selected state is cleared when new messages arrive, not to
mention binding new event listeners without unbinding the old ones.

Fix by simply promoting an element to the top of the list when it's
active_at value changes, rather than re-rendering the whole list. This
could backfire if the value gets changed to an earlier timestamp but for
now we assume that won't happen.

// FREEBIE
10 years ago
lilia e80fa187ba Upsize svg identicons
The chrome.notifications api renders iconUrls at full bleed, as opposed
to the Web Notifications api, which adds padding. This was causing our
identicons to look a bit over stretched.

Fixed by rendering them a bit larger and with some padding.

// FREEBIE
10 years ago
lilia 1a30d003f5 Fetch group contacts before fetching new messages
Messages must wait for sender info to arrive before rendering.

// FREEBIE
10 years ago
lilia edbf2371bf Don't reset inboxWindowId
// FREEBIE
10 years ago
lilia e8edbe53bc Improve notification behavior
Only allow one notification at a time. Use a basic notification for
normal messages, and image notification for image messages, and a list
notification when there are multiple unread messages.

// FREEBIE
10 years ago
lilia 59313b5177 Let message models manage blob urls for attachments
// FREEBIE
10 years ago
lilia 04c8796bd3 Disable socket level reconnect
This is now handled at a higher level by the message receiver with the
aid of http requests for diagnosing the disconnect.

// FREEBIE
10 years ago
lilia 0ebdf08ceb Render identicons in notifications
Render an svg, then canvas, then data url.

Fixes #325

// FREEBIE
10 years ago
lilia 3bd9108f6e Use isPrivate helper
// FREEBIE
10 years ago
lilia d6d1a7da55 Don't notify on sync messages
// FREEBIE
10 years ago
lilia 6b483195cb Fix reconnect bugs from previous commit
Forgot to bind the socket event handler, and the then() handler should
come before the catch() handler or else it will execute every time the
catch handler executes.

// FREEBIE
10 years ago
lilia 16de5aa3d3 Improve reconnect logic
Always test connectivity with an http request after a websocket closes,
regardless of what code/error it closed with. If that request succeeds,
automatically reconnect the socket.

// FREEBIE
10 years ago
lilia 756875f235 Refactor inbox collection listeners
Create a new collection type for the inbox which listens to events on
the main conversation cache. Also don't reload conversation info from
the database as often or when unnecessary.

Fixes #345

// FREEBIE
10 years ago
lilia 0509bb0f5d Remove global updateInbox, used scoped version
// FREEBIE
10 years ago
lilia 949cb8d8e3 Use generic Backbone collection for inbox
There's no need to use a custom collection type here since we don't use
any of the ConversationCollection methods. This helps prevent the
introduction of duplicate models for the same chat.

// FREEBIE
10 years ago
lilia 2ab7315c80 Use generic collection for conversation contacts
Let the conversation controller instatiate the models in order to avoid
having duplicate models in memory.

// FREEBIE
10 years ago
lilia 6d4bf4e5d1 Whitespace
// FREEBIE
10 years ago
lilia 8dc098093d On delivery receipts, reload messages only
The delivery receipt handler should only update messages, so rather than
reloading the conversation and its contacts, only reload the messages.

// FREEBIE
10 years ago
lilia f764445c86 Remove erroneous license file and headers
We only use GPLV3 around here.

// FREEBIE
10 years ago
lilia 1427369bd0 Fix suggestion list template
Convention collision.

// FREEBIE
10 years ago
lilia 98aed2975c Fix conversations opening from the background
From a notification, for example, we were opening the inbox but not the
conversation.

// FREEBIE
10 years ago
lilia 24a18e91b3 Clean up shared compose/group update ui
Makes the groupupdate and recipient input fields stick to the top,
restyles the typeahead as a floating dropdown list of suggestions
rather than a full width component, fixes group avatar thumbnail
rendering.

// FREEBIE
10 years ago
lilia e402338af7 Make it easier to reference templates
Whisper.Views can now use templateName to reference the id of the
desired template.
10 years ago
lilia 239b87a1fa Fix conversation resize bug
Fix behavior where resizing a message detail screen would result in a
mis-sized conversation view when exiting the message detail.
10 years ago
lilia 7d9490e503 Add contact list view
Used by member list view. Refactored some templates for shared markup.
Fixes strange behavior where members in the list were hoverable and
selectable.

// FREEBIE
10 years ago
lilia 5d9965a60e Make all mustache templates available as partials
// FREEBIE
10 years ago
lilia 3e5946a12b Move worker initialization to background.js
Not sure why I put it in panel controller. Probably an oversight.

// FREEBIE
10 years ago
lilia 43aaf541c1 Compose flow style tweaks 10 years ago
lilia cc92cdfa29 After destroying messages, remove the conversation view 10 years ago
lilia 50939d1851 Restyle conversation menu button 10 years ago
lilia 89f5f216ed Fix new conversation with no lastMessage 10 years ago
lilia 5b430fa8aa Make sure newly active conversations are added to the inbox 10 years ago
lilia e8b4bd708e Fix lint warnings 10 years ago
lilia 9e79ecddf8 Fix scroll stickiness while hidden
Fix bug: Open thread A, open thread B, receive message in thread A, open
thread A. Scroll bar has reset to the top.
10 years ago
lilia e3c56a0c03 Refactor and remove old window mgmt code/globals 10 years ago
lilia 3bc64cbed5 Remove unused function 10 years ago
lilia 21aaf0fab5 Clean up notification and unread indicator behavior 10 years ago