Commit Graph

290 Commits (a9c1f628a44df678680d7851aace2ad4a9cf93c0)

Author SHA1 Message Date
Daniel Gasienica a8cd0b782e Rename `DocumentListItem::isLast` to `shouldShowSeparator` 7 years ago
Daniel Gasienica 05f67dc04a Hide separator for last document list entry 7 years ago
Daniel Gasienica fd883b2896 Fix `LightboxGallery` style guide entry 7 years ago
Daniel Gasienica bfe7eb7d5e Consolidate styles 7 years ago
Daniel Gasienica 90329a2764 Display icon for unsupported file formats
Still allows users to download media.
7 years ago
Daniel Gasienica 623bdd9284 Port `colorSVG` from Sass to TypeScript (React) 7 years ago
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.
7 years ago
Daniel Gasienica f4a5bc9907 Add new MIME types 7 years ago
Daniel Gasienica 63bd9dcc61 Add tests for `Attachment.isVisualMedia` 7 years ago
Daniel Gasienica 53918d68de Add `Attachment.isFile` definition 7 years ago
Daniel Gasienica 20246c4d07 Classify all images and videos as visual media
Even if we can’t play it back. Handle that in the lightbox.

Also: Exclude voice messages.
7 years ago
Scott Nonnenberg 0282635142 Remove Object.assign still hanging around in typescript 7 years ago
Scott Nonnenberg 1918a88722 Drop ifTruthy suffix 7 years ago
Scott Nonnenberg 1fd487be3f Refactor to remove duplicated code, lint/prettier fixes 7 years ago
Scott Nonnenberg f628df1035 Eliminate arrows in the standalone Lightbox component examples 7 years ago
Scott Nonnenberg 8beeef4d10 Show contact name when you reply to message with a contact 7 years ago
Scott Nonnenberg 9d1847a7e5 Pull all setup in preload.js into signal.js. goal: webpackable 7 years ago
Scott Nonnenberg 30cb673405 Fix style guide for LightboxGallery component 7 years ago
Scott Nonnenberg 37821e5a1b Wire up all contact behaviors, refactor Contact type/selector 7 years ago
Scott Nonnenberg 41be7f126b Visuals for embedded contacts as well as contact detail screen 7 years ago
Daniel Gasienica daa4a3d63f Compile all protocol buffers 7 years ago
Daniel Gasienica 15759f0db5 Normalize package naming 7 years ago
Daniel Gasienica f88ebdf8b7 Compile protocol buffers as part of `yarn grunt dev` 7 years ago
Daniel Gasienica 38f3ad6518 Use `SignalService` vs `textsecure` for protobuf 7 years ago
Daniel Gasienica 6589247750 Expose `SignalService` to style guide 7 years ago
Daniel Gasienica 86346ee239 Expose `Signal.Types.Attachment` to style guide 7 years ago
Daniel Gasienica 5789b3eb75 Add `Attachment.isVoiceMessage` 7 years ago
Daniel Gasienica fa4c3fda2b Extract common MIME types 7 years ago
Daniel Gasienica 8a4f062120 Add `MIME.APPLICATION_OCTET_STREAM` 7 years ago
Daniel Gasienica 5d230d3778 Add `Settings.isNotificationGroupingSupported`
See: https://github.com/electron/electron/issues/11189
7 years ago
Daniel Gasienica ecf23b6b2e Disable audio notifications on Windows 7 and lower 7 years ago
Daniel Gasienica a102016ed8 Port `Settings` and `OS` to TypeScript 7 years ago
Daniel Gasienica c591c3ca55 Use native notifications on all platforms 7 years ago
Daniel Gasienica 4e6a03a91c Log whether OS supports native notifications 7 years ago
Daniel Gasienica d5b391757d Add `Notifications.getStatus` 7 years ago
Scott Nonnenberg 322d307655 Turn on prettier support for markdown files, update all files 7 years ago
Daniel Gasienica 87d374ea78 Remove `@prettier` pragmas 7 years ago
Daniel Gasienica 1dd87ad197 Format all source code using Prettier 7 years ago
Scott Nonnenberg 82e2fe93a5
Show 'You' in Android theme quotes instead of contact name (#2312)
Show 'You' in Android theme quotes instead of contact name
7 years ago
Scott Nonnenberg c5935eef5d Show 'You' in Android theme quotes instead of contact name 7 years ago
Daniel Gasienica fccbf70d57 Pre-process media for `LightboxGallery` 7 years ago
Daniel Gasienica 110b58230b Only revoke object URLs we created 7 years ago
Daniel Gasienica c6599d2e14 Add another permutation of `EmptyState` 7 years ago
Daniel Gasienica 9ca6fd6498 Center lightbox navigation controls 7 years ago
Daniel Gasienica fa45656e8e Wire up media gallery empty state 7 years ago
Daniel Gasienica 4d01264c09 Fix layout of media gallery 7 years ago
Daniel Gasienica 78f15b654d Add `EmptyState` component 7 years ago
Daniel Gasienica ea49f7a3b6 Implement keyboard navigation for `Lightbox` 7 years ago
Daniel Gasienica e1b620602d Display attachments from disk 7 years ago
Daniel Gasienica 407c77395b Add explicit boolean 7 years ago
Daniel Gasienica 9451dc5e41 Define `AttachmentSchemaVersion3` 7 years ago
Daniel Gasienica 21db2e7182 Use `saveURLAsFile` 7 years ago
Daniel Gasienica 307ab0d3a5 Extract `saveURLAsFile` 7 years ago
Daniel Gasienica 4c0c55082f Move navigation controls to the bottom 7 years ago
Daniel Gasienica fb8d4e2421 Implement basic lightbox with gallery support 7 years ago
Daniel Gasienica 43e19f3b06 Prevent default event on icon button clicks 7 years ago
Daniel Gasienica b3d0438537 Show hand cursor on media grid items 7 years ago
Daniel Gasienica 45d6c7a5a8 Implement video support in lightbox 7 years ago
Daniel Gasienica ac04f0648a Load more documents than media 7 years ago
Daniel Gasienica 6ee56b8445 Remove newlines 7 years ago
Daniel Gasienica b74b761255 Implement click to save for document list 7 years ago
Daniel Gasienica 8ca5a391af arrayBufferToObjectURL: Ensure `data` is `ArrayBuffer` 7 years ago
Daniel Gasienica b27fdd1559 Use `pointer` cursor for `DocumentListItem` 7 years ago
Daniel Gasienica 4a5e61eaf4 Implement `Attachment.save` 7 years ago
Daniel Gasienica f8119be97b Include videos in media gallery 7 years ago
Daniel Gasienica 37d73accde Show ‘Documents’ tab 7 years ago
Daniel Gasienica 96c44094e3 Implement `Conversation.fetchFileAttachments` 7 years ago
Scott Nonnenberg ccf14710a3 styleguide: Make filesize and Signal.Util.GoogleChrome available 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 b65370c8d7 Prefer `GoogleChrome.is*` over `MIME.is*` 7 years ago
Daniel Gasienica 64c3d604aa Fix type errors 7 years ago
Daniel Gasienica cd6912f0dd 🎨 Autoformat code 7 years ago
Daniel Gasienica 823a58f98a Prevent NPE 7 years ago
Daniel Gasienica 96be0df8c7 Show lightbox controls based on presence of handlers 7 years ago
Daniel Gasienica 59650035ec Use 🇺🇸 spelling 7 years ago
Daniel Gasienica feff820cd4 Prefer custom styles over `strong` 7 years ago
Daniel Gasienica fca8de16c8 Add required `Message.id: string` 7 years ago
Daniel Gasienica dd7e51e697 🎨 Fix formatting 7 years ago
Daniel Gasienica 74582de2d1 Clarify naming 7 years ago
Daniel Gasienica 6330a8d9f3 Simplify expression 7 years ago
Daniel Gasienica f99e6306c3 Simplify `withSection` 7 years ago
Daniel Gasienica d98d08a7e0 Remove obsolete TODO 7 years ago
Daniel Gasienica e97b078088 Use `componentWillUnmount` 7 years ago
Daniel Gasienica 9abf1f0fcd Use `dash-case` for CSS class names 7 years ago
Daniel Gasienica 2e121310e4 🎨 Fix lint error 7 years ago
Daniel Gasienica 4d04638358 Document changes for MVP 7 years ago
Daniel Gasienica c3e04ecf87 Remove use of `LoadingIndicator` 7 years ago
Daniel Gasienica 6d5d0df1c0 🎨 Fix TSLint errors 7 years ago
Daniel Gasienica 8b9516de72 Update test for attachment metadata 7 years ago
Daniel Gasienica f240269d7b MVP: Only show images in media gallery 7 years ago
Daniel Gasienica b4e3749c88 MVP: Only show media tab
Until we support showing documents.
7 years ago
Daniel Gasienica 60ed82b728 Show all lightbox controls in style guide 7 years ago
Daniel Gasienica a7ed21a811 Add `shouldShowSaveAsButton` option 7 years ago
Daniel Gasienica 0d676a65b8 Open media gallery item in lightbox 7 years ago
Daniel Gasienica a9f7f18721 Add `ItemClickEvent` 7 years ago
Daniel Gasienica d634a414c3 Make visibility of previous/next buttons opt-in 7 years ago
Daniel Gasienica 142236640e Click lightbox to close 7 years ago
Daniel Gasienica ce825fbd66 Rename `save` to `onSave` 7 years ago
Daniel Gasienica 1b9e581e90 Show lightbox image as large as possible 7 years ago
Daniel Gasienica 2cb0b0aeb1 Add arrow controls 7 years ago
Daniel Gasienica 246e0ca87b Add note about inline styles 7 years ago
Daniel Gasienica d797ede791 Close lightbox on escape key press 7 years ago
Daniel Gasienica 86da80fd23 Wire up attachment saving 7 years ago
Daniel Gasienica 593976fe21 Extract Backbone Lightbox view module 7 years ago
Daniel Gasienica 2474b42198 Port lightbox icon buttons 7 years ago
Daniel Gasienica 4a5a2cb5c1 Replace Backbone with React lightbox 7 years ago
Daniel Gasienica cb94d09ef9 Rename media gallery items 7 years ago
Daniel Gasienica 5d0469adef Skip loading videos into memory for performance 7 years ago
Daniel Gasienica c6904476f4 Improve `IndexableBoolean` type 7 years ago
Daniel Gasienica 809e34b0f4 Load 50 attachments for media gallery 7 years ago
Daniel Gasienica 0a4be2e0f4 Remove unused `i18n` 7 years ago
Daniel Gasienica 4ce0472b9f Extract `Message.loadWithObjectURL` 7 years ago
Daniel Gasienica 45d89d1e44 Create `UserMessage` type
Describes user visible messages that can have attachments.
7 years ago
Daniel Gasienica 27c4bf90e3 Add `Signal.Backbone` 7 years ago
Daniel Gasienica 825980fbd1 Add `Collection.fetchVisualMediaAttachments` 7 years ago
Daniel Gasienica cad5e417f3 Add `arrayBufferToObjectURL` module 7 years ago
Daniel Gasienica e5d90775d0 Add `MapAsync` type definition 7 years ago
Daniel Gasienica 648a7ab1bb Autoformat using Prettier 7 years ago
Daniel Gasienica e07458d886 Add basic Backbone type definitions 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 c46e1a1519 Move top-level functions to `Signal.Util` 7 years ago
Daniel Gasienica a609c31a57 Style attachment section headers 7 years ago
Daniel Gasienica ae4c74dd5b Skip metadata initialization for `verified-change` messages 7 years ago
Daniel Gasienica b0fefdbb98 Implementing grouping messages by date 7 years ago
Daniel Gasienica 424965f876 🎨 Autoformat code 7 years ago
Daniel Gasienica f367a9b059 Move `private` method below `public` ones 7 years ago
Daniel Gasienica 3d70e46aea Calculate dates in UTC 7 years ago
Daniel Gasienica d7b21ef5dc Render attachments grouped by date 7 years ago
Daniel Gasienica e34347f290 Add `groupMessagesByDate` 7 years ago
Daniel Gasienica 9053b6acfc Remove unused style 7 years ago
Daniel Gasienica 66516fd36a Use short format for dates 7 years ago
Daniel Gasienica 923d5ff088 Add `missingCaseError` function 7 years ago
Daniel Gasienica fc1c3aabf5 Add scaffolding for media gallery 7 years ago
Daniel Gasienica a8be4f2d8d Expose Lodash in style guide 7 years ago
Daniel Gasienica 94ef3bab80 Move test file 7 years ago
Daniel Gasienica 32a3ef518b Render media gallery placeholder panel 7 years ago
Daniel Gasienica f9e4613395 Move TS test for message migration 7 years ago
Daniel Gasienica 867bece952 Add `Message.initializeAttachmentMetadata` 7 years ago
Daniel Gasienica c5352cf26c Separate required from optional `Message` keys 7 years ago
Daniel Gasienica fc12353bb8 Add `Attachment.isVisualMedia` 7 years ago
Daniel Gasienica 47cc701e72 Add `GoogleChrome` module
Helps us determine which media we can natively display / play back in Electron.
7 years ago
Daniel Gasienica 6ff82adf0a Add `MIME.isImage` and `MIME.isVideo` 7 years ago
Daniel Gasienica df2e6e7864 Port `MIME` module to TypeScript 7 years ago
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/
7 years ago
Scott Nonnenberg fdc13d0af3
Fix some tslint errors
I really need to get it running in my editor!
7 years ago
Scott Nonnenberg bd88407b78
iOS theme: Permanant background to attachment part of bubble
(this is to handle a quote making bubble wider, but a narrow image)
7 years ago
Scott Nonnenberg 21713cbce7
Update quotes to render emoji just like normal messages 7 years ago
Scott Nonnenberg 37cac717cb
Use fit: cover for non-square thumbnails, better movie icon
Also: Match Android's X button in the quote composition area
7 years ago
Scott Nonnenberg 12257e1560
MessageView: Show menu w/ 'reply to message' on triple-dot click 7 years ago
Scott Nonnenberg f4d9ab8ba0
Put quote preview in text box for Android, above it in iOS 7 years ago