Commit graph

3155 commits

Author SHA1 Message Date
Scott Nonnenberg
28aed8247f MessageReceiver: Remove contact/group sync from cache immediately 2019-10-10 14:56:14 -07:00
Scott Nonnenberg
0f93c780ec Kick off checks for updates in more situations 2019-10-10 14:56:14 -07:00
Scott Nonnenberg
5c00b89600 Support for receiving View Once Video 2019-10-10 14:56:14 -07:00
Scott Nonnenberg
9cda14c4f2 On startup after 30+ days, delete local encryption info 2019-10-10 14:56:14 -07:00
Scott Nonnenberg
0c09f9620f Improve message download performance 2019-10-10 14:56:14 -07:00
Scott Nonnenberg
7ab2d9acc6 Video Thumbnails: Seek to 1s mark in video before capture 2019-09-24 13:43:08 -07: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
b77246a7e0 When SQLITE_CORRUPT error happens, immediately restart the app 2019-09-24 13:43:08 -07:00
Scott Nonnenberg
ca43f52151 Message: Ensure that change event always has getReduxData() data 2019-09-18 16:08:46 -07:00
Scott Nonnenberg
344e7e5e76 Attachment-add flow: capture renamed filename, file type checks 2019-09-18 16:08:46 -07:00
Scott Nonnenberg
3719724337 Prevent multiple instances of same background attachment job 2019-09-18 16:08:46 -07:00
Scott Nonnenberg
92235678b5 Only re-save and re-sort conversation if draft has changed 2019-09-18 16:08:46 -07:00
Scott Nonnenberg
095cd884a2 Prevent >64k text in composition box; truncate too-large drafts 2019-09-16 15:47:52 -07:00
Scott Nonnenberg
5bd9964ed2 Windows: Reintroduce flash frame when we trigger a notification 2019-09-06 16:04:31 -04:00
Scott Nonnenberg
e011589a5e A number of performance tweaks 2019-09-06 12:19:50 -07:00
Scott Nonnenberg
35e943e817 Fix access to safety number view from group members screen 2019-09-05 14:18:44 -04:00
Scott Nonnenberg
1ab844674a Ensure out-of-band attachment updates make new top-level objects 2019-09-03 20:07:47 -04:00
Scott Nonnenberg
15af1eea7a Only update drafts in left pane when conversation is closed 2019-09-03 18:41:21 -04:00
Scott Nonnenberg
936768d9c1 Recalculate message height when pending sticker is loaded 2019-08-22 15:41:55 -07:00
Scott Nonnenberg
b19659f5ac Address beta feedback
* Use signal blue for search box focus outline
* Reduce debounce for draft saves
* Be less aggressive in our scrolling corrections
* Lightbox: Ensure that a tall image is still fully visible
* Fix spell checking after Electron API breaking changes
* Fix link preview image generation
* Message highlight: Move to border in signal blue
2019-08-22 17:11:36 -04:00
Scott Nonnenberg
90c2a97aa7 Address alpha feedback 2019-08-21 14:55:18 -07:00
Scott Nonnenberg
ca6f7471f1 Remove all calls to flashFrame() 2019-08-21 14:55:12 -07:00
Scott Nonnenberg
d3d2b0ec52 Use curve functions from native module 2019-08-21 14:55:12 -07:00
Scott Nonnenberg
e29eee4583 Update Electron to 6.0.1, SQLCipher to 4.2.0 2019-08-21 14:55:12 -07:00
Scott Nonnenberg
6ac7f4ccf6 Two fixes for messages causing errors
* Queue delivery receipt sends, only start after we get 'empty'
* Retry cached two minutes after empty, or any post-empty message
2019-08-21 14:55:12 -07:00
Scott Nonnenberg
b5ebd034db Don't render left pane until we're done processing initial queue 2019-08-21 14:55:12 -07:00
Scott Nonnenberg
0b0214cbf9 Some fixes for windowed render 2019-08-21 14:55:12 -07:00
Scott Nonnenberg
e4d2e28ec4 Make identity key screen show up immediately 2019-08-21 14:52:30 -07:00
Scott Nonnenberg
c39d5a811a Full-text search within conversation 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
Scott Nonnenberg
a976cfe6b6 Time out faster for IndexedDB existence checks 2019-08-21 14:52:30 -07:00
Ken Powers
79bba52cfb Large Message Composition 2019-08-21 14:52:30 -07:00
Scott Nonnenberg
d42eb2126e Changes to View Once 2019-08-05 16:23:47 -07:00
Scott Nonnenberg
adf21985c1 Use MessageController whenever we create a new Message 2019-08-05 16:23:47 -07:00
Scott Nonnenberg
cb9ba0fe7f Re-register support for sealed sender when a device is re-linked 2019-08-05 16:23:47 -07:00
Ken Powers
6c0365a770 One emoji image set for picker, composition, message bubble 2019-07-25 09:28:44 -07:00
Ken Powers
464361b2eb Animate in-conversation panels on show/hide 2019-07-25 09:24:03 -07:00
Scott Nonnenberg
df74103335 Two small changes
* Signed prekey rotation: better logging, let => const

* Ensure that we remove sync messages from cache
2019-07-19 09:35:04 -04:00
Scott Nonnenberg
de78d42ad5 Change group_update field of message after avatar download queued 2019-07-17 11:29:51 -07:00
Scott Nonnenberg
e09fa7b402 Ensure suggested attachment filenames are consistent 2019-07-17 11:29:51 -07:00
Scott Nonnenberg
cb2c691667 Improve queuing strategies in the app 2019-07-17 11:29:51 -07:00
Ken Powers
7b645011c2 New composition area with emoji typeahead 2019-07-17 11:29:51 -07:00
Scott Nonnenberg
e62a1a7812 Receive support for View Once photos 2019-07-17 11:29:51 -07:00
Ken Powers
fccf1eec30 Fix file size limitation 2019-07-16 14:48:40 -07:00
Disconnect3d
fa4b2d412f Fix SUPPORTED_MEDIA_DOMAINS regex whitelist (#3459)
The `SUPPORTED_MEDIA_DOMAINS` regex whitelist, used to check if media link comes from trusted hosts is invalid. It does not expose a security risk or I couldn't find an example for such as of now, but if someone would add a subdomain host to it using the same pattern, it would.

A counter example below:
```js
const SUPPORTED_MEDIA_DOMAINS = /^([^.]+\.)*(ytimg.com|cdninstagram.com|redd.it|imgur.com|fbcdn.net|pinimg.com)$/i;

console.log('Testing redd.it: ' + SUPPORTED_MEDIA_DOMAINS.test('redd.it'));
console.log('Testing reddjit: ' + SUPPORTED_MEDIA_DOMAINS.test('reddjit'));
```

Output:
```
$ node example.js
Testing redd.it: true
Testing reddjit: true
```

---

To be more clear, if someone would extend the regex in the future with e.g. `media.redd.it`, an attacker would be able to create a `mediaXredd.it` domain and bypass the whitelist.

---

A visualisation of the incorrect regex can be found on https://regexper.com/#%5E%28%5B%5E.%5D%2B%5C.%29*%28ytimg.com%7Ccdninstagram.com%7Credd.it%7Cimgur.com%7Cfbcdn.net%7Cpinimg.com%29%24

The issue has been found with LGTM: b626ef0b64/files/js/modules/link_previews.js (xdabadfc2bf20f0c3):1
2019-07-16 13:28:16 -07:00
Ken Powers
cb272111ab Run yarn format 2019-07-08 16:29:45 -04:00
Scott Nonnenberg
0df9b4b8fb Prevent multiple parallel signed prekey rotations
* Prevent multiple parallel signed prekey rotations

* When logging error, recalculate id to capture sealed sender info
2019-07-03 14:56:49 -04:00
AJ Jordan
22f5c01247 Fix typo (#3345) 2019-06-28 13:07:00 -04:00
Scott Nonnenberg
569acb091c Migrate from IndexedDB before doing new version checks 2019-06-27 15:21:08 -07:00
Scott Nonnenberg
cc4886caa5 Ensure only one active attachment download setTimeout 2019-06-24 13:39:37 -07:00
Scott Nonnenberg
ab2cc6ee53 Properly download new group avatars 2019-06-24 14:51:33 -04:00
Scott Nonnenberg
d97dae6a87 Capture id after first save for incoming error messages 2019-06-24 14:47:43 -04:00
Scott Nonnenberg
3feb0037e5 Ensure that long message attachments don't show in media gallery 2019-06-21 16:13:42 -07:00
Scott Nonnenberg
102b93241c Only preload emoji after the window is fully loaded 2019-06-20 17:48:54 -07:00
Scott Nonnenberg
6c8bce7b9f Fix incorrect contentType/extension for outgoing resized image attachments
* Use contentType from conversion when resizing outgoing images

* Update outgoing filename with proper extension after resize
2019-06-19 11:51:23 -04:00
Scott Nonnenberg
cc7b9da0cf Ensure that all event handling in background.js is queued 2019-06-14 18:17:37 -04:00
Scott Nonnenberg
e19067861e ConversationView - extract all header setup into new method 2019-06-11 11:07:56 -04:00
Scott Nonnenberg
9fd867fdd1 Support new 'requiredProtocolVersion' in DataMessage
* Add new requiredProtocolVersion field to DataMessage

* Message.requiredProtocolVersion, warning if version mot supported

* Update strings; limit width; new left pane preview text
2019-06-10 17:40:02 -04:00
Scott Nonnenberg
dd98477479 For 'me,' prefer signal profile avatar over address book info 2019-06-07 14:40:34 -04:00
Scott Nonnenberg
3505ab9198 Drop profile on missing profile key, drop avatar on download 403 2019-06-07 13:20:39 -04:00
Ken Powers
d23efc6717 Send message when pressing enter in the emoji picker 2019-05-31 14:58:53 -07:00
Ken Powers
a934759e66 Maintain last-known cursor position for inserting emojis 2019-05-30 16:37:28 -07:00
Scott Nonnenberg
344885d8b1 Focus message box on emoji panel close, don't dismiss on shift 2019-05-30 12:43:18 -07:00
Ken Powers
feb4da874b Enable keyboard navigation in EmojiPicker. 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
Scott Nonnenberg
b221dcff5a Only use attemptedStatus on re-download if it is 'installed' 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
Scott Nonnenberg
41880cfe66 Add some logging for debug log upload 2019-05-28 17:24:28 -07:00
Ken Powers
0e9d549cf3 Fuzzy-Searchable Emoji Picker 2019-05-24 17:03:13 -07:00
Scott Nonnenberg
2f47a3570b Update NetworkStatusView on message error instead of plain render 2019-05-24 13:14:51 -04:00
Scott Nonnenberg
e18b6bed1f Refactor 'waiting' flags into one location, fix timestamp check 2019-05-16 17:15:54 -07:00
Ken Powers
fd36720079 Add "system" theme setting for MacOS 2019-05-16 17:15:54 -07:00
Scott Nonnenberg
47e46e0f43 Improved handling of group changes 2019-05-16 17:15:54 -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
13ad4abaea Handle and send isRecipientUpdate sync messages
* Handle and send isRecipientUpdate sync messages
* Disable sending isRecipientUpdates for now
2019-05-16 15:43:29 -07:00
Scott Nonnenberg
8c365b1a3a Don't add duplicate errors to the database 2019-05-16 15:43:29 -07:00
Scott Nonnenberg
26a3342d2a Padded attachments, attachments v2
* Handle incoming padded attachments
* Attachments v2 - multipart form POST, and direct CDN GET access
* Pad outgoing attachments before encryption (disabled for now)
2019-05-16 15:43:29 -07:00
Michael Walker
4a8e0bd466 Add pinterest domain and asset domains for link preview support
Co-authored-by: ken@signal.org
Co-authored-by: @cmswalker
2019-05-16 15:43:29 -07:00
Scott Nonnenberg
5a5bb859e6 Conversation: Update last message after deleting all messages 2019-05-16 15:23:21 -07:00
Scott Nonnenberg
2cae8d3c25 Fix for incorrect checkmarks when syncs were received offline 2019-05-16 15:23:21 -07:00
Scott Nonnenberg
4470f95e9d Move redux setup to central location - background.js 2019-05-16 15:23:21 -07:00
Scott Nonnenberg
c41bc53614 Refactor messages model; New timeline react components 2019-05-16 15:23:21 -07:00
Scott Nonnenberg
d342b23cbc Refactor: Prepare Message function props for conversation scope 2019-05-07 09:41:09 -07:00
Scott Nonnenberg
fca40cb548 Disable keyboard shortcut for conversation archive 2019-04-17 14:19:32 -07:00
Scott Nonnenberg
b31fbcaa17 Don't send if message body is too long 2019-04-16 14:35:16 -07:00
Scott Nonnenberg
22f7a352f9 updateLastMessage: If we don't update last text, clear it 2019-04-12 14:06:34 -07:00
Scott Nonnenberg
62de2a229d Add logging to track synchronization in message processing 2019-04-10 12:15:00 -07:00
Derek Meer
7727dc093e Hides the "Hide menu bar" option on MacOS (#2903)
The "Hide menu bar" option is only applicable to Windows and some Linux distros,
where the menu bar is attached to the Signal window. Therefore, this commit
ensures that it doesn't show up on MacOS. It includes a setting,
isHideMenuBarSupported(), to control the option's appearance. This
commit also includes the tests to make sure isHideMenuBarSupported()
works correctly.

Fixes #2705
2019-04-08 10:25:14 -07:00
Scott Nonnenberg
629dc8737b Fix issue where 'delete messages' was not clickable second time 2019-04-05 17:18:37 -07:00
Scott Nonnenberg
c8ea2e9463 Download and install updates without the help of electron-updater 2019-04-05 17:18:37 -07:00
Scott Nonnenberg
81de5f9a76 Introduce CTRL-E shortcut for archiving a conversation 2019-04-04 17:17:19 -07:00
Scott Nonnenberg
74cb808763 New MessageController as the single place for in-memory messages 2019-04-04 17:17:19 -07:00
Scott Nonnenberg
274949b247 Enable long message send as an attachment 2019-03-29 11:31:15 -07:00
Scott Nonnenberg
4d8fbe95ff Retry send: Always remove all errors and recalculate recipients 2019-03-29 11:31:15 -07:00
Scott Nonnenberg
0c69d725c3 Ensure that we have all conversations in redux store 2019-03-28 17:23:09 -07:00
Scott Nonnenberg
3b140d9b51 Update react-contextmenu to avoid event handler issues un unload 2019-03-20 13:43:24 -07:00
Scott Nonnenberg
7cfd3870d5 Escape XML delimiters for notifications on linux
Thanks to @whitequark for pointing out an inconsistency in the way that
some Linux desktop environments were displaying markup in notifications.
2019-03-18 16:30:53 -07:00
Scott Nonnenberg
8c4d90df07 Send long text as an attachment instead of inline
Remove Android length warning

Handle incoming long message attachments

Show long download pending status in message bubble

Fix the width of the smallest spinner

Remove Android length warning from HTML templates
2019-03-14 17:30:46 -07:00
Scott Nonnenberg
0e5f405b53 Remove unnecessary 'tag' from Notification construction 2019-03-14 12:32:51 -07:00
Scott Nonnenberg
32fa5cccde Send sync sent messages properly in 1-member group 2019-03-13 10:46:00 -07:00
Scott Nonnenberg
c76d537482 Note to Self: On just expire timer update, set TIMER_UPDATE flag 2019-03-13 09:11:39 -07:00
Scott Nonnenberg
768007a269 Message Detail: Ensure that quotes are not clickable 2019-03-12 17:44:14 -07:00
Scott Nonnenberg
6ffbc0ac06 Archive Conversation 2019-03-12 17:44:14 -07:00
Scott Nonnenberg
d72f89d776 Render only visible conversations in left pane 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
Scott Nonnenberg
bf904ddd12 On attachment save include date, include album index 2019-03-12 17:44:14 -07:00
Scott Nonnenberg
782516186f Move expiring message cleanup after ConversationController.load() 2019-03-12 17:44:14 -07:00
Scott Nonnenberg
e68367fe0d Remove reference to nonexistent view 2019-03-12 17:44:14 -07:00
Scott Nonnenberg
009c58749b Don't continue to log if socket is returning unknown status 2019-03-12 17:44:14 -07:00
Scott Nonnenberg
812f895e12 Bring lastMessage and lastMessageStatus back to conversation 2019-03-12 17:44:14 -07:00
Scott Nonnenberg
dcd16775c3 Note to Self: set expirationStartTimestamp before sending sync 2019-03-12 17:44:14 -07:00
Scott Nonnenberg
eb7ad48951 Only put nbsp before last token in msg body if token is <12 chars 2019-03-12 17:44:14 -07:00
Scott Nonnenberg
ba501a6df6 Fix ASM warnings in MP3 library 2019-03-12 17:44:14 -07:00
Scott Nonnenberg
fbda313d09 Add job details to attachment download log warning 2019-03-12 17:44:14 -07:00
Scott Nonnenberg
ae161c6cf6 Update to Electron 4.x 2019-03-12 17:44:14 -07:00
Scott Nonnenberg
667b2e63f1 Ensure image lightbox is aware of its underlying message changes 2019-03-12 17:44:14 -07:00
Scott Nonnenberg
ae2db9f09a Improve handling for URLs composed of mixed character sets 2019-03-12 17:44:14 -07:00
Scott Nonnenberg
3917ab940e web_api: Fix caching of https.agent objects between requests 2019-02-20 16:51:30 -08:00
Scott Nonnenberg
41ea9ee15b Ensure that we show error'd recipients in message details screen 2019-02-20 16:51:30 -08:00
Scott Nonnenberg
ad53423e0a Queue quote reference handling per convo in handleDataMessage 2019-02-20 16:51:30 -08:00
Scott Nonnenberg
5165eb3bd4 On database error: show popup, allow user to delete and relaunch 2019-02-20 16:51:30 -08:00
Scott Nonnenberg
3fb6ab295f Debug log optimizations and improvements 2019-02-20 16:51:30 -08:00
Scott Nonnenberg
9afea3ae2b View All Media: Listen for updates to conversation, re-render 2019-02-20 16:51:30 -08:00
Scott Nonnenberg
d4eacda649 Disable import/export outside of test mode; not currently used 2019-02-20 16:51:30 -08:00
Scott Nonnenberg
77ae717b9b Clean up shutdown handling - stop processing incoming messages 2019-02-20 16:51:30 -08:00
Scott Nonnenberg
af40ceda6c Note to Self timer fixes for bugs reported by beta users 2019-02-20 16:40:35 -08:00
Scott Nonnenberg
1b9959aca3 Ensure outgoing attachment size always matches resized image 2019-02-13 16:04:58 -08:00
Scott Nonnenberg
28f96fe893 Ensure that we capture sender even if thrown error is falsey 2019-02-13 16:04:58 -08:00
Scott Nonnenberg
291e8d80cb Fix asm.js errors in emscripten-generated functions 2019-02-13 16:04:58 -08:00
Scott Nonnenberg
5b54c9554e Remove groups table, conversation is single source of truth 2019-02-13 16:04:58 -08:00
Scott Nonnenberg
041fe4be05 Remove JSON column and Backbone Model for unprocessed 2019-02-13 16:04:58 -08:00
Scott Nonnenberg
9c540ab977 Add cache support to Signal Protocol Store 2019-02-13 16:04:58 -08:00
Scott Nonnenberg
1d2c3ae23c Download attachments in separate queue from message processing 2019-02-12 16:34:21 -08:00
Scott Nonnenberg
a43a78731a Note to Self 2019-02-12 16:08:51 -08:00
Scott Nonnenberg
858c7e629f Fine-tune linkification technique for link previews 2019-02-11 18:32:05 -08:00
Scott Nonnenberg
462fa712bc Show members: Pull conversation from group table 2019-02-11 18:32:05 -08:00
Scott Nonnenberg
12739ac82d Ensure we don't add empty attachments to quote 2019-02-11 17:37:33 -08:00
Scott Nonnenberg
1a7df91dbc Fix: Navigation to message via quote click didn't always work 2019-02-08 11:54:22 -08:00
Scott Nonnenberg
0d7480bd92 A number of small fixes for Link Previews 2019-02-05 13:55:55 -08:00
Scott Nonnenberg
1533fcc807 Fail over to all numbers in retry if errors don't have numbers 2019-01-29 16:08:03 -08:00
Scott Nonnenberg
92c071e083 Use the proper method for pulling attachments off disk for retry 2019-01-29 16:08:03 -08:00
Scott Nonnenberg
c936859d09 Fix rendering bug with verified state in updateVerified() 2019-01-29 16:08:03 -08:00
Scott Nonnenberg
374b9db493 Ensure that dialog pops up when permissions denied for voice note 2019-01-29 13:53:14 -08:00
Scott Nonnenberg
813924685e Link Previews 2019-01-29 13:53:14 -08:00
Scott Nonnenberg
0eb4760349 Show contact name on 'send anyway' dialog instead of $name$
Partial fix for #1914
2019-01-29 13:53:14 -08:00
Scott Nonnenberg
1e4b562922 Multiple images can now be selected in file chooser and drag/drop 2019-01-16 10:32:57 -08:00
Scott Nonnenberg
74bbdb88a5 Lint fixes 2019-01-15 10:51:49 -08:00
Scott Nonnenberg
16a821645f Preserve scroll position on toggle emoji panel, add attachment 2019-01-15 10:51:49 -08:00
Scott Nonnenberg
0de54e125c Improve caption editor usability, new 'add attachment' affordance 2019-01-15 10:51:49 -08:00
Scott Nonnenberg
ac1a6d197a Enable sending multiple images in one message 2019-01-15 07:51:06 -08:00
Scott Nonnenberg
7db7a3ad44 Preserve scroll position when adding/removing staged quote 2019-01-14 19:20:45 -08:00
Scott Nonnenberg
b08c10a547 FileInputView: Event on attachment change to hide/show microphone 2019-01-14 17:35:01 -08:00
Scott Nonnenberg
43e5d16020 Support for web socket communication with no signaling key 2019-01-14 10:32:12 -08:00
Scott Nonnenberg
b816638dea Fix some of the notification avatar colors 2019-01-04 12:25:48 -08:00
Scott Nonnenberg
dc9f9dabfd Ensure that caption is shown even for single-image message 2019-01-04 12:25:48 -08:00
Scott Nonnenberg
c0be4718fc Update delivered_to for outgoing with earlier delivery receipts 2019-01-04 12:25:48 -08:00
Scott Nonnenberg
f9ea7be61f Reintroduce single attachment limit 2019-01-04 12:25:48 -08:00
Scott Nonnenberg
985b1d6aa6 New staged attachments UI, multiple image attachments per message 2019-01-04 12:21:26 -08:00
Scott Nonnenberg
e4babdaef0 Updates to backup infrastructure 2019-01-04 12:21:26 -08:00
Scott Nonnenberg
47f834cf5c Encrypt device name on account create, on first launch if needed 2019-01-04 12:21:26 -08:00
Herohtar
a21d63e450 Make notification initials consistent with everything else (#3006)
Make notification initials consistent with Avatar component
2019-01-02 14:34:18 -08:00
Herohtar
0b60af1c84 Don't compare a numeric value with a string when using the identity operator (#2989)
Fix comparison for emoji injection at cursor location
2019-01-02 12:22:47 -08:00
Scott Nonnenberg
3851bf351f Throttle typing events, fix profile logging, fix group typing 2018-12-10 14:06:43 -08:00
Scott Nonnenberg
313d08344a Request configuration sync on startup of new version 2018-11-28 12:35:26 -08:00
Scott Nonnenberg
a291834301 Dismiss typing indicator when ConversationView is not loaded 2018-11-26 17:09:50 -08:00
Scott Nonnenberg
70eed938d9 Store arrayBuffers in database for remote identity keys 2018-11-26 16:22:49 -08:00
Scott Nonnenberg
79a861a870 Typing Indicators 2018-11-26 15:26:04 -08:00
Scott Nonnenberg
99252702e1 Support receiving multiple images in one messages 2018-11-26 15:26:04 -08:00
Scott Nonnenberg
447a217397 Bulletproof getNumberInfo against missing ourNumber 2018-11-26 15:23:25 -08:00
Scott Nonnenberg
a780fa3bab Fix reference to nonexistent variable 2018-11-14 15:25:03 -08:00
Scott Nonnenberg
55c3d9371e Bump sender certificate timer after registration for re-link 2018-11-13 09:44:30 -08:00
Scott Nonnenberg
ecf3f18762 Improve our deletion of IndexedDB post-SQLCipher migration 2018-11-12 15:31:17 -08:00
Scott Nonnenberg
6300256a3e Gracefully shut down database operations before app exit 2018-11-12 15:31:17 -08:00
Scott Nonnenberg
c5f9fae444 A few small bugfixes 2018-11-12 15:31:17 -08:00
Scott Nonnenberg
2d48daa7b6 Refine Sealed Sender behaviors 2018-11-07 16:34:20 -08:00
Scott Nonnenberg
fb670ad6b9 Remove IndexedDB files after removing IndexedDB database 2018-11-01 17:00:24 -07:00
Scott Nonnenberg
486932048c Add logging to help in debugging sealedSender state 2018-11-01 17:00:24 -07:00
Scott Nonnenberg
0297279084 Eliminate some conversation fields which are no longer used 2018-11-01 17:00:24 -07:00
Scott Nonnenberg
e08c5e3307 Add current message counter to the log to help with debugging 2018-11-01 17:00:24 -07:00
Scott Nonnenberg
9f647f00d8 A couple fixes for the data layer, legacy message upgrade/migrate 2018-11-01 17:00:24 -07:00
Scott Nonnenberg
68e3cade17 Don't display 'read' icon if read-recipts-setting is disabled 2018-11-01 17:00:24 -07:00
Scott Nonnenberg
e2e0e4c96b Refine sealed sender logic 2018-11-01 17:00:24 -07:00
Scott Nonnenberg
41dd78c073 On fetch of profileAvatar, set it to convo's profileAvatar field 2018-10-31 19:13:08 -07:00
Scott Nonnenberg
6628b73911 Only show database log entries if task takes longer than 10ms 2018-10-31 17:36:51 -07:00
Scott Nonnenberg
1755e0adfd Move all remaining stores to SQLCipher 2018-10-31 17:36:51 -07:00
Scott Nonnenberg
7aa9031c7f Import: Be resilient to deletions from importObject 2018-10-31 09:44:18 -07:00
Scott Nonnenberg
a7d78c0e9b Sealed Sender support
https://signal.org/blog/sealed-sender/
2018-10-29 14:49:18 -07:00
Scott Nonnenberg
739bd4dbda Request contact sync only on the first connect after upgrade 2018-10-26 14:58:33 -07:00
Scott Nonnenberg
2060118e85 Remove messages/conversations/unprocessed IndexedDB object stores 2018-10-26 14:58:33 -07:00
Scott Nonnenberg
e39c999932 Import: Properly handle import with all empty non-convo stores 2018-10-26 10:52:38 -07:00
Scott Nonnenberg
1e562c8293 Properly handle avatar changes in group update messages 2018-10-24 11:31:01 -07:00
Scott Nonnenberg
f21f83a163 Conversations have blue avatar backgrounds if no image provided 2018-10-18 11:39:23 -07:00
Scott Nonnenberg
b9cc17b81a inboxView: Ensure Conversation exists for our own number 2018-10-17 17:17:01 -07:00
Scott Nonnenberg
a24d9f9979 Ensure that file is not attached if we've filtered it 2018-10-17 14:30:19 -07:00
Scott Nonnenberg
7532f397ea Keep object stores after conversations migrate to SQLCipher 2018-10-15 12:24:43 -07:00
Scott Nonnenberg
8edfbdcee5 Longer timeout for orphaned file cleanup 2018-10-15 11:57:00 -07:00
Scott Nonnenberg
7d9711ba65 Restore iOS-specific theme; colors on left in android theme 2018-10-11 11:42:18 -07:00
Scott Nonnenberg
ca61c9cb85 Warnings for dangerous files 2018-10-09 13:48:32 -07:00
Scott Nonnenberg
3b8f934741 On startup, if we've just upgraded to a new version, contact sync 2018-10-09 13:48:03 -07:00
Scott Nonnenberg
59d58aaab5 Allow GIFs larger than 6MB 2018-10-09 13:47:36 -07:00
Scott Nonnenberg
584e932891 Close recorder on switch away, only send after finish clicked 2018-10-05 15:16:22 -07:00
Scott Nonnenberg
f38410976d Delete conversation external files on deletion 2018-10-01 18:18:37 -07:00
Scott Nonnenberg
2cfbfe477a Better handle large numbers of messages in cache on startup 2018-10-01 18:18:37 -07:00
Scott Nonnenberg
a8e12d0771 Add user's avatar to the top left of the screen 2018-10-01 18:18:37 -07:00
Scott Nonnenberg
8f3e3b7aaf Update to new design for avatars: individual/group icons/colors
And two initials.
2018-10-01 18:18:37 -07:00
Scott Nonnenberg
10c53bddb0 Move to new colors, switch incoming/outgoing colors 2018-10-01 18:18:37 -07:00
Scott Nonnenberg
cd60bdd08a Move conversations to SQLCipher 2018-10-01 18:18:37 -07:00
Scott Nonnenberg
3464eb65b8 Keep conversation.lastMessage in memory 2018-09-20 15:25:54 -07:00
Scott Nonnenberg
814b9cf26a Only accept 'you left group' messages when group blocked 2018-09-17 15:58:27 -07:00
Scott Nonnenberg
9c399624cc Support for blocking groups on mobile, via group/blocked syncs 2018-09-14 16:25:43 -07:00
Scott Nonnenberg
46dac94ab8 Pop toast on attempted attach if image attachment is too large 2018-09-05 17:48:43 -07:00
Scott Nonnenberg
d0c4152d99 backup.js: Remove references to nonexistent i18n strings 2018-09-05 14:17:38 -07:00
Scott Nonnenberg
ea8e76d9de MessageView: Only re-render on change of key conversation fields 2018-09-05 14:17:38 -07:00
Scott Nonnenberg
8584a79352 Don't treat sends to a group with unregistered users as an error 2018-09-05 14:17:38 -07:00
Scott Nonnenberg
998c35dcb3 Split configuration into low and high traffic files
Also, we're now handling config ourselves instead of using
electron-config and config dependencies.
2018-08-29 10:40:16 -07:00
Scott Nonnenberg
57d13dad57 data/removeMessage: no need for additional model instantiation 2018-08-16 17:39:30 -07:00
Scott Nonnenberg
02fbea96c0 Move base64 conversions off of the main thread 2018-08-16 17:39:30 -07:00
Scott Nonnenberg
911bc63c67 Move all arrayBuffer<->base64 functions to be async 2018-08-16 17:01:32 -07:00
Scott Nonnenberg
37f3054976 Both UI timer and database timer will remove expired message 2018-08-15 17:45:24 -07:00
Scott Nonnenberg
9f920aa35b Re-enable orphaned attachment cleanup 2018-08-15 17:45:24 -07:00
Scott Nonnenberg
fedfbed304 Copy quoted message contents into quote on receipt
Also:
  - visually distinguish any reference we couldn't verify on receipt
  - show toast on quote click if we can't scroll to message
  - toast visuals redesigned to match rest of app
2018-08-15 14:58:55 -07:00
Scott Nonnenberg
a247ffe5cf When iOS device has been linked, use iOS color scheme 2018-08-15 11:22:45 -07:00
Scott Nonnenberg
0eb2c958a5 Handle contact: don't exit early if timer is 'invalid' 2018-08-15 11:20:53 -07:00
Scott Nonnenberg
621883a0ce Disable drag and drop if it's not a file attachment 2018-08-15 11:17:52 -07:00
Scott Nonnenberg
516a729a45 Additional logging for sql commands in debug mode 2018-08-10 13:13:25 -07:00
Scott Nonnenberg
7983300f4a Use base64 strings for incoming message cache instead of binary 2018-08-10 13:13:25 -07:00
Scott Nonnenberg
9eefc0c29b SettingsView: Fix logging 2018-08-10 12:18:48 -07:00
Scott Nonnenberg
8c8475076b Data layer: return null if id not in database, not empty model 2018-08-09 16:09:41 -07:00
Scott Nonnenberg
c88df69094 New SQL indices and query tweaks to eliminate table scans
Also: New logging on client side to track performance of db queries
2018-08-09 10:11:12 -07:00
Scott Nonnenberg
e086d521f1 Increase the timeout for database updates 2018-08-09 10:11:12 -07:00
Scott Nonnenberg
ae6876a153 Ensure that error in handleDataMessage is treated as error 2018-08-08 09:40:12 -07:00
Scott Nonnenberg
727925a266 Clean up old messages, better handle errors from sending 2018-08-07 18:29:33 -07:00
Scott Nonnenberg
6e193456f9 Eliminate orphaned external message files on startup
Attachments, visual attachment thumbnails, video attachment screenshots
Quote thumbnails
Contact avatars
2018-08-06 18:08:10 -07:00
Scott Nonnenberg
44dec45995 Ensure that all messages in cache are migrated properly 2018-08-06 18:08:10 -07:00
Scott Nonnenberg
9ff80469a5 In partially-successful group send, don't start expire timer 2018-08-06 18:08:10 -07:00
Scott Nonnenberg
9ed1ee90f8 Move expiring message time earlier if read sync has earlier time 2018-08-06 18:08:10 -07:00
Scott Nonnenberg
a01db40e27 Ensure that a SQL command timeout results in an error 2018-08-06 18:08:10 -07:00
Scott Nonnenberg
4b3ddef955 Allow for 'error' status on incoming messages not just outgoing 2018-08-06 18:08:10 -07:00
Scott Nonnenberg
8180417611 Update conversation first on timer change to eliminate flicker 2018-08-02 22:31:27 -07:00
Scott Nonnenberg
22613c8cc4 Set disappearing check timer reliably - on all message saves 2018-08-02 22:31:27 -07:00
Scott Nonnenberg
3961778e53 Fixes for Chrome app import in this new SQLCipher world 2018-08-02 17:32:51 -07:00
Scott Nonnenberg
1d7987108b Show and log progress during the SQLCipher migration 2018-08-02 17:25:51 -07:00
Scott Nonnenberg
1e8f71f035 Make settings and debug log available during initial migrations 2018-08-02 17:19:56 -07:00
Scott Nonnenberg
b1c6a5fe19 When updating message schema pre-SQLCipher, use legacy save 2018-08-01 12:38:48 -07:00
Scott Nonnenberg
0d13d437fe Delete before forced bulk insert to fix broken migrations 2018-07-31 19:52:10 -07:00
Scott Nonnenberg
3105b77475 Migrate to SQLCipher for messages/cache
Quite a few other fixes, including:
  - Sending to contact with no avatar yet (not synced from mobile)
  - Left pane doesn't update quickly or at all on new message
  - Left pane doesn't show sent or error status

Also:
 - Contributing.md: Ensure set of linux dev dependencies is complete
2018-07-31 17:08:45 -07:00
Scott Nonnenberg
53b1b73909 Ensure back button appears when safety number screen shows 2018-07-27 11:07:23 -07:00
Scott Nonnenberg
aa4339a69f Preserve migration state when deleting config due to failed login 2018-07-27 10:55:10 -07:00
Scott Nonnenberg
e9926b3a2a Fix reference to i18n key: Unlinked -> unlinked 2018-07-27 10:55:10 -07:00
Scott Nonnenberg
d51b2b48d1 Workaround for not ending up at bottom of conversation 2018-07-27 10:55:10 -07:00
Scott Nonnenberg
8860e4c7fb Update delivered/read message if already in collection 2018-07-27 10:55:10 -07:00
Scott Nonnenberg
02675312c5 Introduce mandatary migration on startup, to minimum version 2018-07-27 10:55:10 -07:00
Scott Nonnenberg
61f7b8360b Conversation: store lastMessage/lastMessageStatus in memory only 2018-07-27 10:55:10 -07:00
Scott Nonnenberg
f39a96bc76 Move to centralized message/cache data layer
Also, ensure that conversation.messageCollection has nothing in it
unless it has an associated ConversationView.
2018-07-27 10:55:10 -07:00
Scott Nonnenberg
34231168a7 On message delete, ensure that all external files are deleted 2018-07-27 09:15:57 -07:00
Scott Nonnenberg
e80857562a Disappearing messages: show 'disabled' instead of 'set to off' 2018-07-27 09:15:57 -07:00
Scott Nonnenberg
1a01e38d5c Show 'group updated' in left pane when we get info-free update 2018-07-27 09:15:57 -07:00
Scott Nonnenberg
80dd25e995 Preload all icon images to reduce flickering when they are used 2018-07-27 09:15:57 -07:00
Scott Nonnenberg
b7d5013558 Add verified notification and sync the verified status as well 2018-07-26 15:42:07 -07:00
Scott Nonnenberg
bffa910c64 Remove too-verbose logging on contact sync 2018-07-21 14:52:43 -07:00
Scott Nonnenberg
4b3f9e969a Ensure a theme is selected on initial load 2018-07-21 14:52:43 -07:00
Scott Nonnenberg
573a26021b file_input_view: Use makeVideoThumbnail on attach of video 2018-07-21 14:52:43 -07:00
Scott Nonnenberg
5933a34a18 Use window.log in browser context, turn on console eslint rule 2018-07-21 14:52:43 -07:00
Scott Nonnenberg
643739f65d
Responding to feedback on the updated visuals (#2549)
* Conversation List Item: timestamp bold only when convo has unread

* Preserve the positioning of overlays on re-entry into convo

* ConversationListItem: Handle missing and broken thumbnails

* Shorten timestamp in left pane for better Android consistency

* Update convo last updated if last was expire timer change

But not if it was from a sync instead of from you or from a contact.

* Make links in quotes the same color as the text

* MediaGridItem: Update placeholder icon colors for dark theme

* Ensure turning off timer shows 'Timer set to off' in left pane

* ConversationListItem: Show unread count in blue circle

* Add one pixel margin to blue indicator for text alignment

* Ensure replies to voice message can bet sent successfully
2018-07-20 16:37:57 -07:00
Scott Nonnenberg
f2a63c99ed Streamline code to clean logs based on version number 2018-07-20 15:49:51 -07:00
Scott Nonnenberg
12f1932d02
Workaround for linux w/tmp mounted as noexec; spellcheck fails (#2548) 2018-07-20 14:01:36 -07:00
Scott Nonnenberg
cea38b7bc4 Log clear error if we fail to retrieve debug log upload key 2018-07-19 11:07:36 -07:00
Scott Nonnenberg
2ef2235317 Show error if debug log upload fails 2018-07-19 10:21:53 -07:00
Scott Nonnenberg
4ca674edb2 Remove User-Agent from form to upload debug log 2018-07-19 09:15:57 -07:00
Scott Nonnenberg
b159a8d7c7 Update the user agent for debug log requests 2018-07-18 20:00:10 -07:00
Scott Nonnenberg
c517e4193b New option: Disable spell check 2018-07-18 19:41:16 -07:00
Scott Nonnenberg
d5d6cdb250 Automatically clean up old debug info, remove unneeded field 2018-07-18 19:41:16 -07:00
Scott Nonnenberg
66bd6c826d Fix MediaGallery handling of videos - show thumbnail and overlay 2018-07-18 19:40:07 -07:00
Scott Nonnenberg
c2c8dc5090 Make quote props consistent, white circle dark theme play overlay
Prevents errors in the logs about attempting to load images from their
relative patn instead of the absolute path. No effect on the user.
2018-07-18 12:20:14 -07:00
Scott Nonnenberg
5e64e4ef40 Remove verbose updateLastMessage logging, fix MediaGallery save 2018-07-18 12:06:35 -07:00
Scott Nonnenberg
0ac3517d51 On click of search result, show and focus conversation
Also: remove too-verbose logging on contact sync
2018-07-18 11:40:10 -07:00
Scott Nonnenberg
fdc7c85876 A couple small fixes: quotes, ConversationListItem, MessageDetail
- Load quoted message even with local thumbnail
- A bit more space for message in ConversationListItem
- Make the message detail screen scrollable
2018-07-18 10:42:06 -07:00
Scott Nonnenberg
6e4b73ec0c Fix lint errors in conversation_view.js 2018-07-18 09:44:14 -07:00
Scott Nonnenberg
db91560990 Fixes for quotes/schema upgrade, optimize media gallery load
Also: Fix for contact detail page; didn't show back button
2018-07-18 09:38:42 -07:00
Scott Nonnenberg
60f61c804b Fix reply to message w/attachment, dark theme quoted attachment 2018-07-17 20:40:19 -07:00
Scott Nonnenberg
675e34fc8d New React component: ConversationListItem, installed in left pane
When collecting a conversation's last message, we grab that message's
status as well (if outgoing) and show it.
2018-07-17 20:25:55 -07:00
Scott Nonnenberg
3c69886320 Finish new Message component, integrate into application
Also:
- New schema version 8 with video/image thumbnails, screenshots, sizes
- Upgrade messages not at current schema version when loading messages
  to show in conversation
- New MessageDetail react component
- New ConversationHeader react component
2018-07-17 15:58:07 -07:00
Scott Nonnenberg
43a44793c5 Remove jshint - move everything over to eslint
Also removed all hints of previous linters
2018-07-17 15:54:32 -07:00
Scott Nonnenberg
dc11db92f9 New React component: Message
Also: Use react to render contects on the 'show group members' screen
2018-07-17 15:53:33 -07:00
Scott Nonnenberg
fc5c52fbdf Remove iOS theme in favor of plain light/dark themes 2018-07-17 15:45:40 -07:00
Scott Nonnenberg
5823ae3951 Ensure disabled timer notification is 'to off' not 'to seconds' 2018-07-13 09:55:12 -07:00
Scott Nonnenberg
f5852bb357 Be resilient to null thrown errors so we can surface to user 2018-07-13 08:59:18 -07:00
Scott Nonnenberg
c54ba8d1fa Ensure that notifications and auto-hide window settings are saved 2018-07-13 08:58:35 -07:00
Scott Nonnenberg
d8e5e5fcf2 Open separate windows with theme, update settings theme on change 2018-07-13 08:57:30 -07:00
Scott Nonnenberg
61d8a694b7 Remove temporary test logging 2018-07-12 14:20:49 -07:00
Scott Nonnenberg
212ec8bb73 Whenever user opens conversation, update its last message 2018-07-12 11:33:59 -07:00
Matthias Beaupère
6a611cbecf Auto-scroll to selected conversation when reordering them (#2498)
When conversations are reordered (last message time has changed), this commit leads to scrolling the shortest distance to the conversation.
2018-07-05 09:52:24 -07:00
Scott Nonnenberg
e30b34f424 Add 'newmessage' event handler to Conversation for reliablity 2018-07-05 09:32:14 -07:00
Scott Nonnenberg
ad4387803b New media permission, show dialog when not enabled for voice msg
UI now in separate renderer:
  - the permissions popup
  - settings dialog
  - debug log dialog
  - about window

Couple bug fixes:
  - About Window: Fix 'escape' to close window
  - Remove outdated dist/copy tasks from Gruntfile

Eslintified settings_view.js
2018-07-03 16:04:21 -07:00
Scott Nonnenberg
9d9a797bda Handle timer updates along with group updates 2018-07-03 16:04:21 -07:00
Scott Nonnenberg
67464774c3 eslintify expiring_messages.js 2018-07-03 16:04:21 -07:00
Scott Nonnenberg
12b5547e72 Update contents of conversation even when view not hydrated
Also ensure that we update the last message in a conversation after
expire, after the mesage is really deleted from the database.
2018-07-03 16:04:21 -07:00
Scott Nonnenberg
a40a39314a Disable notifications on new 'reconnect' event for laptop resume 2018-07-03 15:06:58 -07:00
Scott Nonnenberg
125c3fafa8
Idle detector: Fix bug preventing it from ever turning off (#2487) 2018-07-03 15:02:58 -07:00
Scott Nonnenberg
0abdd5ead1 Add missing await for thumbnail creation in makeQuote() 2018-06-21 15:19:55 -07:00
Scott Nonnenberg
b113cd0ad2
Expire timer updates: don't send if updated via remote message (#2473)
A recent change removed the type property to make markRead() behave
properly, but that broke our check 'should we send an update?' logic. So
instead of using `isIncoming()` we now use the thing we previously used
to determine whether a message was incoming: `receivedAt`.
2018-06-21 12:01:56 -07:00
Scott Nonnenberg
a4603807e1
Send/reply: Be resilient to errors making attachment thumbnail (#2468)
* Show generic file icon if we fail to make attachment thumbnail

* Be resilient to thumbnail creation errors when creating quote
2018-06-21 12:01:11 -07:00
Scott Nonnenberg
8eeaad8e18 Remove unused export/import functionality 2018-06-21 11:54:01 -07:00
Scott Nonnenberg
1c23c6a9d7 Remove window.config in favor of window.getXXX() accessors 2018-06-14 17:03:53 -07:00
Scott Nonnenberg
5fca44d1b1 Send message: Pull expireTimer, recipients, dest before queueJob 2018-06-14 15:33:56 -07:00
Scott Nonnenberg
dfa1f0797c Ensure timer updates show in convo before initiating message 2018-06-14 15:30:26 -07:00
Scott Nonnenberg
71d873ccfe Ensure message expire timer start times are never in the future 2018-05-31 13:25:45 -07:00
Scott Nonnenberg
f3bd0cf903 Refactor api.js into web_api, which encapsulates all web access 2018-05-31 13:25:45 -07:00
Scott Nonnenberg
8c85f6e3a6 When marking message read, ensure that peers have same read_at
When we mark a message as read, we go to the database to ensure that
older messages in this conversation are marked read as well. That
optimization was missing the read_at value provided to the starting
message, so now it is piped along to all of them.
2018-05-24 18:54:06 -07:00
Scott Nonnenberg
9400d1a538 eslintify background.js 2018-05-24 18:50:49 -07:00
Scott Nonnenberg
34f423b52c Remove unused code; move signal.js to js/modules for eslint
(noticed as I was doing this that signal.js doesn't get eslint coverage)
2018-05-23 16:26:48 -07:00
Scott Nonnenberg
ec3e36824c Remove jscs from the project 2018-05-23 16:26:48 -07:00
Scott Nonnenberg
cfe0bd0e79 Move to npm for several dependencies
mustache
jQuery
underscore
backbone
mocha
chai
intl-tel-input
2018-05-23 16:26:48 -07:00
Scott Nonnenberg
01be58acc2 Remove formatting in importError localization string 2018-05-23 16:26:48 -07:00
Scott Nonnenberg
548c8e69cf Emojification now all done with react via a few new components
Three locations were changed:
  1. a group update, which lists a set of contacts
  2. the contact name in the left pane
  3. the conversation title

Three new components were added to window.Signal.Components to support
these scenarios, respectively:
  1. Emojify
  2. ContactName
  3. ConversationTitle

Note that there are a number of other places in the app that should be
emojified, but never have been before. Essentially any place that a
contact name might be shown. A non-exhaustive list:
  - Show group members
  - Show safety number
  - Verified change notification
  - Disappearing timer change notification
  - Contact verification notification
  - Quote contact name
2018-05-23 16:26:47 -07:00
Scott Nonnenberg
a5416e42c4 Refactor all emoji utility methods into window.Signal.Emoji 2018-05-23 16:26:47 -07:00
Scott Nonnenberg
e2d044e02b Filter file scheme; disable http, https and ftp entirely 2018-05-23 16:26:40 -07:00
Scott Nonnenberg
e02887565b
Update to electron v2.0.1 (#2401)
* Remove extra parenthesis causing warnings on latest chromium

* Update to electron 2.0.1

* Move all @types dependencies to devDependencies

* Update electron-builder/electron-updater

* Update to Node.js 8.9.3 to match Electron 2.0.1
2018-05-23 12:17:58 -07:00
Scott Nonnenberg
d54aedcefa
A few fixes for the contact detail screen (#2374)
* Only show 'send message' on contact detail when user has account

* Make contact detail headers visible in dark mode

* Fix vertical scrolling for very large contact in detail pane

* Fix a couple comment typos
2018-05-23 12:15:46 -07:00
Scott Nonnenberg
4e5c8965ff Move to react for newlines, emoji, and links in message body 2018-05-14 16:09:37 -07:00
Scott Nonnenberg
c00c939148 Update link handling 2018-05-11 13:49:06 -07:00
Scott Nonnenberg
b1a54c416f Notifications: All calls are debounced except for shutdown clear 2018-05-10 17:27:22 -07:00
Scott Nonnenberg
18a76ffb49 Debounce notifications so we don't orphan them
Creating/destroying notifications too quickly in testing on macOS would
result in them sticking around forever, requiring manual user dismissal.
We want to dismiss them for the user when we close or our window is
activated. So now we debounce() calls to our notifications code.
2018-05-10 17:07:42 -07:00
Daniel Gasienica
24002149f6 Log read sync reception and remove notification 2018-05-10 17:06:11 -04:00
Daniel Gasienica
d434262540 Remove last notification before creating new one 2018-05-10 17:06:11 -04:00
Scott Nonnenberg
80b069e9b6 Move phone number format/parse into ts/types/PhoneNumber 2018-05-10 11:54:58 -07:00
Scott Nonnenberg
93d3abbf8d Use contact name when updating last message for a conversation 2018-05-10 11:54:58 -07:00
Scott Nonnenberg
aa13a2c6f7 Parse phone numbers into e164 as part of schema upgrade 2018-05-10 11:54:58 -07:00
Scott Nonnenberg
d2293d9592 parseAndWriteAvatar: Do shallow copy before omit() call
Otherwise, we get all prototype props/functions, which we can't save in IndexedDB
2018-05-10 11:54:58 -07:00
Daniel Gasienica
3bf8a8966a Notification improvements
- Remove on read, on focus, and on exit.
- Show multi-message notifications like '5 new messages'.
2018-05-10 14:45:56 -04:00
Daniel Gasienica
e723484498 Simplify closing emoji panel on escape key down 2018-05-08 17:30:11 -04:00
tommypacker
48708d5738 Close emoji panel on escape press 2018-05-08 17:25:20 -04:00
Daniel Gasienica
16bc1d34c6 Message schema 6: Change classification of media and documents
For an easier implementation, we change our original definition of
`initializeAttachmentMetadata`. This means we have to re-run it marked as
version 6 and mark schema version 5 as deprecated as its definition has changed.
2018-05-08 16:41:07 -04:00
Daniel Gasienica
101041f106 Derive Message.CURRENT_SCHEMA_VERSION 2018-05-08 16:41:06 -04:00
Scott Nonnenberg
26be658892 Remove 'Contact' from 'Contact.*' properties, clean->parse 2018-05-08 13:12:11 -07:00
Scott Nonnenberg
cda326ca45 Use protobuf enum values to eliminate magic numbers 2018-05-08 11:14:56 -07:00
Scott Nonnenberg
adbe989949 validateContact: Return error instead of logging 2018-05-08 10:31:16 -07:00
Scott Nonnenberg
bb01218e83 MessageView: Get rid of 'let' for hasSignalAccount 2018-05-08 10:11:40 -07:00
Scott Nonnenberg
d0efccd121 A couple renames in contact.js 2018-05-08 09:59:25 -07:00
Scott Nonnenberg
420f81ebcd Move contact migrate code from message.js to contact.js 2018-05-08 09:48:47 -07:00
Scott Nonnenberg
8beeef4d10 Show contact name when you reply to message with a contact 2018-05-07 19:30:50 -07:00
Scott Nonnenberg
9d1847a7e5 Pull all setup in preload.js into signal.js. goal: webpackable 2018-05-07 19:30:49 -07:00
Scott Nonnenberg
37821e5a1b Wire up all contact behaviors, refactor Contact type/selector 2018-05-07 19:11:35 -07:00
Scott Nonnenberg
41be7f126b Visuals for embedded contacts as well as contact detail screen 2018-05-07 19:09:55 -07:00
Scott Nonnenberg
3ea3e4e256 Contact sharing: protos and data pipeline
As of this commit: 82b76ccf37
2018-05-07 19:09:55 -07:00
Scott Nonnenberg
b6a585a646
MessageView: Add id from database to DOM for outgoing messages (#2350) 2018-05-07 19:08:45 -07:00
Daniel Gasienica
38f3ad6518 Use SignalService vs textsecure for protobuf 2018-05-07 21:53:39 -04:00
Daniel Gasienica
a0ddab669b Organize globals 2018-05-07 21:53:39 -04:00
Daniel Gasienica
a86056630f Use Attachment.isVoiceMessage 2018-05-07 21:53:39 -04:00
Daniel Gasienica
0121dc7a5a Log notification grouping support 2018-05-04 15:37:46 -04:00
Daniel Gasienica
c2407c8906 Disable notification grouping on Windows 7 2018-05-04 15:37:46 -04:00
Daniel Gasienica
13f1ec2e51 Use structured logs
Easier to search for static prefix and fields are named.
2018-05-03 13:24:39 -04:00
Daniel Gasienica
0ce56eed87 Use structured log 2018-05-03 13:24:39 -04:00
Daniel Gasienica
5c8f734e67 Remove newlines from group IDs 2018-05-03 13:24:39 -04:00
Daniel Gasienica
ae7d6aa900 Log Conversation::updateLastMessage 2018-05-03 13:24:38 -04:00
Daniel Gasienica
a102016ed8 Port Settings and OS to TypeScript 2018-05-02 20:01:57 -04:00
Daniel Gasienica
c591c3ca55 Use native notifications on all platforms 2018-05-02 19:58:33 -04:00
Daniel Gasienica
4e6a03a91c Log whether OS supports native notifications 2018-05-02 19:18:34 -04:00
Daniel Gasienica
1f2a2e1d52 Use Notifications.getStatus 2018-05-02 19:18:34 -04:00
Daniel Gasienica
5fe5320760 Rename SETTINGS to SettingNames 2018-05-02 19:18:33 -04:00
Daniel Gasienica
0701768fd7 Declare globals for drawAttention and isFocused 2018-05-02 19:18:33 -04:00
Daniel Gasienica
06e3f09732 ESLint: Add js/notifications 2018-05-02 19:18:33 -04:00
Daniel Gasienica
b510916ef5 Split globals into third-party and own 2018-05-02 19:18:33 -04:00
Daniel Gasienica
c40bd7e235 Remove unused retryDescription localized string 2018-05-02 18:11:13 -04:00
Scott Nonnenberg
754d65ae2e Let's make it all pretty, shall we?
We missed a couple directories with previous attempts to turn this on
globally: app/ and libtextsecure/

Not to mention files in places we didn't expect: ts files that weren't
in the ts directory!

This turns prettier on for every file we care about (js, ts, tsx, md)
everywhere in the project but for a few key parts.
2018-05-02 13:40:57 -07:00
Daniel Gasienica
6eca5ee940 Document that JPEG auto-orient strips EXIF metadata 2018-04-30 19:05:10 -04:00
Daniel Gasienica
95321e5d3e Remove Vim mode lines 2018-04-30 16:53:34 -04:00
Daniel Gasienica
822850433e Apply manual fixes for ESLint errors 2018-04-30 16:53:34 -04:00
Daniel Gasienica
1dd87ad197 Format all source code using Prettier 2018-04-30 16:53:34 -04:00
Daniel Gasienica
e4baf27fa7 Increase migration conversion speed by a factor of 3x 2018-04-30 16:51:14 -04:00
Daniel Gasienica
50a0048bf2 Skip attachment migration for new users 2018-04-30 13:59:43 -04:00
Daniel Gasienica
6671228028 🎨 Format using ESLint 2018-04-30 13:59:43 -04:00
Daniel Gasienica
d5fdf50fae Remove unused reference 2018-04-30 13:52:00 -04:00
Daniel Gasienica
fccbf70d57 Pre-process media for LightboxGallery 2018-04-30 11:59:26 -04:00
Daniel Gasienica
d00fb560b0 Avoid exposing AttachmentTS 2018-04-27 16:31:43 -04:00
Daniel Gasienica
86e48a5713 Implement background migration using index 2018-04-27 16:31:43 -04:00
Daniel Gasienica
e1b620602d Display attachments from disk 2018-04-27 16:31:43 -04:00
Daniel Gasienica
e2a2165d9c Remove lightbox on unload 2018-04-27 16:31:43 -04:00
Daniel Gasienica
21db2e7182 Use saveURLAsFile 2018-04-27 16:31:43 -04:00
Daniel Gasienica
36c609c2c3 Persist has*Attachments properties for incoming messages 2018-04-27 16:31:43 -04:00
Daniel Gasienica
3df8c22e44 Alphabetize Message properties 2018-04-27 16:31:43 -04:00
Daniel Gasienica
45d6c7a5a8 Implement video support in lightbox 2018-04-27 16:31:42 -04:00
Daniel Gasienica
ac04f0648a Load more documents than media 2018-04-27 16:31:42 -04:00
Daniel Gasienica
b86f9c0be8 Allow saving of attachments from media gallery lightbox 2018-04-27 16:31:42 -04:00
Daniel Gasienica
b74b761255 Implement click to save for document list 2018-04-27 16:31:42 -04:00
Daniel Gasienica
41fe50553f Replace Backbone saveFile with Attachment.save 2018-04-27 16:31:42 -04:00
Daniel Gasienica
954433366e Load documents for media gallery 2018-04-27 16:31:42 -04:00
Daniel Gasienica
2a5f513ebc Organize globals 2018-04-27 16:31:42 -04:00
Scott Nonnenberg
84c7a4c293 Move to some of our global utility methods 2018-04-26 12:01:31 -07:00
Scott Nonnenberg
403fb1fd60 Make algorithm for finding thumbnails more efficient 2018-04-26 12:00:57 -07:00
Scott Nonnenberg
27a30b3267 Respond to PR feedback
- makeThumbnail -> makeImageThumbnail
- duplicate 'display: flex'
- remove no-longer-applicable comment
2018-04-26 09:50:13 -07:00
Scott Nonnenberg
ac0b50d20f
Generate thumbnails for new video attachments, video quotes 2018-04-25 18:32:46 -07:00
Scott Nonnenberg
0e99ca61a2
eslintify file_input_view.js 2018-04-25 15:06:27 -07:00
Daniel Gasienica
bf3a547a76 Organize globals 2018-04-25 15:28:56 -04:00
Daniel Gasienica
f36f206a01 Use IndexablePresence for hasFileAttachments and hasVisualMediaAttachments
Reduces index size, makes it easier to debug using IndexedDB inspector, and
hopefully improves lookup performance.
2018-04-25 15:25:12 -04:00
Daniel Gasienica
8e3c38d5fe Fix formatting 2018-04-25 15:25:12 -04:00
Daniel Gasienica
b65370c8d7 Prefer GoogleChrome.is* over MIME.is* 2018-04-25 15:25:12 -04:00
Daniel Gasienica
96be0df8c7 Show lightbox controls based on presence of handlers 2018-04-25 15:24:52 -04:00
Daniel Gasienica
9134701f7c Move filesize from Bower to npm 2018-04-25 15:24:52 -04:00