Commit graph

2807 commits

Author SHA1 Message Date
Scott Nonnenberg
e3bada1f4a
MessageView.updateColor: Call getAvatar on convo, not message
FREEBIE
2017-09-07 10:38:00 -07:00
Lilia
71036e31ab Fix horizontal scrolling in convo/message lists (#1448)
This removes some errant horizontal scrollability from the conversation list and
the message list.

// FREEBIE
2017-09-07 09:57:47 -07:00
Lilia
5d8e8459b3 Fix bouncy bubble widths (#1447)
Max-width on a message bubble should be about 30em for the good readability.
However, when the window isn't wide enough, bubbles must be further limited.

The transition should happen around the point that these two rules intersect,
but it was kicking in a little late, which caused the bubbles to jump from wider
to shorter as you widened the window past a certain point. This change adjusts
the threshold for smoother and more consistent bubble resizing.

The variable name $big-avatar-min-width is an artifact of a past design and was
previously used in multiple places, but it no longer makes sense in this context
so it has been discarded.

// FREEBIE
2017-09-07 09:57:33 -07:00
Scott Nonnenberg
cc6dcf67b7 Export: Limit attachment filename length, + convo date, + tests (#1439)
* Export: limit attachment names to 30 chars, tests for helper fns

Also, reintroduce last contact date in conversation dir name

FREEBIE

* MessageView tests: Fix failures during blanket coverage run

FREEBIE
2017-09-06 18:20:42 -07:00
Scott Nonnenberg
4009a0119e MessageView: Handle change of color to null, call getColor() (#1438)
When we relied on the actual value of the color property to be supplied
to the updateColor change event listener, sometimes it would be null.
Then the conversation bubbles would have no color at all, making the
text hard to read.

FREEBIE
2017-09-06 18:19:11 -07:00
Scott Nonnenberg
4cba16cb61 Fetch all conversations on startup of app, not on inbox load (#1437)
* Fetch all conversations on startup of app, not on inbox load

A recent change to fetch conversations less didn't take into account all
that can happen in the app without the inbox loaded. That only happens
when the window is shown, and messages can come in with the app in the
background. In that case, the conversation wouldn't have been loaded
from the database, but would be saved to the database anyway, losing
data.

This change fetches all conversations as soon as the the data store is
ready for a fetch. It also introduces failsafe throws to ensure that
synchronous ConversationController accesses don't happen until the
initial fetch is complete. A new getUnsafe() method was required to
account for some of the model setup that happens during that initial
conversation fetch.

Fixes #1428

FREEBIE

* Fix tests: ConversationController.load() required before get()

FREEBIE
2017-09-06 18:18:46 -07:00
lilia
8caecd50cd Update swedish translations
// FREEBIE
2017-09-04 12:39:32 +02:00
lilia
8dca9c9b8f Update translations
Fixes #1427

// FREEBIE
2017-09-04 12:24:28 +02:00
Scott Nonnenberg
2adc53a588
v0.43.2
Fix problems with updating contact information (#1419)

Performance/reliability: Fetch conversations from DB only once (#1420)

Export bug-fixes (still behind a flag)
  - Properly generate directory names for nameless groups (#1421)
  - Remove " as one of the allowed characters in filenames

FREEBIE
2017-09-01 10:41:39 -07:00
Scott Nonnenberg
d8ce198f55 Fetch conversations once, clean up ConversationController API (#1420)
* Fetch conversations once, clean up ConversationController API

Race conditions around re-fetching have caused some problems recently,
so this removes the need to re-fetch conversations. They are fetched
once or saved once, and that is it. All interaction goes through the
ConversationController, which is the central source of truth.

We have two rules for Conversations:

1. If a conversation is in the ConversationController it doesn't need
   to be fetched, but its initial fetch/save might be in progress. You
   can wait for that fetch/save with conversation.initialPromise.
2. If a conversation is not already in the ConversationController, it's
   not yet in the database. It needs to be added to the
   ConversationController and saved to the database.

FREEBIE

* Remove Conversation.fetch() call in Message.handleDataMessage()

FREEBIE

* ConversationController.API cleanup: Fix two missing spots

FREEBIE
2017-09-01 09:10:41 -07:00
Lilia
51cd28bb4a Fix race handling contact sync with verified info (#1419)
When processing a contact sync with embedded identity key verification info, we
were running overlapping async fetch/save operations on the same conversation
model, causing a race that tends to clobber updates to the contact info.

In this change we extend the application-level contact info handler to block on
a subsequent call to the verification handler, which effectively serializes the
fetch/save calls, and relieves the need for the message receiver to trigger a
seperate event concerning the verification info on contact sync messages.

Fixes #1408

// FREEBIE
2017-09-01 07:42:41 -07:00
Scott Nonnenberg
07abe2639f Export: Properly generate directory names for nameless groups (#1421)
FREEBIE
2017-09-01 07:33:30 -07:00
Scott Nonnenberg
94b63c39fd
Export: Remove " as one of the allowed characters in filenames
Turns out that it's not allowed on windows.

FREEBIE
2017-08-31 23:25:49 -07:00
Scott Nonnenberg
a01588f55e
v0.43.1
Properly handle update of blocked numbers sync'd from mobile
device (#1411)

Fix some bugs with migration to Electron (still behind a flag)
  - Dark Theme: Increase banner text contrast for legibility (#1415)
  - Better disambiguate conversation directory names (#1409)
  - Handle long group or contact names (#1402)
  - Redact group ids in export logging (#1402)

Better logging
  - Don't log expiration if queued task threw an error (#1412)
  - Additional error handling/logging during contact sync (#1395)

Remove unknown group messages from cache - no need to retry! (#1414)

Update a large number of strings via transifex (#1403)

FREEBIE
2017-08-30 14:51:42 -07:00
Scott Nonnenberg
36e8b82b5f Remove unknown group messages from cache - no need to retry! (#1414)
FREEBIE
2017-08-30 14:40:08 -07:00
Scott Nonnenberg
52a595b372 Export/Dark Theme: Increase banner text contrast for legibility (#1415)
FREEBIE
2017-08-30 14:39:45 -07:00
Scott Nonnenberg
46b64e306f createTaskWithTimeout: Don't log expiration if task threw (#1412)
FREEBIE
2017-08-30 13:33:55 -07:00
Scott Nonnenberg
3f7fbd93d5 Export: Better disambiguate conversation directory names (#1409)
FREEBIE
2017-08-30 13:23:07 -07:00
Scott Nonnenberg
4011e26b50 Fix handling of sync message with blocked numbers (#1411)
FREEBIE
2017-08-30 11:55:17 -07:00
Scott Nonnenberg
b14667ae40 Additional error handling/logging during contact sync (#1395)
FREEBIE
2017-08-30 09:35:04 -07:00
Scott Nonnenberg
e16d80d9a2 Update a large number of strings via transifex (#1403)
FREEBIE
2017-08-30 09:31:03 -07:00
Scott Nonnenberg
548586b934 Chrome export fixes: too-long names, redact group ids (#1402)
* On export, don't print out entire group id, just last three chars

FREEBIE

* Export: Limit conversation dirs to 30 characters of original name

FREEBIE

* Redact groups ids on import as well

FREEBIE

* InboxView: Protect against nonexistent loading screen

FREEBIE
2017-08-30 09:30:21 -07:00
Scott Nonnenberg
6190ad794a
v0.43.0
Note: This version requires a new 'directory' permission

Feature: Migration to Electron (currently behind a flag)
  - Warning banner that this version is deprecated
  - Export of all database contents to disk
  - This exported data can be used to initialize the Electron version
    of the app
  - Note: after export, this Chrome instance will not be useable since
    the Electron export-initialized instance will be an exact copy.
    _There can only be one_ client with the same identity!
  - See original pull request for flags to enable or reset:
    https://github.com/WhisperSystems/Signal-Desktop/pull/1342

We now log 'clearAttention' less, since we call it every two seconds

String updates for es, fi, it, ja, pt_PT, ru and sv

FREEBIE
2017-08-28 14:22:26 -07:00
Scott Nonnenberg
763970b0c5
String updates for es, fi, it, ja, pt_PT, ru and sv
FREEBIE
2017-08-28 14:21:40 -07:00
Scott Nonnenberg
3d8aa3b8a2
Export: Handle synchronous 'shutdown-complete' event (already offline)
FREEBIE
2017-08-28 14:01:51 -07:00
Scott Nonnenberg
d31d1712b1
Bullet-proofing export scenarios: null attachments, no msgreceiver
FREEBIE
2017-08-28 13:20:53 -07:00
Scott Nonnenberg
c0cd733139 Full export, migration banner, and full migration workflow - behind flag (#1342)
* Add support for backup and restore

This first pass works for all stores except messages, pending some scaling
improvements.

// FREEBIE

* Import of messages and attachments

Properly sanitize filenames. Logging information that will help with
debugging but won't threaten privacy (no contact or group names),
where the on-disk directories have this information to make things
human-readable

FREEBIE

* First fully operational single-action export and import!

FREEBIE

* Add migration export flow

A banner alert leads to a blocking ui for the migration. We close the socket and
wait for incoming messages to drain before starting the export.

FREEBIE

* A number of updates for the export flow

1. We don't immediately pop the directory selection dialog box, instead
  showing an explicit 'choose directory' button after explaining what is
  about to happen
2. We show a 'submit debug log' button on most steps of the process
3. We handle export errors and encourage the user to double-check their
  filesystem then submit their log
4. We are resilient to restarts during the process
5. We handle the user cancelling out of the directory selection dialog
  differently from other errors.
6. The export process is now serialized: non-messages, then messages.
7. After successful export, show where the data is on disk

FREEBUE

* Put migration behind a flag

FREEBIE

* Shut down websocket before proceeding with export

FREEBIE

* Add MigrationView to test/index.html to fix test

FREEBIE

* Remove 'Submit Debug Log' button when the export process is complete

FREEBIE

* Create a 'Signal Export' directory below user-chosen dir

This cleans things up a bit so we don't litter the user's target
directory with lots of stuff.

FREEBIE

* Clarify MessageReceiver.drain() method comments

FREEBIE

* A couple updates for clarity - event names, else handling

Also the removal of wait(), which wasn't used anywhere.

FREEBIE

* A number of wording updates for the export flow

FREEBIE

* Export complete: put dir on its own line, make text selectable

FREEBIE
2017-08-28 13:06:10 -07:00
Scott Nonnenberg
76a69f7511
Move clear/drawAttention logging up a level to reduce verbosity
FREEBIE
2017-08-28 12:59:08 -07:00
Scott Nonnenberg
f26b9f359c
v0.42.7
- Don't try messages again on subsequent startup if error has been
  shown to the user
- Performance improvement when processing incoming messages
- Workaround for Chrome App icon flashing behavior
- Additional logging when we get delivery receipt for unknown message
- Addition logging to help track down problems with contact sync

FREEBIE
2017-08-25 15:25:21 -07:00
Scott Nonnenberg
bbb12979b3
Fix a few errant jshint problems
FREEBIE
2017-08-25 14:28:05 -07:00
Scott Nonnenberg
9fb079253c Remove errors from the cache when they are shown to the user (#1392)
There's really no reason to retry encryption errors again if they've
already been made user-visible in a conversation.

Also, refactor e->error in background.js onError(), since both e and ev
in this method made it too easy to make a mistake.
2017-08-25 14:24:16 -07:00
Scott Nonnenberg
84fd605ad3 MessageReceiver cache: Don't convert to string for save
Because IndexedDB supports ArrayBuffer natively.

FREEBIE
2017-08-25 13:53:47 -07:00
beernutz
07ec2707ac Update to work around flashing icon issue (#1384)
Repeatedly clearAttention to prevent flashing icon
2017-08-24 16:22:01 -07:00
Scott Nonnenberg
f14ac69f2a Additional logging when we get delivery receipt for unknown msg
FREEBIE
2017-08-23 13:39:29 -07:00
Scott Nonnenberg
4ef36cc95c Add logging to help track down problems with Sync
Seems like we're running into errors sending the message to kick off the
sync, so positive logging as well as error logging is included.

FREEBIE
2017-08-17 17:33:22 -07:00
Scott Nonnenberg
ef00c3828b
v0.42.6
Clean up recently-added strings with grunt locale-patch task

FREEBIE
2017-08-17 10:13:15 -07:00
Scott Nonnenberg
1b3024a5ea
Run 'locale-patch' Grunt task on recent string additions
FREEBIE
2017-08-17 10:11:19 -07:00
Scott Nonnenberg
6659b0d368
v0.42.5
User-facing:
  - Avatar now persists through conversation unload
  - String updates for spanish, italian, and romanian

Dev:
  - Logging for performance analysis and cross-device debugging
  - No more emails from Travis on CI runs

FREEBIE
2017-08-17 09:00:52 -07:00
Scott Nonnenberg
eb348faa38
Update spanish, italian, and romanian strings
FREEBIE
2017-08-17 08:55:14 -07:00
Scott Nonnenberg
675d41843e Re-enable message box if enter pressed with no text/files
Previously the message would stay disabled until the user clicked with
the mouse.

FREEBIE
2017-08-17 08:54:38 -07:00
Scott Nonnenberg
680f7d8b57 Additional logging for perf analysis and cross-device debuging
- How long it takes to get a message through the pre-send checks
- How long it takes to open a conversation for the first time
- The timestamp of any message we send to corellate with other logs
- Add conversation ID to 'decrypt old identity key errors' start/end

FREEBIE
2017-08-17 08:54:38 -07:00
Scott Nonnenberg
f15bdad4b3 Travis doesn't respect the repo/organization email so turning off
Turning off travis email notifications. Github does a fine job notifying
us about the things we care about, otherwise we can always go there and
see the results.

FREEBIE
2017-08-15 14:08:32 -07:00
Scott Nonnenberg
241e26dc17 Don't revoke convo avatar URL on unload - we will need it again
FREEBIE
2017-08-15 14:08:14 -07:00
Scott Nonnenberg
dd8e20b9c3
v0.42.4
-- Fix for incorrect received_date when downloading large amount of
  messages from the server.

FREEBIE
2017-08-14 12:22:15 -07:00
Scott Nonnenberg
9c7db537d0
libtextsecure.js catch-up
FREEBIE
2017-08-14 12:20:13 -07:00
Scott Nonnenberg
973a91d1d5
v0.42.3
- Fix for incorrect recieved_date when downloading large amount of
  messages from the server.

FREEBIE
2017-08-14 12:13:57 -07:00
Scott Nonnenberg
7e9ed1481b Set receivedAt after decrypt, sort by received then sent
FREEBIE
2017-08-14 12:12:36 -07:00
Scott Nonnenberg
4c7b174606
v0.42.2
- When loading a conversation, do check for old messages hidden due to a
  not-yet-approved safety number and attempt to decrypt them
- When processing queued messages or retrying incoming messages,
  maintain original received date
- Fixed an issue where the security checks before sending to a group
  with an unknown contact could fail, blocking send
- Improve performance of security checks before send to groups
- We now disable the message composition text box when doing security
  checks before send

FREEBIE
2017-08-12 13:26:10 -07:00
Scott Nonnenberg
620b71a649 Maintain original received time when processing queued/error msgs
FREEBIE
2017-08-12 13:17:53 -07:00
Scott Nonnenberg
8700112f6d Decrypt any IncomingIdentityKeyError still sticking around
FREEBIE
2017-08-12 13:17:53 -07:00