Commit graph

759 commits

Author SHA1 Message Date
Evan Hahn
77c306843d
Fix error on message details screen with audio messages 2021-03-24 15:06:12 -07:00
Fedor Indutny
9fa3359477
Mark attachment as corrupted if audio load failed
Sending corrupted audio should not leave user with non-functional
UI. Mark attachment as corrupted and show generic attachment UI for it
instead.
2021-03-22 11:51:53 -07:00
Evan Hahn
3d5f30560d Clean up isSearching selector 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
Evan Hahn
e09fb6cce4 Improve types in ConversationView#showConversationDetails 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
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
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
Evan Hahn
9f5335b854 New Group administration: update title and avatar 2021-03-19 16:57:35 -04:00
Josh Perez
3cc6c5f5ad Fix for missing replacement text in bodyRanges 2021-03-19 16:57:35 -04:00
Josh Perez
44dfd28017 Fix message retry and search results with mentions 2021-03-19 16:57:35 -04:00
Scott Nonnenberg
9e2411ce30 Remove getIsConversationEmptySelector in favor of messageCount 2021-03-19 16:57:35 -04:00
Evan Hahn
5de4babc0d Support for creating New Groups 2021-03-19 16:53:52 -04:00
Josh Perez
12bba24dbd Improvements to Group Settings screen 2021-03-19 16:53:51 -04:00
Scott Nonnenberg
2aa2aca9f2 A few bug fixes 2021-03-19 16:53:51 -04:00
Evan Hahn
06fb4fd0bc Add "new conversation" composer for direct messages 2021-03-19 16:53:51 -04:00
Evan Hahn
eb203ba929 Disable search keyboard shortcuts when main header isn't shown 2021-03-19 16:53:51 -04:00
Josh Perez
34285054f6
Manual download of attachments with no blurHash 2021-02-11 17:50:11 -08:00
007
5fad43fcfb
fix: allow hyphen on search term (#4731) 2021-02-04 14:41:42 -08:00
Scott Nonnenberg
089e2864b3
Reduce unnecessary or overly verbose logging 2021-02-04 11:39:07 -08:00
Josh Perez
a096220990
Do not download media if in call 2021-01-29 14:58:28 -08:00
Scott Nonnenberg
a48b3e381e
Support for joining New Groups via invite links 2021-01-29 14:16:48 -08:00
Josh Perez
c0510b08a5
Introduce conversation details screen for New Groups
Co-authored-by: Chris Svenningsen <chris@carbonfive.com>
Co-authored-by: Sidney Keese <me@sidke.com>
2021-01-29 13:19:24 -08:00
Josh Perez
1b38db2d79
Fixes rendering of about bio 2021-01-27 19:18:50 -05:00
Evan Hahn
d50b02cc35
Remove implicit any from Redux store creation 2021-01-26 15:12:23 -08:00
Josh Perez
258bd55dd2 Show about info from contact profiles 2021-01-25 18:29:01 -08:00
Evan Hahn
8a72607fa7 Prefer type to interface and add an ESLint rule 2021-01-25 18:29:00 -08:00
Evan Hahn
b281420a40 Group calling: add speaker view 2021-01-25 18:28:59 -08:00
Scott Nonnenberg
cbc6c29479 Finish in-redux conversation lookups, getPropsForSearchResult moved 2021-01-25 18:28:58 -08:00
Scott Nonnenberg
272e6cc614 Group V2 invite links: in-conversation messages 2021-01-25 18:28:58 -08:00
Evan Hahn
8144d758ae Hide direct call notification when window is active 2021-01-25 18:28:57 -08:00
Scott Nonnenberg
9f81b4157b Also use sent_at whenever we query database with received_at 2021-01-19 17:35:11 -08:00
Evan Hahn
55091edefa Avoid unnecessary re-render on CHECK_NETWORK_STATUS 2020-12-17 12:12:52 -05:00
Evan Hahn
eff2318157 Minor: mark reducer arguments as Readonly 2020-12-17 12:12:52 -05:00
Evan Hahn
db0ebc5779
Update group membership for a group call when it changes 2020-12-09 15:21:34 -08:00
Josh Perez
318013e83d
Handles safety number changes while in a call 2020-12-08 14:37:04 -05:00
Evan Hahn
0c039bf431
Add group calling events to the message timeline 2020-12-07 14:43:19 -06:00
Evan Hahn
a2f285d243
Put group calling behind a remote feature flag 2020-12-07 14:35:14 -06:00
Scott Nonnenberg
6832b8acca
Timeline: repair oldest/newest metrics if we fetch nothing 2020-12-04 14:41:40 -06:00
Evan Hahn
c85ea814b1
Group calling participants refactor 2020-12-02 10:14:03 -08:00
Evan Hahn
be99bbe87a
Calling selectors are now based on the root state 2020-12-02 10:11:54 -08:00
Evan Hahn
d1866a0e5d
Group calling: tell RingRTC about our rendered resolutions for perf 2020-12-01 17:52:01 -08:00
Josh Perez
81cc8a1211
Group Calling: blocking participants
Co-authored-by: Evan Hahn <evanhahn@signal.org>
2020-12-01 19:30:25 -06:00
Evan Hahn
f3f2cb2b5e
Show active speaker in group calling PiP 2020-12-01 15:52:09 -08:00
Scott Nonnenberg
2b8ae412e0
New feature flag with ability to migrate GV1 groups 2020-12-01 10:42:35 -06:00
Evan Hahn
daef1feae8 Add list of participants to the lobby, and add basic blocking for max participants 2020-11-23 14:49:32 -05:00
Josh Perez
f8b4862ed5 Participant list improvements 2020-11-23 14:49:32 -05:00
Evan Hahn
6d53cb1740 Group calling: Peek into a group call 2020-11-23 14:49:32 -05:00
Josh Perez
5cc7c9a66a Group Calling: Improve mute state styling 2020-11-23 14:49:31 -05:00
Evan Hahn
05205c77cf In conversation header, only show video button for group calls 2020-11-23 14:49:31 -05:00
Evan Hahn
b366967ca5 Upgrade to RingRTC v2.8.2 RC.6 2020-11-23 14:48:12 -05:00
Scott Nonnenberg
2c69f2c367 Support for GV1 -> GV2 migration 2020-11-23 14:48:12 -05:00
Scott Nonnenberg
26884432a2 Update TypeScript, Prettier and typescript-eslint for new TypeScript 3.8 syntax 2020-11-23 14:45:44 -05:00
Josh Perez
1f0c091e13 Group calling enhancements 2020-11-23 14:45:44 -05:00
Evan Hahn
022c4bd0f4 Initial group calling support 2020-11-23 14:45:44 -05:00
Scott Nonnenberg
2977c0ca3d
Message Requests: Show blurhash for pending stickers 2020-11-12 16:22:40 -05:00
Chris Svenningsen
d593f74241
New contact popup when clicking on group member or avatar 2020-11-11 09:36:05 -08:00
Sidney Keese
4d95f83007
Clean up transitional pinned chats 2020-11-09 12:30:05 -06:00
Evan Hahn
3468de255d
Redux state: Allow multiple calls to be stored 2020-11-06 09:36:37 -08:00
Evan Hahn
66da943f27
Call screen footer styling improvements 2020-11-04 11:56:03 -08:00
Evan Hahn
7e23bb6246 Use thunks for calling action creators 2020-11-04 13:03:14 -06:00
Chris Svenningsen
53c89aa40f Send @mentions 2020-11-04 13:03:13 -06:00
Evan Hahn
8bfaf598af Add license headers across the project 2020-11-04 13:03:13 -06:00
Evan Hahn
8c3da11996 Convert emoji actions to use redux-thunk 2020-11-04 13:03:13 -06:00
Evan Hahn
decc93532b Hide call buttons when on call 2020-11-04 13:03:13 -06:00
Chris Svenningsen
c408072576 Mark conversation as unread
Co-authored-by: Sidney Keese <sidney@carbonfive.com>
2020-11-04 13:03:10 -06:00
Evan Hahn
05a91a100f Remove some any casts for "smart" components 2020-11-04 13:00:41 -06:00
Evan Hahn
8160b3b160 Use combineReducers as Redux recommends, removing an any 2020-11-04 13:00:40 -06:00
Scott Nonnenberg
8eea20ea91
Reliability fixes for conversation formatting and message send 2020-10-28 14:54:33 -07:00
Scott Nonnenberg
fa2d300714 Show 'accept invite UI' for re-invite, calm progress spinner 2020-10-26 15:55:27 -07:00
Scott Nonnenberg
89d29b49a3 Conversation reducer: sort by received_at then sent_at like Backbone 2020-10-26 15:48:44 -07:00
Scott Nonnenberg
04b7a29229 Modern profile sharing in 1:1 and GroupV1 groups 2020-10-26 15:48:44 -07:00
Chris Svenningsen
fdc3476106 Fix a few pinned chat sync issues 2020-10-15 18:59:45 -04:00
Josh Perez
1507dea351
Move calling duration timer into redux state 2020-10-13 14:02:43 -07:00
Josh Perez
59a181bd30 Calling: Lobby 2020-10-12 18:10:08 -04:00
Sidney Keese
c3ddedfde1 Reactions: skin tone support 2020-10-12 18:10:08 -04:00
Evan Hahn
c57f7f1cdb Call requests: caller 2020-10-12 18:10:08 -04:00
Josh Perez
a581f6ea81 Calling: Picture-in-picture 2020-10-12 18:10:08 -04:00
Chris Svenningsen
63b2644cb4 Read Pinned Chats
Co-authored-by: Sidney Keese <sidney@carbonfive.com>
2020-10-12 18:10:08 -04:00
Sidney Keese
dabab60f56 Remove TSLint
Co-authored-by: Chris Svenningsen <chris@carbonfive.com>
2020-10-12 18:10:07 -04:00
Chris Svenningsen
b5df9b4067 Migrate messages, conversations, conversation_view, background to TS
Co-authored-by: Sidney Keese <sidney@carbonfive.com>
2020-10-12 18:10:07 -04:00
Scott Nonnenberg
ec8ac1db58 Outgoing: Ensure that sends still succeed without CDS 2020-09-21 15:42:51 -04:00
Sidney Keese
2ade4acd52 Migrate util, types, state, sticker-creator to ESLint 2020-09-21 15:42:51 -04:00
Evan Hahn
de66486e41 Add sound effect for notifications in Linux 2020-09-21 15:42:50 -04:00
Josh Perez
d87335f5a6 Support server-determined build expiration 2020-09-09 17:34:57 -07:00
Scott Nonnenberg
7a02cc815d Support for new GroupV2 groups 2020-09-09 17:34:57 -07:00
Scott Nonnenberg
91ea69133b Ensure conversation details flow down to Message Requests UI 2020-09-01 17:11:16 -04:00
Josh Perez
84e52c948b Mute conversations 2020-08-28 15:42:25 -04:00
Josh Perez
8ab1013f70 Calling: Device Selection 2020-08-28 15:42:25 -04:00
Sidney Keese
5aac427017 Migrate StickerButton, StickerManager, StickerPicker to storybook 2020-08-28 15:42:24 -04:00
Chris Svenningsen
d3d3c41f94
Convert <Avatar /> component to Storybook
Co-authored-by: Chris Svenningsen <chris@carbonfive.com>
Co-authored-by: Sidney Keese <me@sidke.com>
2020-08-13 13:53:45 -07:00
Josh Perez
6a68b37c83
New message state: Partially sent 2020-08-06 18:22:52 -07:00
Scott Nonnenberg
81cb7730a5
Message Requests improvements 2020-08-06 20:50:54 -04:00
Scott Nonnenberg
d75eee015f Show notifications when a user's profile name changes 2020-07-30 13:27:44 -07:00
Scott Nonnenberg
bab59ba2a1 Force social graph to pull down updates after beta.11 install 2020-07-30 13:27:44 -07:00
Scott Nonnenberg
d07b8e82b2 First-class profile name rendering 2020-07-30 13:27:41 -07:00
Peter Thatcher
c6d5607b8c Fix incoming call ringtone by awaiting the playout 2020-07-30 13:10:05 -07:00
Josh Perez
5b83485c89 Update safety number change warning dialog 2020-07-30 13:10:05 -07:00
Peter Thatcher
d3a27a6442 Calling support 2020-07-30 13:08:47 -07:00
Ken Powers
83574eb067 Message Requests 2020-07-30 13:08:44 -07:00
Scott Nonnenberg
e536929e35 Handle messages with the same received_at 2020-07-13 16:06:24 -07:00
Ken Powers
5c6a474ec9
Disable skin tones for reaction emoji 2020-05-11 16:14:02 -07:00
Ken Powers
0865a5481c Pre-alpha: React with any emoji, behind flag 2020-05-05 14:18:46 -07:00
Ken Powers
ba5e2ff6e5 Receive support for DOE messages 2020-04-29 17:42:41 -07:00
Josh Perez
752cd75c54 Make RelinkDialog supersede the NetworkDialog 2020-04-29 17:42:41 -07:00
Scott Nonnenberg
f8f0f805b4 Ensure that search box is resilient to invalid country codes 2020-04-29 17:42:41 -07:00
Josh Perez
4dc7631851
Decouple RelinkDialog from NetworkStatusDialog 2020-04-16 12:20:52 -07:00
Scott Nonnenberg
6b094e1514 Refactor: Move data-access code to Typescript w/ shared interface 2020-04-15 14:45:11 -07:00
Scott Nonnenberg
9ab54b9b83 Move web_api.js and js/modules/crypto.js to TypeScript 2020-04-15 14:44:51 -07:00
Scott Nonnenberg
71436d18e2 Include sender in group update notifications 2020-04-15 14:44:46 -07:00
Josh Perez
9a3ed5ac8d Ensure UpdateDialog closes when restart signal is tapped 2020-04-06 17:12:16 -07:00
Scott Nonnenberg
30e5051239 Eliminate clipped error icon for wide messages with errors 2020-03-25 16:47:42 -07:00
Scott Nonnenberg
6bd5587d50 Retry websocket connect if error returned is 502
* Retry websocket connect if error returned is 502

* Introduce connect button on 'Disconnected' left-pane dialog

* NetworkStatus: If user clicks connect, show connecting for 5s
2020-03-24 17:03:22 -07:00
Josh Perez
4830213a12 Sort by inbox position to match phone after link 2020-03-24 17:02:01 -07:00
Ken Powers
a90246cbe5 Passive UUID support
Co-authored-by: Scott Nonnenberg <scott@signal.org>
2020-03-24 16:59:35 -07:00
Josh Perez
6b56dd4ce0
Move registration from redux selectors to util 2020-02-21 15:08:21 -08:00
Josh Perez
018dc34e47 Fix for fallback update dialog 2020-02-20 16:24:40 -08:00
Josh Perez
18fd44f504
Move all status/alert dialogs into the Left Pane 2020-02-12 13:30:58 -08:00
Scott Nonnenberg
c147e6ce25
Restore contact/conversation differentiation in search results 2020-02-06 14:52:05 -05:00
Ken Powers
01d4aa0772
Update to new message bubble reactions design 2020-02-03 12:02:49 -08:00
Scott Nonnenberg
682ac656c6
Handle duplicate receivedAt timestamps for MESSAGE_RESET event 2020-02-03 14:32:03 -05:00
Scott Nonnenberg
4f16cf595c
Ensure that oldest/newest are correct given duplicate timestamps 2020-01-31 07:39:30 -08:00
Scott Nonnenberg
4af7a9ae2c ducks/conversations: Ensure metrics agree with in-memory messages
* ducks/conversations: Ensure metrics agree with in-memory messages
* Clean up logic cleaning up metrics
2020-01-16 11:45:06 -05:00
Scott Nonnenberg
0f9bc57ccb Only show pack installed tooltip for non-blessed, local installs 2020-01-09 09:35:33 -05:00
Ken Powers
0d3b390129 Upgrade Prettier 2020-01-08 09:44:54 -08:00
Scott Nonnenberg
5d1f8cada9 Stickers: Disable 'installed pack' tooltip 2019-12-19 15:51:50 -08:00
Scott Nonnenberg
1c5ea63410 Shortcuts screen: Show sticker picker cmd when stickers installed 2019-12-18 14:13:56 -05:00
Scott Nonnenberg
e9f08c3da9 Bugfixes for v1.29
* If focus was set to document.body during archive, focus left pane
* Shortcut Guide: Add space between text and shortcut highlight
* Ensure that draft attachment can be closed with click on X button
* Move to keyDown event for user idle checking
* Additional resiliency around avatars; check for them on on-disk
* Increase timeouts to preserve websocket connection
* On startup, be resilient to malformed JSON in log files
* Don't crash if shell.openExternal returns an error
* Whenever we request a contact/group sync, also request block list
* Avatar popup: Ensure styling is mouse- and keyboard-appropriate
* MainHeader: Create popperRoot on demand, not on mount
* CompositionInput: Disable default Ctrl-/ shortcut
* Update libphonenumber
2019-12-03 15:02:50 -05:00
Scott Nonnenberg
2a0a73cfc1 Keyboard/mouse mode and keyboard support bugfixes 2019-11-21 14:16:06 -05:00
Scott Nonnenberg
20a892247f Keyboard shortcuts and accessibility 2019-11-13 16:53:42 -08:00
Scott Nonnenberg
86864279b2 Ensure we track message height change when long message loads 2019-10-17 13:19:41 -04:00
Scott Nonnenberg
8ccb89310b New Idle timer; messages not marked read if user is idle 2019-09-24 13:43:08 -07:00
Scott Nonnenberg
e39c6e5321
Don't search conversations if searching within conversation 2019-09-05 08:59:21 -07:00
Scott Nonnenberg
dbc312e189 Timeline: Resize message if any attachment is no longer pending 2019-09-04 17:11:30 -04:00
Scott Nonnenberg
cbde0bb3d1 Timeline: Handle height change due to pending voice note 2019-09-04 12:02:28 -07:00
Ken Powers
1d3fe4bbf3
Split search actions between discussions and messages 2019-09-04 10:46:28 -04:00
Scott Nonnenberg
8fe73fa884 Timeline: Only call setIsNearBottom if value has changed 2019-09-03 16:06:17 -04:00
Scott Nonnenberg
979841f36c Optimize scrolling: resize only changed row index and higher 2019-08-23 15:56:49 -04:00
Scott Nonnenberg
936768d9c1 Recalculate message height when pending sticker is loaded 2019-08-22 15:41:55 -07:00
Scott Nonnenberg
c570a92e76 Fixes for CI 2019-08-21 16:04:49 -07:00
Scott Nonnenberg
90c2a97aa7 Address alpha feedback 2019-08-21 14:55:18 -07:00
Scott Nonnenberg
0b0214cbf9 Some fixes for windowed render 2019-08-21 14:55:12 -07:00
Scott Nonnenberg
c39d5a811a Full-text search within conversation 2019-08-21 14:52:30 -07:00
Scott Nonnenberg
6292019d30 Virtualize search results - only render what's visible 2019-08-21 14:52:30 -07:00
Scott Nonnenberg
9d4f2afa5a Persist drafts 2019-08-21 14:52:30 -07:00
Scott Nonnenberg
5ebd8bc690 Virtualize Messages List - only render what's visible 2019-08-21 14:52:30 -07:00
Ken Powers
7b645011c2 New composition area with emoji typeahead 2019-07-17 11:29:51 -07:00
Tim Ruffing
6150c3dcc0 Improve performance of _getLeftPaneList (#3398)
* Improve efficiency of conversation sorting in getLeftPaneLists

- Sort conversations and archivedConversations separately, without 
  items that had falsey activeAt
- Don't convert conversation titles to lowercase before comparing:
  collator.compare() is case-insensitive anyway.

* Enable caching for format() in PhoneNumber
2019-06-19 15:58:54 -07:00
Ken Powers
67660e1e39 Use isShortName function 2019-05-30 12:43:18 -07:00
Ken Powers
a0e892bf12 Use selector for filtered recent emojis. 2019-05-30 12:43:18 -07:00
Scott Nonnenberg
86a38d2f2b Exclude invalid recent emoji, simplify items redux structure 2019-05-30 12:43:18 -07:00
Ken Powers
be5d0837f8 Support additional sticker states
Co-authored-by: scott@signal.org
Co-authored-by: ken@signal.org
2019-05-29 11:01:32 -07:00
Ken Powers
0e9d549cf3 Fuzzy-Searchable Emoji Picker 2019-05-24 17:03:13 -07:00
Ken Powers
29de50c12a Stickers
Co-authored-by: scott@signal.org
Co-authored-by: ken@signal.org
2019-05-16 16:10:37 -07:00
Scott Nonnenberg
c41bc53614 Refactor messages model; New timeline react components 2019-05-16 15:23:21 -07:00
Scott Nonnenberg
6ffbc0ac06 Archive Conversation 2019-03-12 17:44:14 -07:00
Scott Nonnenberg
031b64a476 Disable full-text search until we can go to arbitrary messages 2019-03-12 17:44:14 -07:00
Scott Nonnenberg
b3ac1373fa Move left pane entirely to React 2019-03-12 17:44:14 -07:00