Commit Graph

201 Commits (4f1df7377f53f80e8b011ea28e5c7833c2c959dd)

Author SHA1 Message Date
Scott Nonnenberg c5935eef5d Show 'You' in Android theme quotes instead of contact name 8 years ago
Daniel Gasienica fccbf70d57 Pre-process media for `LightboxGallery` 8 years ago
Daniel Gasienica 110b58230b Only revoke object URLs we created 8 years ago
Daniel Gasienica c6599d2e14 Add another permutation of `EmptyState` 8 years ago
Daniel Gasienica 9ca6fd6498 Center lightbox navigation controls 8 years ago
Daniel Gasienica fa45656e8e Wire up media gallery empty state 8 years ago
Daniel Gasienica 4d01264c09 Fix layout of media gallery 8 years ago
Daniel Gasienica 78f15b654d Add `EmptyState` component 8 years ago
Daniel Gasienica ea49f7a3b6 Implement keyboard navigation for `Lightbox` 8 years ago
Daniel Gasienica e1b620602d Display attachments from disk 8 years ago
Daniel Gasienica 407c77395b Add explicit boolean 8 years ago
Daniel Gasienica 9451dc5e41 Define `AttachmentSchemaVersion3` 8 years ago
Daniel Gasienica 21db2e7182 Use `saveURLAsFile` 8 years ago
Daniel Gasienica 307ab0d3a5 Extract `saveURLAsFile` 8 years ago
Daniel Gasienica 4c0c55082f Move navigation controls to the bottom 8 years ago
Daniel Gasienica fb8d4e2421 Implement basic lightbox with gallery support 8 years ago
Daniel Gasienica 43e19f3b06 Prevent default event on icon button clicks 8 years ago
Daniel Gasienica b3d0438537 Show hand cursor on media grid items 8 years ago
Daniel Gasienica 45d6c7a5a8 Implement video support in lightbox 8 years ago
Daniel Gasienica ac04f0648a Load more documents than media 8 years ago
Daniel Gasienica 6ee56b8445 Remove newlines 8 years ago
Daniel Gasienica b74b761255 Implement click to save for document list 8 years ago
Daniel Gasienica 8ca5a391af arrayBufferToObjectURL: Ensure `data` is `ArrayBuffer` 8 years ago
Daniel Gasienica b27fdd1559 Use `pointer` cursor for `DocumentListItem` 8 years ago
Daniel Gasienica 4a5e61eaf4 Implement `Attachment.save` 8 years ago
Daniel Gasienica f8119be97b Include videos in media gallery 8 years ago
Daniel Gasienica 37d73accde Show ‘Documents’ tab 8 years ago
Daniel Gasienica 96c44094e3 Implement `Conversation.fetchFileAttachments` 8 years ago
Scott Nonnenberg ccf14710a3 styleguide: Make filesize and Signal.Util.GoogleChrome available 8 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.
8 years ago
Daniel Gasienica b65370c8d7 Prefer `GoogleChrome.is*` over `MIME.is*` 8 years ago
Daniel Gasienica 64c3d604aa Fix type errors 8 years ago
Daniel Gasienica cd6912f0dd 🎨 Autoformat code 8 years ago
Daniel Gasienica 823a58f98a Prevent NPE 8 years ago
Daniel Gasienica 96be0df8c7 Show lightbox controls based on presence of handlers 8 years ago
Daniel Gasienica 59650035ec Use 🇺🇸 spelling 8 years ago
Daniel Gasienica feff820cd4 Prefer custom styles over `strong` 8 years ago
Daniel Gasienica fca8de16c8 Add required `Message.id: string` 8 years ago
Daniel Gasienica dd7e51e697 🎨 Fix formatting 8 years ago
Daniel Gasienica 74582de2d1 Clarify naming 8 years ago
Daniel Gasienica 6330a8d9f3 Simplify expression 8 years ago
Daniel Gasienica f99e6306c3 Simplify `withSection` 8 years ago
Daniel Gasienica d98d08a7e0 Remove obsolete TODO 8 years ago
Daniel Gasienica e97b078088 Use `componentWillUnmount` 8 years ago
Daniel Gasienica 9abf1f0fcd Use `dash-case` for CSS class names 8 years ago
Daniel Gasienica 2e121310e4 🎨 Fix lint error 8 years ago
Daniel Gasienica 4d04638358 Document changes for MVP 8 years ago
Daniel Gasienica c3e04ecf87 Remove use of `LoadingIndicator` 8 years ago
Daniel Gasienica 6d5d0df1c0 🎨 Fix TSLint errors 8 years ago
Daniel Gasienica 8b9516de72 Update test for attachment metadata 8 years ago
Daniel Gasienica f240269d7b MVP: Only show images in media gallery 8 years ago
Daniel Gasienica b4e3749c88 MVP: Only show media tab
Until we support showing documents.
8 years ago
Daniel Gasienica 60ed82b728 Show all lightbox controls in style guide 8 years ago
Daniel Gasienica a7ed21a811 Add `shouldShowSaveAsButton` option 8 years ago
Daniel Gasienica 0d676a65b8 Open media gallery item in lightbox 8 years ago
Daniel Gasienica a9f7f18721 Add `ItemClickEvent` 8 years ago
Daniel Gasienica d634a414c3 Make visibility of previous/next buttons opt-in 8 years ago
Daniel Gasienica 142236640e Click lightbox to close 8 years ago
Daniel Gasienica ce825fbd66 Rename `save` to `onSave` 8 years ago
Daniel Gasienica 1b9e581e90 Show lightbox image as large as possible 8 years ago
Daniel Gasienica 2cb0b0aeb1 Add arrow controls 8 years ago
Daniel Gasienica 246e0ca87b Add note about inline styles 8 years ago
Daniel Gasienica d797ede791 Close lightbox on escape key press 8 years ago
Daniel Gasienica 86da80fd23 Wire up attachment saving 8 years ago
Daniel Gasienica 593976fe21 Extract Backbone Lightbox view module 8 years ago
Daniel Gasienica 2474b42198 Port lightbox icon buttons 8 years ago
Daniel Gasienica 4a5a2cb5c1 Replace Backbone with React lightbox 8 years ago
Daniel Gasienica cb94d09ef9 Rename media gallery items 8 years ago
Daniel Gasienica 5d0469adef Skip loading videos into memory for performance 8 years ago
Daniel Gasienica c6904476f4 Improve `IndexableBoolean` type 8 years ago
Daniel Gasienica 809e34b0f4 Load 50 attachments for media gallery 8 years ago
Daniel Gasienica 0a4be2e0f4 Remove unused `i18n` 8 years ago
Daniel Gasienica 4ce0472b9f Extract `Message.loadWithObjectURL` 8 years ago
Daniel Gasienica 45d89d1e44 Create `UserMessage` type
Describes user visible messages that can have attachments.
8 years ago
Daniel Gasienica 27c4bf90e3 Add `Signal.Backbone` 8 years ago
Daniel Gasienica 825980fbd1 Add `Collection.fetchVisualMediaAttachments` 8 years ago
Daniel Gasienica cad5e417f3 Add `arrayBufferToObjectURL` module 8 years ago
Daniel Gasienica e5d90775d0 Add `MapAsync` type definition 8 years ago
Daniel Gasienica 648a7ab1bb Autoformat using Prettier 8 years ago
Daniel Gasienica e07458d886 Add basic Backbone type definitions 8 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 */]
```
8 years ago
Daniel Gasienica c46e1a1519 Move top-level functions to `Signal.Util` 8 years ago
Daniel Gasienica a609c31a57 Style attachment section headers 8 years ago
Daniel Gasienica ae4c74dd5b Skip metadata initialization for `verified-change` messages 8 years ago
Daniel Gasienica b0fefdbb98 Implementing grouping messages by date 8 years ago
Daniel Gasienica 424965f876 🎨 Autoformat code 8 years ago
Daniel Gasienica f367a9b059 Move `private` method below `public` ones 8 years ago
Daniel Gasienica 3d70e46aea Calculate dates in UTC 8 years ago
Daniel Gasienica d7b21ef5dc Render attachments grouped by date 8 years ago
Daniel Gasienica e34347f290 Add `groupMessagesByDate` 8 years ago
Daniel Gasienica 9053b6acfc Remove unused style 8 years ago
Daniel Gasienica 66516fd36a Use short format for dates 8 years ago
Daniel Gasienica 923d5ff088 Add `missingCaseError` function 8 years ago
Daniel Gasienica fc1c3aabf5 Add scaffolding for media gallery 8 years ago
Daniel Gasienica a8be4f2d8d Expose Lodash in style guide 8 years ago
Daniel Gasienica 94ef3bab80 Move test file 8 years ago
Daniel Gasienica 32a3ef518b Render media gallery placeholder panel 8 years ago
Daniel Gasienica f9e4613395 Move TS test for message migration 8 years ago
Daniel Gasienica 867bece952 Add `Message.initializeAttachmentMetadata` 8 years ago
Daniel Gasienica c5352cf26c Separate required from optional `Message` keys 8 years ago