You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
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 */]
```
|
8 years ago | |
|---|---|---|
| .. | ||
| models | 8 years ago | |
| modules | 8 years ago | |
| views | 8 years ago | |
| .eslintrc | 8 years ago | |
| Mp3LameEncoder.min.js | 8 years ago | |
| WebAudioRecorderMp3.js | 8 years ago | |
| background.js | 8 years ago | |
| chromium.js | 8 years ago | |
| conversation_controller.js | 8 years ago | |
| database.js | 8 years ago | |
| delivery_receipts.js | 8 years ago | |
| emoji_util.js | 8 years ago | |
| expire.js | 8 years ago | |
| expiring_messages.js | 8 years ago | |
| focus_listener.js | 8 years ago | |
| jquery.js | 8 years ago | |
| keychange_listener.js | 8 years ago | |
| libphonenumber-util.js | ||
| libsignal-protocol-worker.js | 10 years ago | |
| logging.js | 8 years ago | |
| notifications.js | 8 years ago | |
| read_receipts.js | 8 years ago | |
| read_syncs.js | 8 years ago | |
| registration.js | 8 years ago | |
| reliable_trigger.js | 8 years ago | |
| rotate_signed_prekey_listener.js | 8 years ago | |
| signal_protocol_store.js | 8 years ago | |
| spell_check.js | 8 years ago | |
| storage.js | 8 years ago | |
| wall_clock_listener.js | 8 years ago | |