Commit Graph

63 Commits (b4bf9733ad555fc72542d73a70933bacef60c338)

Author SHA1 Message Date
Scott Nonnenberg 420f81ebcd Move contact migrate code from message.js to contact.js 7 years ago
Scott Nonnenberg 37821e5a1b Wire up all contact behaviors, refactor Contact type/selector 7 years ago
Scott Nonnenberg 3ea3e4e256 Contact sharing: protos and data pipeline
As of this commit: 82b76ccf37
7 years ago
Daniel Gasienica a86056630f Use `Attachment.isVoiceMessage` 7 years ago
Daniel Gasienica a102016ed8 Port `Settings` and `OS` to TypeScript 7 years ago
Daniel Gasienica 6eca5ee940 Document that JPEG auto-orient strips EXIF metadata 7 years ago
Daniel Gasienica 1dd87ad197 Format all source code using Prettier 7 years ago
Daniel Gasienica d00fb560b0 Avoid exposing `AttachmentTS` 7 years ago
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.
7 years ago
Daniel Gasienica 8e3c38d5fe Fix formatting 7 years ago
Daniel Gasienica 146178f977 Update schema documentation 7 years ago
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 */]
```
7 years ago
Daniel Gasienica d14761087a Add schema version 4: Attachment metadata 7 years ago
Daniel Gasienica df2e6e7864 Port `MIME` module to TypeScript 7 years ago
Daniel Gasienica 6a63e427c8 Use `is` instead of Lodash `is*` 7 years ago
Scott Nonnenberg bf81c3db63
Document Message v4, remove data-free thumbnails 7 years ago
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
7 years ago
Scott Nonnenberg a7d44d3344
Backup and end-to-end test! 7 years ago
Scott Nonnenberg f1ff040842
Finish type definition for _mapQuotedAttachments 7 years ago
Scott Nonnenberg 9ad55c803f
Fix handling attachment thumbnails using thumbnail key 7 years ago
Scott Nonnenberg 054d3887a1
Quotes: The full pipeline into the database
1. MessageReceiver always pulls down thumbnails included in quotes
2. Message.upgradeSchema has a new schema that puts all thumbnails on
   disk just like happens with full attachments.
3. handleDataMessage pipes quote from dataMessage into the final message
   destined for the database
7 years ago
Scott Nonnenberg 21bf02c94d
Fixed examples in Quote.md, rough Android visuals 7 years ago
Daniel Gasienica 24f4ad53bc Use single quotes for identifiers 7 years ago
Daniel Gasienica 195e9b777c Rename `willHaveAttachmentsSavedOnFileSystemDuringUpgrade`
New name: `willAttachmentsGoToFileSystemOnUpgrade`
7 years ago
Daniel Gasienica 4c4443390a Rename `createImporter` to `createAttachmentDataWriter` 7 years ago
Daniel Gasienica 5ea1a305a6 Clarify error origin 7 years ago
Daniel Gasienica 9dcb64b53c Initialize schema version upon import 7 years ago
Daniel Gasienica 94c75762b5 Add `Message.createAttachmentLoader` 7 years ago
Daniel Gasienica bf67254cc5 Add `Message.createImporter` 7 years ago
Daniel Gasienica efd673083d Rename `writeAttachmentData` to `writeNewAttachmentData` 7 years ago
Daniel Gasienica d9be6a0f94 Destructure Lodash `require`s 7 years ago
Daniel Gasienica 5910f84af4 Remove outdated documentation 7 years ago
Daniel Gasienica 4651cbc2eb Improve ``Message.upgradeSchema` preconditions 7 years ago
Daniel Gasienica 8e762797c0 Remove attachment validation
Turns out `fileName` is optional and maybe even `contentType`. We should revisit
this at a later point in time.
7 years ago
Daniel Gasienica 867f73b80a Use double quotes for identifiers in error messages 7 years ago
Daniel Gasienica 2ad0fd7db6 Use Lodash `omit` instead of `delete` 7 years ago
Daniel Gasienica 279b3f81c7 Add `Attachment.deleteData` 7 years ago
Daniel Gasienica 9a540d6d18 Load attachment data before sending message 7 years ago
Daniel Gasienica 6355c54114 Return relative path from `writeAttachmentData`
This will make our app more robust to changes in location on the file system.
7 years ago
Daniel Gasienica 2cd3d5ac16 Add `Message` schema version 3 7 years ago
Daniel Gasienica aa82a2a5fb Add `context` to `Message.upgradeSchema`
Allows us to pass in Electron/Node.js specific functions. This allows better
unit testing in Mocha where we don’t have access to Electron APIs.
7 years ago
Daniel Gasienica ebe2a769c9 Add `Attachment.migrateDataToFileSystem` 7 years ago
Daniel Gasienica a619d48fac Update schema version history 7 years ago
Daniel Gasienica 0e20e8e2ea Use `Errors.toLogFormat` 7 years ago
Daniel Gasienica a5edbf8328 Initialize schema as first step in `upgradeSchema` 7 years ago
Daniel Gasienica 752c8f97e6 🎨 Format ternaries 7 years ago
Daniel Gasienica 8dfaa5619f Prefix private functions with underscore 7 years ago
Daniel Gasienica ed336d31d7 Move schema versioning from `Attachment` to `Message` 7 years ago
Daniel Gasienica b9e9f5e19a 🎨 `withInheritedSchemaVersion` to `inheritSchemaVersion` 7 years ago
Daniel Gasienica df693ade7c Allow `Attachment.fileName` to be `null` 7 years ago