Commit graph

1713 commits

Author SHA1 Message Date
OdysseasKr
83298b8979 Mark conversation as read if open and window focused
Messages that are received in the active conversation while the window
is focused, are automatically marked as read.

The conversation appears as unread for a split second as the incoming message
arrives but it gets marked as read as soon as the message is displayed.
2015-11-19 10:40:07 -08:00
ody
86edcc06c2 Add updating of window title on launch
The window title show the number of global unread messages when the
inbox window launches.
2015-11-19 10:40:07 -08:00
ody
156c7c3b3d Add unread count in window title
The window title now shows the global number of unread messages as
"Signal (1)". This way the user can see the number of unread messages
in the task bar and when alt-tabbing.

Resolves: #384
2015-11-19 10:40:07 -08:00
ody
8c59862e3d Fix global unread message counting
Fixed the global counting of unread messages. This makes the "unreadCount"
variable in storage to stay in sync with the sum of unread messages in each
conversation. To achieve this, the controller_view updates the global
variable whenever messages are received or read.
2015-11-19 10:40:02 -08:00
lilia
641a7dbc6d Update libaxolotl
encryptMessageFor now requires an array buffer instead of a protobuf.

By converting the message to an array buffer outside the Promise.all, we
avoid allocating a new copy for each device.

// FREEBIE
2015-11-17 16:58:31 -08:00
lilia
4615e730ca Save ReferenceErrors on messages
// FREEBIE
2015-11-17 16:22:30 -08:00
lilia
765668b3d3 Clear message collections when the window is closed
We don't need to keep them in memory if we're done viewing them,
plus it avoids having to re-render a large collection when we re-open a
conversation. Now that we only load a sensible number of messages at a
time, caching them between usages is less valuable. Removing them from
the collection should free them for garbage collection.

// FREEBIE
2015-11-16 16:38:12 -08:00
lilia
2fc78ddd7d Fix scroll position jumping when images load
Messages with images or media were causing the scroll position to jump
around when they loaded, because rendering them changed the height of their
elements from 0 to full-height sometime after they were inserted into
the DOM.

Now when rendering attachments, we wait for them to load so they can
render at full height immediately, then warn our parent message list
before and after a potential height change, so the scroll position can
be saved and reset.

// FREEBIE
2015-11-15 15:32:35 -08:00
lilia
2ee8cae8d4 Move some initial setup to the 'opened' event
Avoid inbox views digging too deep into conversation views.

// FREEBIE
2015-11-15 14:59:21 -08:00
lilia
2861fa26a7 Implement infinite scrolling message lists
Only load the most recent messages when initially rendering a
conversation. Scrolling to the top of a message list loads older
messages.

This required some slight refactoring of how we insert message elements
into the dom. If the message is added to the end of the collection,
append it at the end. Otherwise, assume it is an older message and
prepend it.

When adding elements to the top, reset the scrollPosition to its
previous distance from scrollHeight. This keeps the current set of
elements fixed in the viewport.

// FREEBIE
2015-11-15 14:56:58 -08:00
lilia
abf402b8c5 Terminate cursor cleanly when using limit and index
Add db adapter support for clean cursor termination when passing
options.index and options.limit together. Previously this would cause a
crash because options.conditions was undefined.

// FREEBIE
2015-11-15 14:56:58 -08:00
lilia
987c067355 Remove unused styles
// FREEBIE
2015-11-15 14:56:57 -08:00
codedust
5e255e9df0 Remove 'Textsecure' from error message in api.js 2015-11-13 16:07:49 -08:00
lilia
70bde5f4fa Update libaxolotl
// FREEBIE
2015-11-13 14:01:19 -08:00
lilia
d8318ba9bd Remove the gradient
// FREEBIE
2015-11-12 12:58:14 -08:00
lilia
393e3e1e2b Fix unread badge for longer numbers
For 2 or more digit numbers, allow the badge to expand to fit.

// FREEBIE
2015-11-12 12:54:08 -08:00
lilia
43ca92948b Change search box placeholder
Hopefully this makes it more obvious what to do immediately post-install.

// FREEBIE
2015-11-12 12:54:07 -08:00
lilia
4418be19d4 Update conversation header avatar if it changes
// FREEBIE
2015-11-12 12:10:54 -08:00
lilia
a8e02a94be Tweak selected state
// FREEBIE
2015-11-12 12:10:54 -08:00
lilia
832f7ab643 Limit max widths of various elements
Bubbles are limited to 30em to facilitate comfortable reading length.
The width of the message list is limited to aid visual threading
of the conversation. The overall layout is restricted to 1300px and
centered if the window is much wider.

The header avatar resizes responsively to save room when the window
gets narrow

// FREEBIE
2015-11-12 11:05:22 -08:00
lilia
596188a630 Fix protocol version check
Fixes #392

// FREEBIE
2015-11-09 16:59:53 -08:00
lilia
16dc7abe69 Display unreadCount badges in conversation list
// FREEBIE
2015-11-09 16:59:52 -08:00
lilia
f860278b89 Add avatars to conversation headers
So as not to look repetitive, hide the per-message avatars in one-on-one
conversations.

// FREEBIE
2015-11-09 11:48:14 -08:00
lilia
86d5ac7ef9 Add missed css recompile
// FREEBIE
2015-11-09 11:41:44 -08:00
lilia
7feb55c7d0 Fix twitter link in install flow
Fixes #400

// FREEBIE
2015-11-09 08:35:27 -08:00
lilia
0d5291acad Replace sinewave with ellipse
Also make sure status indicator matches timestamp color.

Fixes #393

// FREEBIE
2015-11-08 14:50:34 -08:00
lilia
20901e69fb Better anti-aliasing on red error mark
// FREEBIE
2015-11-08 14:50:00 -08:00
lilia
b59b702eb3 Clear the lastMessage when deleting a conversation
Leave no trace. Fixes #397.

// FREEBIE
2015-11-08 11:14:21 -08:00
lilia
717108d17f Add regression test for #270
// FREEBIE
2015-11-08 11:01:39 -08:00
lilia
f0dcf44b9f Use onClosed instead of onSuspend
Renames extension.windows.beforeUnload to onSuspend, to match the
underlying chrome api call. onClosed fires when the frontend app window
is closed, while onSuspend fires when the background page is closed or
refreshed (which amounts to an app restart).

Frontend views are initialized iff the inbox window is opened, and so
should always be listening to onClosed in order to know when they are no
longer needed.

// FREEBIE
2015-11-08 10:49:31 -08:00
lilia
038e263023 Fix the build
1. Update chrome version because v40 fails to clear the session store
2. Add message view to test page and fix bad reference to chrome
3. Update the message view template in tests with new timestmap markup

// FREEBIE
2015-11-08 10:35:24 -08:00
lilia
d607996cf8 Fixes #394
👬 // FREEBIE
2015-11-07 23:24:29 -08:00
lilia
7105307dd9 Install flow accessibility tweaks
* Make everything bigger and bolder to account for inverse (light on
  dark) text.
* Give links better hover/focus state for the sake of tab navigation.

// FREEBIE
2015-11-07 23:24:29 -08:00
lilia
6fc4bada2e Fix typo in install flow
// FREEBIE
2015-11-07 23:24:29 -08:00
lilia
e5c6541e6c Validate number before showing step 4
// FREEBIE
2015-11-07 23:24:29 -08:00
lilia
f11cfcb996 Auto-populate device name
// FREEBIE
2015-11-07 23:24:29 -08:00
lilia
334e26af13 Fix invisible message detail scrollbar
// FREEBIE
2015-11-07 23:24:28 -08:00
lilia
573d14f6fb Use larger icon on register.html
// FREEBIE
2015-11-07 23:24:19 -08:00
lilia
9fcd423e54 Clean up references to appWindow
Don't resummon the window when you have a reference to it already.

// FREEBIE
2015-11-07 14:34:32 -08:00
lilia
a569e34b33 Refactor new message notification and frontend updates
Create a cleaner seperation between generating notifications
and updating frontend conversation views. The former is now
handled by `conversation.notify` while the latter is achieved
by triggering an event on the conversation model, which will
only be acted on if there are any views listening for it.

Additionally, instead of re-fetching the entire message history,
which is overkill, just add or update the new/modified message.
This will help speed up the newmessage event handler and also
help avoid unnecessary re-rendering when resolving key conflicts.

// FREEBIE
2015-11-07 14:11:13 -08:00
lilia
055fc4f685 Update README and CONTRIBUTING
Mostly naming and terminology changes.

// FREEBIE
2015-11-07 13:25:28 -08:00
lilia
847fa43520 Save group members when creating groups from non-updates
Follow up to b0da4910. When inferring membership of the sender in an
unknown group, remember to save and return the group members.

Generally, this should only effect standalone clients unless someone
managed to clear their groups db table, since linked clients get group
info synced at registration.

// FREEBIE
2015-11-06 19:09:03 -08:00
lilia
a3d29a92bb Reject messages sent to groups with no members
If you're the last member of the group, it doesn't make sense to send
messages to it. Previously, we would wait forever for a callback,
causing a stuck pending state indicator.

// FREEBIE
2015-11-06 18:51:18 -08:00
lilia
4136e3633c Fix incoming key conflict behaviors
Follow up to ddd2e67eb5
but for incoming messages.

* Conflict state sometimes failed to be removed even though the
  conflict was resolved.
* Messages failed to re-render after a conflict. We want to
  re-render only the error state on outgoing messages, to avoid
  flickering attachments. On incoming messages, we need to call
  render to populate the message text, avatar, etc...

// FREEBIE
2015-11-06 17:50:43 -08:00
lilia
c34f8e330d Clear timestamp timeouts if the window closes
// FREEBIE
2015-11-06 16:47:30 -08:00
lilia
2ce890b845 Update message bubble timestamps as needed
Display format consistent with Android:

* relative time for everything from today
* Day of week + time for within the past 7 days
* Static Month Day time for everything older

Each timestamp will only update as often as needed to stay accurate,
which is once a minute, once an hour, once a week, or never.

// FREEBIE
2015-11-06 15:24:01 -08:00
lilia
ddd2e67eb5 Fix re-rendering when resolving conflicts with media
* Don't open message detail views from message detail views
* When message errors change, re-render the error state, but
  not the message markup and contents.
* Fix renderErrors bug not removing the error class correctly.

// FREEBIE
2015-11-05 20:11:28 -08:00
lilia
9c8933c3d0 Resolve conflicts one at a time
Previously, with a mix of text and media messages in conflict,
asynchronous callbacks aligned so as to fail to remove some of
the conflict objects on messages.

Fix by serializing conflict processing, but making sure to move
on through the message list even if some conflict resolutions fail.

Fixes #370

// FREEBIE
2015-11-05 19:42:55 -08:00
lilia
4c4b875348 Fix displaying contact names as 'Unknown Group'
// FREEBIE
2015-11-05 16:30:36 -08:00
lilia
8a73706512 Fix container height in message detail screen
// FREEBIE
2015-11-05 14:33:01 -08:00