Commit graph

535 commits

Author SHA1 Message Date
lilia
3901bcb8df Style resend button as an inline link
For messages that failed to send due to network errors, this change
allows retrying them directly from the main conversation view rather
than only from the message detail view.

// FREEBIE
2016-03-22 15:38:22 -07:00
lilia
08da29969c Fix menu behavior
Opening the global menu should close the conversation menu and vice
versa.

// FREEBIE
2016-03-22 11:01:37 -07:00
lilia
d24eaa655a Tweak styles on key verification view
// FREEBIE
2016-03-21 18:42:05 -07:00
lilia
b57f26bac4 Ignore clicks on the placeholder and its contents
// FREEBIE
2016-03-21 17:46:09 -07:00
lilia
d3b035121d Clean up bottom bar styles
// FREEBIE
2016-03-21 17:17:39 -07:00
lilia
234f937bc7 Conversation subscreens share a header
// FREEBIE
2016-03-21 15:37:53 -07:00
lilia
d391f07c1e Change right header color
// FREEBIE
2016-03-21 11:03:50 -07:00
lilia
a925657c45 Fix global menu close handler
Previously, clicking on a conversation menu would not close the global
menu.

// FREEBIE
2016-03-20 23:34:56 -07:00
lilia
b094607e0d Highlight bottom bar when focused
// FREEBIE
2016-03-20 23:15:21 -07:00
lilia
8bb8ed8151 Change left pane header color
// FREEBIE
2016-03-20 21:01:45 -07:00
lilia
7310afd1b4 Replace message list loading spinner with bar
// FREEBIE
2016-03-18 17:59:54 -07:00
lilia
647c2761e0 Move restart button into global menu
// FREEBIE
2016-03-18 16:21:55 -07:00
lilia
18a5ce8e54 Restyle conversation panel
// FREEBIE
2016-03-18 13:09:45 -07:00
lilia
760bfffb50 Show all contacts all the time
Contacts without conversation identity appear in alphabetical order at
the end of the inbox.

// FREEBIE
2016-03-18 11:21:11 -07:00
lilia
b4960b29d8 Remove newContact attribute
This was used as a flag by a UI that no longer exists. Now it
erroneously gets saved when creating a conversation from a bare phone
number.

// FREEBIE
2016-03-18 11:21:11 -07:00
lilia
7fb4d3d8aa Load all inbox convos before rendering
This is a better alternative to the fix in 0434c4b, which causes
problems when creating a new conversation from entering a phone number.

// FREEBIE
2016-03-17 20:58:56 -07:00
lilia
0434c4bc53 Fixes #663 Conversation list loads in reverse order
The onChangeActiveAt listener promotes newly activated conversations to
the top of the inbox. By firing on an 'add' event, if the conversation
list happened to load after the inbox frontend was initialized, each new
entry would be incorrectly moved to the top, effectively reversing the
list.

// FREEBIE
2016-03-12 15:34:33 -08:00
lilia
1b72ef6170 Restore notifications heading
// FREEBIE
2016-03-11 11:49:21 -08:00
Blake Griffith
0ceb8e7038 i18n notification's settings dialog
FREEBIE
2016-03-11 11:46:10 -08:00
Blake Griffith
24e4d9c615 'off' -> 'disable notifications' in settings
FREEBIE
2016-03-11 11:46:10 -08:00
lilia
7578991f4e Remove emoji logging
// FREEBIE
2016-03-11 11:01:13 -08:00
Sam Lanning
662020ce68 Add title text for emoji in messages.
Fixes #250

// FREEBIE
2016-03-09 12:46:33 -08:00
lilia
e91f646920 Fix initial post-sync timestamps
Fixes #669

// FREEBIE
2016-02-24 17:11:59 -08:00
lilia
cc0b8e835a Don't show left groups in list of all contacts
// FREEBIE
2016-02-22 17:11:16 -08:00
lilia
ef9559d844 Add tests for filtering left groups from search
// FREEBIE
2016-02-22 17:11:16 -08:00
lilia
7e8ce5eb54 Omit left groups from search
Unless they contain messages.

// FREEBIE
2016-02-22 17:11:16 -08:00
lilia
f940676357 Ignore attempts to post empty debug logs
Fixes #697

// FREEBIE
2016-02-22 13:59:34 -08:00
lilia
a962d97bfb Fix debug log submission loading UX
This flow broke a bit with transition to modal debug log.

Restructure such that the loading class can be applied to an appropriate
element inside the modal. Ensure that the input elements are hidden when
submit is clicked, the result elements are shown when the log upload is
completed.

// FREEBIE
2016-02-22 12:48:06 -08:00
lilia
7f8c76faca Make debug log as big as possible
Tweak style to make the modal reasonably wide/tall, and use flexbox
to automatically expand the textarea.

// FREEBIE
2016-02-22 12:41:49 -08:00
lilia
636c0f2a60 Put debug log in a modal
Also dedupe close-button style

// FREEBIE
2016-02-19 17:34:59 -08:00
lilia
33fde3d4e7 Dedupe modal styles
// FREEBIE
2016-02-19 17:34:59 -08:00
lilia
74aeddcbda Add missing view file
// FREEBIE
2016-02-18 16:13:53 -08:00
lilia
173e037fa6 Fix minor style errors
And keep it that way, by making jscs config more opinionated.

// FREEBIE
2016-02-18 13:45:22 -08:00
lilia
a3c6061480 Add Notification Settings
Fixes #471

// FREEBIE
2016-02-18 12:22:43 -08:00
lilia
4ab2e25df6 Refactor Contact and Conflict views
Untangle these two views into their component parts, consolidating all
the key conflict logic in the key conflict view. Contact view now simply
renders basic contact info and miscellaneous errors but not conflicts or
message errors.

// FREEBIE
2016-02-18 12:22:43 -08:00
lilia
1bd0855d93 Remove duplicate display of network errors
Network errors render as a resend dialogue at the top of the message
detail and need not be re-reported in the contact list or errors
section.

// FREEBIE
2016-02-18 12:22:42 -08:00
lilia
f221921127 Tweak conflict style
// FREEBIE
2016-02-18 12:22:42 -08:00
lilia
28c763992a Move error indicators on message bubbles
// FREEBIE
2016-02-18 12:22:42 -08:00
lilia
5340791868 Display key conflict dialog inline
One less modal.

// FREEBIE
2016-02-18 12:22:42 -08:00
lilia
ad66da9fb5 Move identity conflicts to top of message detail
Also restyle them as with network errors

// FREEBIE
2016-02-18 12:22:42 -08:00
lilia
f5436a5123 Clicking on message status icon opens detail view
Additionally, hovering over it will apply cursor: pointer. Previously
only the timestamp exhibited this behavior.

// FREEBIE
2016-02-18 12:22:41 -08:00
lilia
4198987723 Display a message when provisioning socket fails
Fixes #464

// FREEBIE
2016-02-09 16:23:17 -08:00
lilia
7e82d1295c Handle attachment upload errors
Adds a new kind of replayable error that handles retry of pre-encryption
failures, e.g., attachment upload.

Fixes #485

// FREEBIE
2016-02-09 13:21:32 -08:00
lilia
080c233a93 Add timestamp update interval test
Break out delay computation into its own function and add tests,
including a regression test for #646.

// FREEBIE
2016-01-27 12:24:50 -08:00
codedust
9b390baea0 Fix a bug that causes 100% CPU load in timestamp_view.js
When `millis_since` becomes larger than one week, `delay` becomes
negative and is set to Zero. This causes an infinite loop and therefore
100% CPU usage (single thread).

// FREEBIE
2016-01-27 11:47:03 -08:00
lilia
b0def76801 Remove unused code
Well that never worked.

Closes #458

// FREEBIE
2016-01-26 14:56:16 -08:00
Lorenz Hübschle-Schneider
e876d8f6ed Display relative timestamps in conversation list
This mimicks Signal-Android's relative timestamps.
Previously, only the date was displayed.

Fixes #284
2016-01-26 10:54:40 -08:00
Sam Lanning
0569d4c889 Replace conversation panel js resizing with flex styling.
// FREEBIE
2016-01-25 14:37:03 -08:00
Sam Lanning
c4a9ac94b4 Improve Confirmation Dialog
Some basic modifications to the Confirmation Dialog:
* Always attached to <body> regardless of view that called it.
* Always centered horizontally on screen.
* A black semi-transparent overlay is now displayed over everything, and under
  the dialog.
* Various other style changes.

fixes #389

// FREEBIE
2016-01-25 14:33:38 -08:00
lilia
43071d94d6 Log invalid number inputs
// FREEBIE
2016-01-21 13:59:04 -08:00
lilia
05681ce35b Don't render placeholder markup unless necessary
Rather than always rendering divs for the key and placeholder, render
the placeholder only if the key is missing.

// FREEBIE
2016-01-19 19:49:27 -08:00
jakob
6c7f2cf0fc Show help text for unknown contact identity
Adds a new message string "theirIdentityUnknown".

Fixes #576

// FREEBIE
2016-01-19 18:56:33 -08:00
2-4601
ea0e013e81 Add a trifle of i18n to KeyVerificationView
Two strings were left behind:
- "Their identity (they read)"
- "Your identity (you read)"

I saved them.

// FREEBIE
2016-01-17 15:36:58 -08:00
Sam Lanning
ac25b62fdc Improve implementation of i18n for Install Flow following comments on #611
* Move install flow i18n logic to install_view.js (from options.js)
* Switch to using placeholders (instead of jQuery) for i18n messages with html.
* Switch to using moustache template instead of jQuery for i18n substitution.

// FREEBIE
2016-01-17 15:10:15 -08:00
Sam Lanning
0825d3e22f Implement i18n for Install Flow
Fixes #600

// FREEBIE
2016-01-17 15:10:15 -08:00
lilia
cdd139b44c Refresh group contacts when rendering member list
Fix #581

// FREEBIE
2016-01-12 11:06:14 -08:00
Felix Epp
a65166ae3b Fix #583 from/to label translatable
I just added i18n calls and the corresponding keys for en + de.
2016-01-11 10:46:33 -08:00
lilia
ceaf94e05b Rename variable for consistency
// FREEBIE
2016-01-08 06:19:09 -08:00
lilia
c6956f81d0 i18n DebugLogView
// FREEBIE
2016-01-02 02:51:25 -08:00
lilia
1d6e391dd6 Prefer single quotes
// FREEBIE
2016-01-02 02:51:25 -08:00
lilia
0e2d2d60c2 i18n KeyConflictDialogue
// FREEBIE
2016-01-02 02:51:25 -08:00
lilia
3172c49436 i18n ContactView
Part of the MessageDetailView

// FREEBIE
2016-01-02 02:51:25 -08:00
lilia
d502f1bdee i18n KeyConflictView
Also refactor generic error view to make this simpler.

// FREEBIE
2016-01-02 02:51:25 -08:00
lilia
ccdbfc3e12 i18n AttachmentView
// FREEBIE
2016-01-02 02:51:24 -08:00
lilia
47e33a14ac i18n UnsupportedFileTypeToast
// FREEBIE
2016-01-02 02:51:24 -08:00
lilia
42f15011fa i18n FileSizeToast
// FREEBIE
2016-01-02 02:51:24 -08:00
lilia
4066223d72 i18n SocketView
// FREEBIE
2016-01-02 02:51:24 -08:00
lilia
836a7cb8c5 i18n InboxView
// FREEBIE
2016-01-02 02:51:24 -08:00
lilia
85eb5c4d59 i18n KeyVerificationView
// FREEBIE
2016-01-02 02:51:24 -08:00
lilia
95e47dace1 i18n GroupMemberListView
// FREEBIE
2016-01-02 02:51:24 -08:00
lilia
73ea415e95 i18n ConfirmationDialogView
// FREEBIE
2016-01-02 02:51:24 -08:00
lilia
ea9fa00658 i18n MessageDetailView
// FREEBIE
2016-01-02 02:51:24 -08:00
lilia
0a43e9e8b2 i18n EndSessionView
// FREEBIE
2016-01-02 02:51:24 -08:00
lilia
02cc6623ea i18n ConversationView
// FREEBIE
2016-01-02 02:51:24 -08:00
lilia
d03d6fb7a5 Fix autolinking for urls with non-English characters
Fixes #559

https://url.spec.whatwg.org/#url-code-points

// FREEBIE
2016-01-01 06:29:26 -08:00
lilia
881aa1685d Fix up unsupported attachment rendering
Rather than simply displaying an inactionable error, render a link that
allows the user to save the unsupported attachment.

// FREEBIE
2015-12-21 17:57:35 -08:00
David Baldwynn
8251db6ae6 Added error message for unsupported attachment type (issue #419) 2015-12-21 00:19:32 -08:00
lilia
04359c9184 Remove received_at from message detail on outgoing messages
Only show sent_at for outgoing messages, matching Android.

The received_at timestamp reflects the time a message was saved locally.
It is necessary on both incoming and outgoing messages for sorting
purposes, but can be confusing in the context of an outgoing message
detail view, since users don't think about themselves "receiving" their
own messages, and may even interpret this as the time that a message was
received by their conversation partner's device.

// FREEBIE
2015-12-20 23:45:35 -08:00
lilia
ed4015f919 Return early from previewImages for unsupported files
// FREEBIE
2015-12-20 22:16:54 -08:00
lilia
fa6d6974ed Discard unsupported files
Fixes #534

// FREEBIE
2015-12-20 22:14:39 -08:00
lilia
a137415b7a Fix standalone registration
// FREEBIE
2015-12-10 10:36:14 -08:00
lilia
77caa63321 Normalize views' template fetching pattern
Typically, a view can specify its templateName and then use the default
render method on Whisper.View, except in some special cases like message
view or message detail where other operations are performed during
render.

// FREEBIE
2015-12-09 18:58:52 -08:00
lilia
61a57a753b Provide user feedback when number is invalid
While typing a number, the new contact element is faded out. When the
number becomes valid it is opaque. If the element is clicked while
invalid, it displays 'Invalid number' and waits for the input to change
again. A new conversation is only opened if the number is valid.

// FREEBIE
2015-12-09 18:58:52 -08:00
lilia
a258f1a66b Refactor number parsing and validation
Refactor libphonenumber.validateNumber into libphonenumber.parseNumber,
which encapsulates the try-catch pattern used in number parsing and
returns an object of info about the input number rather tha throwing
since we expect to get some invalid number inputs the user is typing.

In the conversation model,
  * Separate phone number validation from search token updating.
  * Perform token update before save if the number was valid.
  * Stop storing unneeded number variants as conversation properties.

// FREEBIE
2015-12-09 18:58:51 -08:00
lilia
7dd0fb70b5 Remove unused code
Here lies the remains of the old compose flow, which must eventually be
restored for group creation flow, but will likely be rewritten entirely.

// FREEBIE
2015-12-09 18:58:51 -08:00
lilia
3d98b54027 Create contact from number with common punctuation
The 'Create new contact' option should now appear for numbers including
parens and other common punctuation.

// FREEBIE
2015-12-09 18:58:51 -08:00
lilia
ae52c047bf Clean up open-event logic with new convos and search results
Search view triggers an open event when a valid phone number is entered
and the 'Create new contact' card is clicked.

Inbox view should listen and respond to this event. It should also
disregard select events on the new contact element since those are fired
before phone number validation.

Finally, the search view can stop listening to select events because the
inbox view is already doing so.

// FREEBIE
2015-12-09 18:58:51 -08:00
lilia
0b7742ecd7 Create contact by number with no country code or +
Search box finds or creates a conversation given a phone number in
local (to the user's region) or international format.

Previously you had to enter e164 format to set up the conversation
correctly.

If the number is not valid, do not open the conversation.

TODO: user feedback on invalid numbers.

// FREEBIE
2015-12-09 18:58:50 -08:00
OdysseasKr
f2d2e08fa2 Fix code styling 2015-12-09 18:57:50 -08:00
OdysseasKr
652d0963fc Add drag and drop support for text
By adding the drag and drop support for media files, the default
event handlers were overwritten. Thus drag and drop did not support
text. Now, the drag and drop listeners revert to the default behaviour
when the user does not drag a file.

Resolves: #478
2015-12-09 18:57:50 -08:00
OdysseasKr
cbbb8dfa24 Add drag and drop for attachments
Files can be dragged and dropped on the bottom in order to be added as
attachments.

Resolves: #260
2015-12-07 15:32:14 -08:00
lilia
c1aada4f0f Don't request background page from background page
This file is loaded by the background page, which means it is already
bound to the background page's global context. This was not true at some
time in the distant past but is true now.

// FREEBIE
2015-12-07 12:36:30 -08:00
lilia
85285a1094 Inline a one-line function only used in one place
// FREEBIE
2015-12-05 19:33:11 -08:00
lilia
68f2505996 Display phone number in conversation header
Fixes #436

// FREEBIE
2015-12-04 12:15:12 -08:00
lilia
db773dd8a7 Fix selected state transition on firstRun
// FREEBIE
2015-11-28 15:50:44 -08:00
lilia
8d214b73d9 Render conversation placeholder hint in place
// FREEBIE
2015-11-28 14:42:25 -08:00
lilia
891a5e54ad Add hint for users with no groups or contacts
If you have no contacts or groups, display a hint about phone numbers.

// FREEBIE
2015-11-27 22:26:56 -08:00
lilia
7bf94c33d5 Show all contacts when inbox is empty 2015-11-27 22:26:55 -08:00
lilia
152f59cc95 Restyle first run hint
// FREEBIE
2015-11-27 22:26:55 -08:00
lilia
d4e0c11ebc Show a hint on startup if the inbox is empty
Fixes #403

// FREEBIE
2015-11-27 11:36:46 -08:00