Commit graph

373 commits

Author SHA1 Message Date
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
2015-09-14 13:49:20 -07:00
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
2015-09-14 13:49:20 -07:00
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
2015-09-14 13:49:19 -07:00
lilia
1a30d003f5 Fetch group contacts before fetching new messages
Messages must wait for sender info to arrive before rendering.

// FREEBIE
2015-09-14 13:49:09 -07:00
lilia
0ebdf08ceb Render identicons in notifications
Render an svg, then canvas, then data url.

Fixes #325

// FREEBIE
2015-09-10 00:47:54 -07:00
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
2015-09-08 19:28:33 -07:00
lilia
f764445c86 Remove erroneous license file and headers
We only use GPLV3 around here.

// FREEBIE
2015-09-07 14:58:42 -07:00
lilia
1427369bd0 Fix suggestion list template
Convention collision.

// FREEBIE
2015-09-04 18:46:33 -07:00
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
2015-09-04 13:11:21 -07:00
lilia
e402338af7 Make it easier to reference templates
Whisper.Views can now use templateName to reference the id of the
desired template.
2015-09-04 13:09:56 -07:00
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.
2015-09-04 13:06:40 -07:00
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
2015-09-03 14:31:05 -07:00
lilia
5d9965a60e Make all mustache templates available as partials
// FREEBIE
2015-09-03 13:22:52 -07:00
lilia
43aaf541c1 Compose flow style tweaks 2015-08-31 16:09:05 -07:00
lilia
cc92cdfa29 After destroying messages, remove the conversation view 2015-08-31 16:01:56 -07:00
lilia
50939d1851 Restyle conversation menu button 2015-08-31 13:59:12 -07:00
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.
2015-08-27 16:25:35 -07:00
lilia
21aaf0fab5 Clean up notification and unread indicator behavior 2015-08-27 15:04:43 -07:00
lilia
e0f84d9c8e Clear unread on focus iff convo is open 2015-08-27 15:04:43 -07:00
lilia
baa55c9018 Refactor for less model duplication 2015-08-27 12:38:51 -07:00
lilia
c4eac76032 Fix for new contact button bug 2015-08-26 22:33:00 -07:00
lilia
a5a1dad03c Redelegate events for new contact view
And rename for consistency

// FREEBIE
2015-08-26 17:52:44 -07:00
lilia
17051cef9d Only add loading class from inbox 2015-08-26 17:48:02 -07:00
lilia
fbc73c0369 Add spinner for long-loading message lists 2015-08-26 17:30:20 -07:00
lilia
992dfa5b20 Bug fixes for group create flow
Fallout from layout change.

// FREEBIE
2015-08-26 17:11:01 -07:00
lilia
d07357ce9a Retool various sub-screens to fit two-column layout 2015-08-26 15:15:14 -07:00
lilia
bcec207674 Mark read when opening a conversation 2015-08-26 10:12:05 -07:00
lilia
d6a4e6e496 Restore two column layout
Establishes basic functionality for viewing conversations in two column
mode, including message area and message list resizing, and maintaining
scroll position.

Various subviews need to be retooled but are more or less still
functional, i.e., new message, message detail, key verification, etc...
2015-08-25 17:01:22 -07:00
lilia
00dfcbb462 Change websocket closed message 2015-08-24 09:10:48 -07:00
lilia
82431c3c12 Update compose typeahead after fetching
Fixes #322

// FREEBIE
2015-08-05 11:20:18 -07:00
lilia
001a91466b Add group member list // Closes #279 2015-08-04 12:15:37 -07:00
lilia
ccfae3c78a Fix bug in identity key conflict edge case
When resolving conflicts, we should not only discard the old key, but
set the new trusted key to the one the user has verified. Previously, we
would end up trusting the first-seen new key, which may not be the one
the user verified.

 // FREEBIE
2015-07-31 17:01:03 -07:00
adambar
d93bacb76e Fix for too eager scrolling to bottom when the scroll isn't actually stick to the bottom before resizing the window 2015-07-29 15:28:08 -07:00
adambar
1498d90b58 Maintain bottom-most scroll position when resizing conversation area, once again.
Related with #278. Redone to include keeping scroll at the bottom when resizing the window, as suggested in #305, and to better fit the current code structure.
2015-07-29 15:28:08 -07:00
lilia
0815a96c1d Display the new key for verification after a conflict 2015-07-20 14:27:11 -07:00
lilia
f6b5eec84e Let key verification view use array buffers 2015-07-16 12:14:09 -07:00
lilia
853b578551 Change default value for active_at
We're overriding the default with null often enough that we should
just change the default.

Consequently, no more phantom blank conversations with oneself should
appear after receiving a group update. They were being added to the
inbox because they were incorrectly initialized with an active_at value.

Fixes #281
2015-07-14 16:44:08 -07:00
lilia
809c9bdb57 Save outgoing group updates 2015-07-14 16:41:25 -07:00
lilia
82de8148d2 Reload harder
Refreshing the background page does re-open the socket, but the inbox
and other windows don't reattach correctly. Reload the whole runtime to
force close all windows, reload the background, and re open the inbox.
2015-07-08 17:53:47 -07:00
lilia
56341769bd Mark group creation messages as sent 2015-07-08 16:47:29 -07:00
lilia
3e4c571749 Fix initial input focus in compose view
This selector was being run too early, before the target was rendered.
2015-07-08 15:56:08 -07:00
adambar
476eb54db1 Maintain bottom-most scroll position when resizing conversation area.
Closes #278
2015-07-08 13:46:48 -07:00
lilia
1a82a12a30 Use input instead of keyup/change events
In lieu of a click event, the change event was being fired when clicking
out of the search input. The input event seems to be what we actually want.

Fixes #273
2015-07-08 13:06:45 -07:00
lilia
fa4022a4e3 Invert pending/sent model 2015-07-07 23:03:56 -07:00
lilia
6a98fc8278 Reload contacts when resetting a recipients input
Fixes #272

// FREEBIE
2015-07-06 12:13:49 -07:00
lilia
f5f4c128f9 Fix tests, let templating handle html escaping
Note: as a Chrome app, we're also protected from xss by the content
security policy.

// FREEBIE
2015-07-04 23:08:25 -07:00
adambar
fcc873ffca Trim the message before sending - disable sending whitespace characters only 2015-07-03 21:53:45 +02:00
adambar
c20c59add0 Include Ctrl+Enter as one the shortcuts that insert line break instead of submitting the message 2015-07-03 13:49:01 +02:00
adambar
86f7b7adf5 Allow line breaks in messages. Closes issue #291
Line breaks can now be insterted into message box using Shift+Enter or Alt+Enter. Messages with new lines are properly displayed in the conversation view (but only there, to keep inbox clean). The template was modified to allow HTML, but the message itself is sanitized before new line handling is run.
2015-07-02 23:02:27 +02:00
lilia
5e6145aa46 Mark conversation read on window focus event
Fixes #282

// FREEBIE
2015-06-26 11:53:00 -07:00
lilia
5925c2fe84 Support for group sync
Protocol and handling is all analogous to contact sync: Multiple
GroupDetails structs are packed into a single attachment blob and parsed
on our end. We don't display the synced groups in the conversation list
until a new message is sent to one of them.

// FREEBIE
2015-06-25 13:24:32 -07:00
lilia
ef8a977f38 Sort contacts by name ignoring case 2015-06-25 13:24:31 -07:00
lilia
7d568b5092 Fixup auto-expand
* Fix a css bug preventing bottom bar from sticking to the bottom.
* Resize discussion container as a function of the overall window
  height. The previous difference-based method gives the wrong result
  when the window height changes but the bottom-bar height stays the
  same.

// FREEBIE
2015-06-24 12:10:53 -07:00
adambar
b80706089c Fix for potential memory leaks 2015-06-23 22:46:27 +02:00
adambar
9c563cf080 Fix for message box auto-sizing behavior on resize; menu z-index fix 2015-06-23 22:46:27 +02:00
adambar
da1abd75bf Remove message textarea resize handle; fix resizing after submit 2015-06-23 22:46:06 +02:00
adambar
07ac0ae9cc 239 Auto-expand message area when typing 2015-06-23 22:45:41 +02:00
lilia
e26b9bfbc7 Default avatar support
Fixes #264

Implement the equivalent of java's String.hashCode on the conversation model.
Change avatar template and attributes. Use css classes for colors.
2015-06-19 11:50:18 -07:00
lilia
757bcd4e50 Reset recipient typeahead after selecting a recipient 2015-06-17 12:29:34 -07:00
lilia
e9e875766f Group update recipient typeahead excludes exisiting members
Fixes #199

// FREEBIE
2015-06-17 12:21:58 -07:00
lilia
694f801676 Stop hiding inbox instead of closing
This behavior was intended to help keep the websocket alive, but keeping
the inbox window around can cause some stale frontend state. Also we now
have a keepalive alarm to check for new messages once a minute.
2015-06-15 17:48:06 -07:00
lilia
72f16b94ff Polish group update ux
* Show the members list as static elements
* Style the search results as a drop down, mirroring android ux

Fixes #248 // FREEBIE
2015-06-09 16:12:21 -07:00
lilia
23db5802cf Support custom placeholder on recipients input 2015-06-09 16:10:07 -07:00
lilia
ac401c78b3 Fix socket status indicator
It was not correctly reporting the status after a background page reload.
2015-06-09 11:30:45 -07:00
lilia
6e1a41e9cf Update inbox when group avatars change 2015-06-05 11:53:46 -07:00
lilia
583fb98cce Support late-addition of default image to file input
Fixes #256

// FREEBIE
2015-06-05 11:23:03 -07:00
lilia
f4a206b266 Scale and crop avatars to 256 square thumbnails.
Fixes #213 // FREEBIE
2015-06-04 14:46:16 -07:00
lilia
cdb7fcfbad Pass windows around to let file inputs work 2015-06-04 13:39:52 -07:00
lilia
3d1df790a5 Update the window title when a group title or contact name changes 2015-06-03 17:23:55 -07:00
lilia
d26c13b155 Add openInbox link to conversation menu. Fixes #246 2015-06-02 14:57:22 -07:00
lilia
9d688cb761 List views persist sroll offset by percentage
Fixes #188
2015-05-28 11:50:58 -07:00
lilia
590deef063 Decrease auto-scaling size
For better consistency with Android, autoscale images such that the
largest dimension is 1280. Related: #242
2015-05-27 16:53:04 -07:00
lilia
3e73282a64 Fix key verification screen 2015-05-26 17:08:14 -07:00
lilia
e2eff893d4 Fix 'Delete messages'
Replaces window.confirm with generic promise-based confirmation dialog
functionality available to all views.

// FREEBIE
2015-05-26 16:56:05 -07:00
lilia
8a17953468 Display sent_at timestamps instead of received_at 2015-05-26 13:31:17 -07:00
lilia
3e39271220 Render messages light blue until finished sending // Fixes #219 2015-05-26 13:30:51 -07:00
lilia
53a9ab4834 Fix bugs with handling large image attachments
* Avoid infinite loop scaling too-big images
* Don't crash if no file is selected
* Fix file size toast

Fixes #242

// FREEBIE
2015-05-25 10:43:35 -07:00
lilia
d8f17f9631 Fixes #240
Delete files attached via chrome.fileSystem

// FREEBIE
2015-05-24 16:03:13 -07:00
lilia
7bf1d41184 Render conversation titles 2015-05-22 16:54:59 -07:00
lilia
d0a529351c Fix sending messages with no attachments 2015-05-21 19:01:37 -07:00
lilia
a5e80e8a5a Really close conversation windows
Only the inbox should hide when closed.
2015-05-21 18:20:19 -07:00
lilia
5d3a2a4cc8 Fix file inputs
As a chrome app we are obligated to use the fileSystem api, and must do
so via the window in which we want to open the dialog.
2015-05-21 18:19:10 -07:00
lilia
39d11d8eb3 Apply custom chrome to conversation windows 2015-05-21 14:35:44 -07:00
lilia
95f8e3921c Keep inbox window open, but allow it to be hidden
As a chrome packaged app, we have to keep at least one window open in
order to maintain our websocket connection in the background page.

This change replaces the system window frame with custom buttons in the
inbox header, such that the 'close' button merely hides the window
rather than unloading it.

Fixes #237
FREEBIE
2015-05-21 13:08:43 -07:00
lilia
7afd0a02e8 Convert beforeunload listeners 2015-05-15 11:39:23 -07:00
lilia
76e170686a Make getBackground async 2015-05-12 15:39:15 -07:00
lilia
f774047935 Make libtextsecure group storage asynchronous 2015-05-06 13:11:12 -07:00
lilia
20ebc3f890 Move identity key storage functions to axolotl store 2015-05-05 17:44:58 -07:00
lilia
71715c95bc Async remove identity 2015-05-05 17:44:57 -07:00
lilia
de65f9e6bd Add missing resolve 2015-04-15 12:24:29 -07:00
lilia
5d4298697c Use view.$ shorthand for scoped jquery searches
Wish I'd noticed that one earlier. http://backbonejs.org/#View-dollar
2015-03-29 16:29:05 -07:00
Matt Corallo
454b4726bd Replace load/decode/index around our own number with helpers 2015-03-25 11:54:55 -07:00
lilia
923bb8bbc9 Fix crash in message detail view
Fix crash when there's no contact for a group member.
2015-03-24 11:36:42 -07:00
lilia
e8cb4efaa4 Allow key conflict resolution for group updates
Creating a group with a member who's identity key has changed would
previously fail silently. Now, we catch and save the error, allowing the
same conflict resolution process as with regular messages.

Fixes #205
2015-03-24 10:11:39 -07:00
lilia
4bd46f80e7 Allow empty group avatar file input 2015-03-23 19:24:26 -07:00
lilia
ce36c36bd0 Include outgoing control messages in message history
So you know it worked.
2015-03-23 19:24:12 -07:00
lilia
6c3ac2de02 Collapse two views into one
We used to have a subview that branched on content/control messages, but
no more.
2015-03-23 18:30:16 -07:00
lilia
caddb8dc09 Smoother group create experience
Previously there was a long pause between confirming the group details
and opening the conversation. Fix by first saving/opening the
conversation, rather than waiting for the initial group update to finish
transmitting.
2015-03-23 17:33:46 -07:00
lilia
74e01c2a95 Re-render control messages if necessary 2015-03-23 16:41:03 -07:00
lilia
48b0e8832d Fix message detail contacts for incoming group message
Previously the From-field displayed all the group contacts.
2015-03-23 16:12:26 -07:00