Commit Graph

557 Commits

Author SHA1 Message Date
Scott Nonnenberg 2c69f2c367 Support for GV1 -> GV2 migration 2020-11-23 14:48:12 -05:00
Evan Hahn 022c4bd0f4 Initial group calling support 2020-11-23 14:45:44 -05:00
Brandon Outlaw 2013378136
MacOS – Add shortcut for Window -> Show (#4632) 2020-11-10 16:30:56 -08:00
Evan Hahn 618c0fce1e test-electron: wait to run tests until protos are ready 2020-11-04 13:03:14 -06:00
Evan Hahn 8bfaf598af Add license headers across the project 2020-11-04 13:03:13 -06:00
Evan Hahn cb9a7f79d1 Rewrite Message model tests in TypeScript 2020-11-04 13:00:41 -06:00
hashes4merkle b8dbd5970d
Fixing spelling errors (#4615) 2020-11-02 16:46:49 -08:00
Scott Nonnenberg 8eea20ea91
Reliability fixes for conversation formatting and message send 2020-10-28 14:54:33 -07:00
jimio-signal 1c057323ba Point to support flow instead of github 2020-10-26 15:48:44 -07:00
Evan Hahn c4de9436f3
Fix error thrown on message retry 2020-10-22 10:32:23 -07:00
Josh Perez df2fa3c7b1
updateLastMessage: Use MessageController for latest data 2020-10-20 16:26:58 -07:00
Evan Hahn f21dad1519 Mark long hrefs or those with invalid characters as sneaky 2020-10-12 18:10:08 -04:00
Evan Hahn 693deaebe8 Remove IP addresses from "sneaky" link detection 2020-10-12 18:10:08 -04:00
Evan Hahn 313faab774 Outbound link previews 2020-10-12 18:10:08 -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
Evan Hahn a04f9a0e51 Add tests: `localhost` is a "sneaky link" 2020-09-09 17:34:57 -07:00
Scott Nonnenberg 7a02cc815d Support for new GroupV2 groups 2020-09-09 17:34:57 -07:00
Chris Svenningsen 8a2c17f65f Apply new ESLint rules to legacy code 2020-09-09 17:34:57 -07:00
Evan Hahn 91a591c6ca Show group names in notifications, and only show the latest 2020-09-09 17:34:57 -07:00
Evan Hahn 496a90efbb More descriptive notification/left pane text 2020-09-09 17:34:57 -07:00
Chris Svenningsen 5b1536cc02 Initial move towards new ESLint config supporting TS
Co-authored-by: Sidney Keese <sidney@carbonfive.com>
2020-09-01 17:11:16 -04:00
Evan Hahn 2e1e6e847a Widen the set of link previews which can be received 2020-09-01 17:10:18 -04:00
Evan Hahn f8fc23a7a3 Improve nested path detection across app 2020-08-28 15:42:25 -04:00
Evan Hahn aaed0db2e5 Verify sticker data in getDataFromLink 2020-08-28 15:42:25 -04:00
Evan Hahn 45d829e439 Improved link verification logic. 2020-08-28 15:42:24 -04:00
Evan Hahn 3b05e9ad8f Add test for Stickers.redactPackId 2020-08-28 15:42:24 -04:00
Scott Nonnenberg d75eee015f Show notifications when a user's profile name changes 2020-07-30 13:27:44 -07:00
Scott Nonnenberg 901179440f Merge contacts when we discover split or duplicated contacts 2020-07-30 13:17:45 -07:00
Josh Perez 68e432188b Add unknown fields support to Protobuf.js 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 2529c7f9e3 Ensure that 'Join the Beta' menu item shows in production 2020-07-27 14:39:19 -07:00
Scott Nonnenberg a8789919e8 Github -> GitHub 2020-06-24 17:26:37 -07:00
Ken Powers b842b69660 Help Menu changes 2020-06-23 17:30:33 -07:00
Scott Nonnenberg 55f4cd591c Improve safety number logic in group conversations 2020-06-10 14:39:45 -07:00
Ken Powers 980862768b Linkify URLs containing `@` 2020-04-29 17:42:41 -07:00
Ehren Kret a0e9791623 Add support for receiving attachments from CDN 2 2020-04-29 17:42:41 -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 71436d18e2 Include sender in group update notifications 2020-04-15 14:44:46 -07:00
Ken Powers 14b11041ea
Spellcheck: Fallback to all xx-YY locales when xx isn't available 2020-04-15 13:44:46 -07:00
Ken Powers 4a8f5db0a4 Use Electron Spellchecker 2020-03-24 17:03:22 -07:00
Ken Powers 37ad95af27 Passive UUID fixes 2020-03-24 17:03:22 -07:00
Scott Nonnenberg 8d6cba1b43 Eliminate remaining Electron 8 deprecations
* Change systemPreferences.isDarkMode() to nativeTheme.shouldUseDarkColors

* Remove vibrancy parameter to BrowserWindow

* Update curve25519-n; removes context-aware deprecation warning

* Set app.allowRendererProcessReuse = true to remove warning

* Move from deprecated setters to direct property set

* Serialized sender certificates: Store less, store plain object

* isMenuBarAutoHide -> autoHideMenuBar

* UUID: Fix sealed sender indicator on message details screen

* Data._cleanData: Remove function keys, handle null in array

Also:
- run _cleanData when saving attachment download jobs
- remove job from jobs table when the send itself throws error

* _cleanData: Don't dig into strings, booleans, or numbers

* getPropsForMessageDetail: Make it clear what we're reducing

Co-authored-by: Ken Powers <ken@signal.org>
2020-03-24 17:03:01 -07:00
Josh Perez 12457d47a3 Move to new logo and primary blue color 2020-03-24 17:01:51 -07:00
Ken Powers a90246cbe5 Passive UUID support
Co-authored-by: Scott Nonnenberg <scott@signal.org>
2020-03-24 16:59:35 -07:00
Scott Nonnenberg a840e2e5b1 Remove legacy import flow 2020-03-04 17:12:56 -08:00
Scott Nonnenberg 1726e1b77a
Fix windows fast-glob usage in lint-deps test task
* Introduce normalize-path wherever we use fastGlob

* CI: Update yarn version; install yarn via npm on windows

* Add more logging to Grunt file spectron usage

* Lock core.js to what it was resolving to before: 2.4.1

* test/index.html: Remove nonexistent test file

* test/index.html: Remove missing registration.js

* preload.js: Introduce client-side logging for load failures

* Gruntfile: Introduce better debuggability if prod test fails

* Reintroduce glob for searches inside asar
2020-02-26 17:53:39 -08:00
Ken Powers 8d9ccd3c0a
Ensure proper file permissions on startup
Co-authored-by: Scott Nonnenberg <scott@signal.org>
2020-02-21 15:40:04 -08:00
Ken Powers f0028a5cfe Don't linkify invalid URLs 2020-02-19 15:22:37 -08:00
Josh Perez afddc852cc
Add interpolation for fallback dialog messages 2020-02-13 10:14:08 -08:00
Josh Perez 18fd44f504
Move all status/alert dialogs into the Left Pane 2020-02-12 13:30:58 -08:00
Scott Nonnenberg f5be32ba14 Simplify linkification filter - check for ASCII/non-ASCII only 2019-12-18 14:45:11 -05:00
Ken Powers 11d47a8eb9 Sticker Creator 2019-12-17 12:28:46 -08:00
Scott Nonnenberg 0876bf7ae7 Visual bug fixes for v1.29 2019-11-21 10:17:55 -08:00
Scott Nonnenberg 8194b2446b Move to CTRL+= for windows, remove the need for the shift 2019-11-15 14:34:24 -08:00
Scott Nonnenberg 927a0677f1 Zoom In: Remove custom accelerator for windows/linux 2019-11-15 14:34:24 -08:00
Scott Nonnenberg 20a892247f Keyboard shortcuts and accessibility 2019-11-13 16:53:42 -08:00
Scott Nonnenberg 0c09f9620f Improve message download performance 2019-10-10 14:56:14 -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 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 d3d2b0ec52 Use curve functions from native module 2019-08-21 14:55:12 -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 e62a1a7812 Receive support for View Once photos 2019-07-17 11:29:51 -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 c41bc53614 Refactor messages model; New timeline react components 2019-05-16 15:23:21 -07:00
Jonathan Canfield 97b26778b3 Remap zoom to Command+= on macOS (#3296) 2019-04-08 10:17:35 -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 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 b3ac1373fa Move left pane entirely to React 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 ae2db9f09a Improve handling for URLs composed of mixed character sets 2019-03-12 17:44:14 -07: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 858c7e629f Fine-tune linkification technique for link previews 2019-02-11 18:32:05 -08:00
Scott Nonnenberg 813924685e Link Previews 2019-01-29 13:53:14 -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
Scott Nonnenberg 313d08344a Request configuration sync on startup of new version 2018-11-28 12:35:26 -08:00
Scott Nonnenberg 70eed938d9 Store arrayBuffers in database for remote identity keys 2018-11-26 16:22:49 -08:00
Scott Nonnenberg 11fdf22881 Change sessions.id to a TEXT field to prevent type coercion 2018-11-26 15:22:55 -08:00
Scott Nonnenberg e828253ef0 Restor full function syntax to custom Mocha reporter 2018-11-07 16:53:41 -08:00
Scott Nonnenberg dbf0be2db5 eslintify all test files 2018-11-07 16:34:38 -08:00
Scott Nonnenberg 884bc9333d Make timestamp test a bit more forgiving 2018-11-07 16:34:20 -08:00
Scott Nonnenberg 0297279084 Eliminate some conversation fields which are no longer used 2018-11-01 17:00:24 -07:00
Scott Nonnenberg 1755e0adfd Move all remaining stores to SQLCipher 2018-10-31 17:36:51 -07:00
Scott Nonnenberg a7d78c0e9b Sealed Sender support
https://signal.org/blog/sealed-sender/
2018-10-29 14:49:18 -07:00
Scott Nonnenberg ca61c9cb85 Warnings for dangerous files 2018-10-09 13:48:32 -07:00
Scott Nonnenberg cd60bdd08a Move conversations to SQLCipher 2018-10-01 18:18:37 -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 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 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 5933a34a18 Use window.log in browser context, turn on console eslint rule 2018-07-21 14:52:43 -07:00
Scott Nonnenberg b159a8d7c7 Update the user agent for debug log requests 2018-07-18 20:00:10 -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 fc5c52fbdf Remove iOS theme in favor of plain light/dark themes 2018-07-17 15:45:40 -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 4415293100 Make all OS menus localizable
Turns out that Electron is not localizing the 'role' elements like we
expected would happen.
2018-07-03 16:04:21 -07:00
Scott Nonnenberg 8eeaad8e18 Remove unused export/import functionality 2018-06-21 11:54:01 -07:00
Scott Nonnenberg 068cce61e6 Fix path-oriented unit test on Windows 2018-05-31 14:09:41 -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 eec61f5289 Fine-tune file protocol filter 2018-05-31 13:25:45 -07:00
Scott Nonnenberg 06b0544bbe Hardening: normalize on-disk attachment paths before save/load 2018-05-31 13:25:45 -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 4e5c8965ff Move to react for newlines, emoji, and links in message body 2018-05-14 16:09:37 -07:00
Scott Nonnenberg aa13a2c6f7 Parse phone numbers into e164 as part of schema upgrade 2018-05-10 11:54:58 -07: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
Scott Nonnenberg 26be658892 Remove 'Contact' from 'Contact.*' properties, clean->parse 2018-05-08 13:12:11 -07:00
Scott Nonnenberg adbe989949 validateContact: Return error instead of logging 2018-05-08 10:31:16 -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 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
Daniel Gasienica 5c8f734e67 Remove newlines from group IDs 2018-05-03 13:24:39 -04:00
Daniel Gasienica a102016ed8 Port `Settings` and `OS` to TypeScript 2018-05-02 20:01:57 -04:00
Daniel Gasienica 95321e5d3e Remove Vim mode lines 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 41fe50553f Replace Backbone `saveFile` with `Attachment.save` 2018-04-27 16:31:42 -04:00
Daniel Gasienica 9a76d4bcf8 Whitelist `assert` global for tests 2018-04-27 16:31:42 -04:00
Daniel Gasienica 19411a78c8 Remove dead code 2018-04-25 15:25:12 -04:00
Daniel Gasienica 52e4e5aece Omit undefined keys when comparing IndexedDB data 2018-04-25 15:25:12 -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 3a33d862c0 Update backup test fixture 2018-04-25 15:25:12 -04:00
Daniel Gasienica 8b9516de72 Update test for attachment metadata 2018-04-25 15:24:52 -04:00
Daniel Gasienica b0e1cc49a5 Remove legacy Backbone lightbox 2018-04-25 15:24:51 -04:00
Daniel Gasienica 9d84b2f420 Index messages with attachments using a boolean
When indexing message attachment metadata using numeric indexes such as:

```javascript
{
  conversationId: '+12223334455',
  received_at: 123,
  attachments: […],
  numAttachments: 2,
},
{
  conversationId: '+12223334455',
  received_at: 456,
  attachments: [],
  numAttachments: 0,
}
{
  conversationId: '+12223334455',
  received_at: 789,
  attachments: [],
  numAttachments: 1,
}
```

It creates an index as follows:

```
[conversationId, received_at, numAttachments]
['+12223334455', 123, 2]
['+12223334455', 456, 0]
['+12223334455', 789, 1]
```

This means a query such as…

```
lowerBound: ['+12223334455', 0,                1               ]
upperBound: ['+12223334455', Number.MAX_VALUE, Number.MAX_VALUE]
```

…will return all three original entries because they span the `received_at`
from `0` through `Number.MAX_VALUE`. One workaround is to index booleans using
`1 | undefined` where `1` is included in the index and `undefined` is not, but
that way we lose the ability to query for the `false` value. Instead, we flip
adjust the index to `[conversationId, hasAttachments, received_at]` and can
then query messages with attachments using

```
[conversationId, 1 /* hasAttachments */, 0                /* received_at */]
[conversationId, 1 /* hasAttachments */, Number.MAX_VALUE /* received_at */]
```
2018-04-25 15:24:51 -04:00
Daniel Gasienica f9e4613395 Move TS test for message migration 2018-04-25 15:24:50 -04:00
Daniel Gasienica 867bece952 Add `Message.initializeAttachmentMetadata` 2018-04-25 15:24:50 -04:00
Daniel Gasienica df2e6e7864 Port `MIME` module to TypeScript 2018-04-25 15:24:50 -04:00
Scott Nonnenberg bf81c3db63
Document Message v4, remove data-free thumbnails 2018-04-23 16:43:25 -07:00
Scott Nonnenberg c02860af5c
Responding to pull request review feedback
- messages.getQuoteObjectUrl: early return
- backup.js: explaining variables for long if statement
- types/messages.js: Log if thumbnail has neither data nor path
- sendmessage.js:
  - remove extraneous logging
  - fix indentation
  - upload attachments and thumbnails in parallel
- preload: don't load fs for tests, just fse
- _conversation.scss: split two selectors into two lines, 0px -> 0
- backup_test.js: use fse.existsSync and comment twoSlashes regex
- network_tests_view_test.js: Comment duplicate assignment to window.getSocketStatus
2018-04-23 15:36:47 -07:00
Scott Nonnenberg 6ec6bf08c8
Backup E2E test: Normalize paths because glob returns / on WIN 2018-04-20 17:29:55 -07:00
Scott Nonnenberg 1bfc1ed63e
Backup E2E test: Fix path analysis on windows 2018-04-20 16:56:39 -07:00
Scott Nonnenberg a7d44d3344
Backup and end-to-end test! 2018-04-20 15:24:04 -07:00
Scott Nonnenberg c3acf43c47
Eslintify test/backup_test.js 2018-04-20 15:24:04 -07:00
Scott Nonnenberg 3abaeb807d
Prevent infinite repeated errors on leaving electron tests open 2018-04-20 15:24:03 -07:00
Scott Nonnenberg 334fe32210
Fix electron test race condition with protobuf loading 2018-04-20 15:24:02 -07:00
Scott Nonnenberg 12257e1560
MessageView: Show menu w/ 'reply to message' on triple-dot click 2018-04-20 15:23:55 -07:00
Scott Nonnenberg 26e4e97592
Tighten up CSS
- Remove extra padding at top of Android bubbles, via sibling selector
- Don't include .attachments, .quote-wrapper, .content in bubble unless
  we actually need them. This allows for sibling selectors.
- This is a different technique for adding the ReactWrapperView for
  quotes - it is now appended to the DOM instead of attaching to
  something already in the DOM. This allows us to use .remove(), so it's
  a bit cleaner.
- Users of ReactWrapperView can now specify tagName and className
2018-04-20 15:23:47 -07:00
Scott Nonnenberg 30957341e4
Show three dot icon next to message on hover
But only if it doesn't have an error.

Also: reformatted message template in legacy_templates.js to match what
is in background.html for easier diffing.
2018-04-20 15:23:47 -07:00
Scott Nonnenberg a563dc8b37
Style Guide: Additional message examples, a few fixes to enable 2018-04-20 15:23:47 -07:00