Commit Graph

2396 Commits

Author SHA1 Message Date
Daniel Gasienica
3acdeb90c3 Make ReactWrapperView globals explicit 2018-04-25 15:24:51 -04:00
Daniel Gasienica
4a5a2cb5c1 Replace Backbone with React lightbox 2018-04-25 15:24:51 -04:00
Daniel Gasienica
4ce0472b9f Extract Message.loadWithObjectURL 2018-04-25 15:24:51 -04:00
Daniel Gasienica
2dc3877fd4 Integrate visual media attachment gallery 2018-04-25 15:24:51 -04:00
Daniel Gasienica
082ef98a56 Add type definition for deferredToPromise 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
f367a9b059 Move private method below public ones 2018-04-25 15:24:51 -04:00
Daniel Gasienica
d7b21ef5dc Render attachments grouped by date 2018-04-25 15:24:51 -04:00
Daniel Gasienica
ae419764bf Use arrow function over .bind 2018-04-25 15:24:51 -04:00
Daniel Gasienica
272c49c5bf Use existing ReactWrapper 2018-04-25 15:24:50 -04:00
Daniel Gasienica
32a3ef518b Render media gallery placeholder panel 2018-04-25 15:24:50 -04:00
Daniel Gasienica
5f220a7b2c Add migration for media gallery indices 2018-04-25 15:24:50 -04:00
Daniel Gasienica
273248d3fd Wire up ‘View All Media’ menu item 2018-04-25 15:24:50 -04:00
Daniel Gasienica
d14761087a Add schema version 4: Attachment metadata 2018-04-25 15:24:50 -04:00
Daniel Gasienica
df2e6e7864 Port MIME module to TypeScript 2018-04-25 15:24:50 -04:00
Daniel Gasienica
6a63e427c8 Use is instead of Lodash is* 2018-04-25 15:24:50 -04:00
Scott Nonnenberg
9619e5b66d Fix quote thumbnail flickering issue
Turns out that we reload thumbnails for every message when any new
message is added to the conversation. This fix prevents that by actually
checking for the proper sentinel on the message model
2018-04-24 18:33:10 -07:00
Scott Nonnenberg
b0b1dc6be8 Apply iOS theme after link 2018-04-24 18:32:47 -07:00
Scott Nonnenberg
c614c3968b Enable the sending of quoted replies 2018-04-24 14:46:00 -07:00
Scott Nonnenberg
ef1d568a80 Restore rendering of group update and end session messages
The previous work to refactor bubbles broke rendering for these message
types. :0/
2018-04-23 19:16:00 -07: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
ba4b033db9 Disable sending of quoted replies for now 2018-04-20 15:26:44 -07:00
Scott Nonnenberg
21713cbce7 Update quotes to render emoji just like normal messages 2018-04-20 15:24:05 -07:00
Scott Nonnenberg
a7d44d3344 Backup and end-to-end test! 2018-04-20 15:24:04 -07:00
Scott Nonnenberg
d0bcf506b4 Put focus in the message composition field on reply 2018-04-20 15:24:03 -07:00
Scott Nonnenberg
978ff0e2bb Refactor: Use correct name for sanitized filename in backup.js 2018-04-20 15:24:02 -07:00
Scott Nonnenberg
26dd01c4fd Make sent quote clickable - process after adding to conversation 2018-04-20 15:24:01 -07:00
Scott Nonnenberg
73edabfb17 Full pipeline to send quotes, including thumbnail upload 2018-04-20 15:23:57 -07:00
Scott Nonnenberg
13ce056830 Make thumbnails on quote load and on quote preview creation 2018-04-20 15:23:56 -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
f4d9ab8ba0 Put quote preview in text box for Android, above it in iOS 2018-04-20 15:23:54 -07:00
Scott Nonnenberg
d4220e278d MessageView: Remove logging 2018-04-20 15:23:53 -07:00
Scott Nonnenberg
afad1a8d77 conversation_view: Remove logging in quote handling 2018-04-20 15:23:52 -07:00
Scott Nonnenberg
c71dcf0139 Show current quoted message above composition field
Note that substantial changes will be required for the updated Android
mockups, putting the quotation into the text box next to the attachment
preview.
2018-04-20 15:23:51 -07:00
Scott Nonnenberg
e66f9faf33 MessageView refactor: reply -> quote 2018-04-20 15:23:51 -07:00
Scott Nonnenberg
b4ff223d18 Refactor: Push selector logic for quote props into Message model 2018-04-20 15:23:49 -07:00
Scott Nonnenberg
d0b11c59f5 Eslintify conversation_view.js 2018-04-20 15:23:49 -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
Scott Nonnenberg
000dc3a159 Handle attachment load failure for quoted message 2018-04-16 12:17:13 -07:00
Scott Nonnenberg
f1ff040842 Finish type definition for _mapQuotedAttachments 2018-04-16 12:16:34 -07:00
Scott Nonnenberg
4e9abdf348 MessageView: Call the proper render method on change event 2018-04-13 18:44:19 -07:00
Scott Nonnenberg
04d186c05a Conversation.loadQuoteThumbnail: Be resilient to no attachments 2018-04-13 18:10:52 -07:00
Scott Nonnenberg
a6467d4fda Constrain 'start recording' event listener to capture-audio only
(it was firing when clicking on a microphone icon in quotation!)
2018-04-13 18:10:52 -07:00
Scott Nonnenberg
3bbb9f535a Load thumbnail even if we have the full message in hand
This is important for now, when we aren't generating our own thumbnails
2018-04-13 18:10:51 -07:00
Scott Nonnenberg
c283ba1a12 Remove pointer cursor when clicking on quote won't do anything 2018-04-13 18:10:51 -07:00
Scott Nonnenberg
9ad55c803f Fix handling attachment thumbnails using thumbnail key 2018-04-13 18:10:51 -07:00
Scott Nonnenberg
fce9bb7342 Move to central MIME functions, remove some console.log
And generally address PR feedback.
2018-04-13 18:10:51 -07:00