Commit graph

6099 commits

Author SHA1 Message Date
Fedor Indutny
11bcbded64 Storage Service fixes to prevent crashes on Android
* Merge report v1 group settings into local v2 group

The invariants of Storage Service mandate that the remote data always
takes precendence over the local data. We have to updated
blocked/whitelisted/... of the v2 group even if the record is for the v2
group. After doing such update - sync the manifest back to the Storage
Service with correct v2 record for the group.

* Repair errored records before uploading manifest

Fetch and re-attempt to merge errored records before uploading the
manifest. This is useful in the cases where we were not aware of the V1
group when the remote manifest was fetched, and became aware of it
before the new manifest is generated. In such scenario, we should fetch
the records for things we have failed on last time and attempt to merge
them with our data. If they are merged - we should not let their
storageIDs hang in the new manifest, which would cause group duplicates
and crashes on other clients.

* Create v1 group for storage service record

If we receive storage service record with v1 group that we didn't sync
yet (or just don't have for any other reason) - create it instead of
pushing it to `storage-service-error-records`.
2021-03-19 16:57:36 -04:00
Scott Nonnenberg
7ffc01f0b0 MessageReceiver: Restore queuing for in-order decryption 2021-03-19 16:57:36 -04:00
Scott Nonnenberg
0eec84391f MessageReceiver: Be resilient to failed updateCache call 2021-03-19 16:57:36 -04:00
Fedor Indutny
4116bce899 Fix cursor over MessageAudio's spinner
It is not a button, so the cursor has to be in `auto` mode.
2021-03-19 16:57:36 -04:00
Fedor Indutny
f41ffda3e0 Update types: attachments may not have url property 2021-03-19 16:57:36 -04:00
Fedor Indutny
aeab3f8d16 package: clean-transpile should remove tsc cache 2021-03-19 16:57:36 -04:00
Fedor Indutny
05f59f3db1 Add download button and pending spinner for audio messages 2021-03-19 16:57:36 -04:00
Fedor Indutny
f98c3cba8c Preliminary support for better performance testing 2021-03-19 16:57:36 -04:00
Fedor Indutny
fd8339e2ff Fix for UnregisteredUserError handling when fetching UUIDs 2021-03-19 16:57:36 -04:00
Fedor Indutny
6df82867a0 use incremental build mode for tsc 2021-03-19 16:57:36 -04:00
Fedor Indutny
529dd1a3cc Show download button for pending Link Preview images 2021-03-19 16:57:36 -04:00
Scott Nonnenberg
98c9992705 Fix out-of-order message changes; remove isGroupV2, and double-update 2021-03-19 16:57:36 -04:00
Evan Hahn
2d051e2390 Check for conflicts with group IDs 2021-03-19 16:57:35 -04:00
Fedor Indutny
1dcbee4e2a Use eslint --cache CLI argument to speed up linting 2021-03-19 16:57:35 -04:00
Fedor Indutny
3a94d2c75e Generate blurHash for outgoing link previews 2021-03-19 16:57:35 -04:00
Fedor Indutny
b93164a8c0 Reduce size of asar file and unpacked asar folder 2021-03-19 16:57:35 -04:00
Fedor Indutny
59d1159c06 Set attachmentDownloadQueue = undefined on empty 2021-03-19 16:57:35 -04:00
Evan Hahn
8ee653f252 Respect users's "reduced motion" preference for smooth scrolling 2021-03-19 16:57:35 -04:00
Josh Perez
62e04a1bbd Fix for unread syncs and ooo reactions 2021-03-19 16:57:35 -04:00
Evan Hahn
55f0beaa6d Speed up yarn dev TypeScript transpilation 2021-03-19 16:57:35 -04:00
Evan Hahn
e09fb6cce4 Improve types in ConversationView#showConversationDetails 2021-03-19 16:57:35 -04:00
Evan Hahn
6a72879c87 Group settings screen: fix focus styling for panel rows 2021-03-19 16:57:35 -04:00
Fedor Indutny
021b54cb75 Fix sqlite3 threadpool exhaustion with db.serialize() on startup 2021-03-19 16:57:35 -04:00
Scott Nonnenberg
246ca86319 Chat Session Refreshed: Include schemaVersion to prevent later upgrade 2021-03-19 16:57:35 -04:00
Evan Hahn
746e6781ae Fix styling for left pane: muted conversations and message requests 2021-03-19 16:57:35 -04:00
Josh Perez
d5f2492ce5 Fine tune the conversation load experience 2021-03-19 16:57:35 -04:00
Josh Perez
8dc8a64229 Storage sync before writing 2021-03-19 16:57:35 -04:00
Josh Perez
0fd0fac262 Check for conversation conflicts before writing 2021-03-19 16:57:35 -04:00
Josh Perez
58bdf36254 Use classical rotation scheme for log rotation 2021-03-19 16:57:35 -04:00
Evan Hahn
45dbe4d145 In left pane and "add group member", sort E164-only contacts to the bottom 2021-03-19 16:57:35 -04:00
Evan Hahn
053c18f295 Increase font sizes for body 2, subtitle, and caption 2021-03-19 16:57:35 -04:00
Evan Hahn
f7d4f84736 Enable New Group settings for everyone; remove desktop.gv2Admin feature flag 2021-03-19 16:57:35 -04:00
Evan Hahn
b81a52bbdd New Group administration: Add users 2021-03-19 16:57:35 -04:00
Evan Hahn
e81c18e84c Storybook: allow optional chaining 2021-03-19 16:57:35 -04:00
Fedor Indutny
11e9b971f0 Provide third HKDF parameter putRemoteAttestation 2021-03-19 16:57:35 -04:00
Fedor Indutny
8c9e556a22 Don't use useMemo() for AudioContext/Audio/Cache
`useMemo()` doesn't guarantee that the value won't be recomputed during
re-renders. Unfortunately, every time `AudioContext` is instantiated -
there is an audible click. This click happens during the change between
conversations and is very annoying.

Move both `AudioContext` instance to the
GlobalAudioContext's top-level declarations, and `Audio`/`WaveformCache`
to `useRef()`s.
2021-03-19 16:57:35 -04:00
Josh Perez
0bd3c78187 Do not batch single saveMessage calls after start-up 2021-03-19 16:57:35 -04:00
Evan Hahn
80e3582d01 Trim group titles when creating or editing
* Trim group titles when creating or editing

* Trim title in more places
2021-03-19 16:57:35 -04:00
Evan Hahn
2cd29e1b63 In Redux action, log error on failure to create group 2021-03-19 16:57:35 -04:00
Josh Perez
1622fdfa4e Improve conversation initial load times 2021-03-19 16:57:35 -04:00
Josh Perez
d85a43fe93 Replace bunyan with pino 2021-03-19 16:57:35 -04:00
Evan Hahn
b0bee86fd3 Error if encrypted group title is too long 2021-03-19 16:57:35 -04:00
Josh Perez
f07da67c60 Toggle between db in renderer and in main 2021-03-19 16:57:35 -04:00
Fedor Indutny
12d7f24d0f New UI for audio playback and global audio player
Introduce new UI and behavior for playing audio attachments in
conversations. Previously, playback stopped unexpectedly during window
resizes and scrolling through the messages due to the row height
recomputation in `react-virtualized`.

With this commit we introduce `<GlobalAudioContext/>` instance that
wraps whole conversation and provides an `<audio/>` element that
doesn't get re-rendered (or destroyed) whenever `react-virtualized`
recomputes messages. The audio players (with a freshly designed UI) now
share this global `<audio/>` instance and manage access to it using
`audioPlayer.owner` state from the redux.

New UI computes on the fly, caches, and displays waveforms for each
audio attachment. Storybook had to be slightly modified to accomodate
testing of Android bubbles by introducing the new knob for
`authorColor`.
2021-03-19 16:57:35 -04:00
Josh Perez
1ca4960924 Changes display of your own name to "You" 2021-03-19 16:57:35 -04:00
Evan Hahn
9f5335b854 New Group administration: update title and avatar 2021-03-19 16:57:35 -04:00
Josh Perez
468d491d34 Optimizations to the performance improvement changes 2021-03-19 16:57:35 -04:00
Fedor Indutny
cee8207e72 Fix hidden Dev Tools menu item in development runs 2021-03-19 16:57:35 -04:00
Evan Hahn
729d808f62 macOS: make conversation and main header draggable 2021-03-19 16:57:35 -04:00
Evan Hahn
ecc04d36de Disallow group names longer than 32 extended graphemes 2021-03-19 16:57:35 -04:00