Commit graph

4565 commits

Author SHA1 Message Date
Scott Nonnenberg
a7d78c0e9b Sealed Sender support
https://signal.org/blog/sealed-sender/
2018-10-29 14:49:18 -07:00
Scott Nonnenberg
6656469f5f Update lint exceptions 2018-10-26 15:14:43 -07:00
Scott Nonnenberg
7789beec64 Calculate warning properly for all methods of attachment download 2018-10-23 14:11:30 -07:00
Scott Nonnenberg
2b5f6d8b5e Ensure that blue group avatars are preserved in dark theme 2018-10-18 15:41:05 -07:00
Scott Nonnenberg
fbaef50c4a Android theme: Incoming quotes take color from containing message 2018-10-18 11:57:10 -07:00
Scott Nonnenberg
f21f83a163 Conversations have blue avatar backgrounds if no image provided 2018-10-18 11:39:23 -07:00
Scott Nonnenberg
4514152320 Fix lint errors 2018-10-18 10:15:34 -07:00
Scott Nonnenberg
10bd12d622 Lint fixes 2018-10-15 16:59:38 -07:00
Scott Nonnenberg
bc0ec92ad2 Tests and increase consistency for isFileDangerous calls 2018-10-15 11:57:00 -07:00
Scott Nonnenberg
0850dc368a Lint fixes 2018-10-11 12:24:58 -07:00
Scott Nonnenberg
7d9711ba65 Restore iOS-specific theme; colors on left in android theme 2018-10-11 11:42:18 -07:00
Scott Nonnenberg
ca61c9cb85 Warnings for dangerous files 2018-10-09 13:48:32 -07:00
Scott Nonnenberg
37822d2ef4 Update lint exceptions 2018-10-02 14:38:02 -07:00
Scott Nonnenberg
a8e12d0771 Add user's avatar to the top left of the screen 2018-10-01 18:18:37 -07:00
Scott Nonnenberg
8f3e3b7aaf Update to new design for avatars: individual/group icons/colors
And two initials.
2018-10-01 18:18:37 -07:00
Scott Nonnenberg
cf16ced91c Unread badge is now attached to avatar in left pane 2018-10-01 18:18:37 -07:00
Scott Nonnenberg
10c53bddb0 Move to new colors, switch incoming/outgoing colors 2018-10-01 18:18:37 -07:00
Scott Nonnenberg
cd60bdd08a Move conversations to SQLCipher 2018-10-01 18:18:37 -07:00
Scott Nonnenberg
c13b91a790 Update linter exceptions after update 2018-09-20 15:49:54 -07:00
Scott Nonnenberg
ecb126e74c
Custom linter to check code quality (#2753) 2018-09-20 15:24:52 -07:00
Scott Nonnenberg
9c399624cc Support for blocking groups on mobile, via group/blocked syncs 2018-09-14 16:25:43 -07:00
Scott Nonnenberg
8290146721 Show generic attachment for non-loading/too-large images/videos 2018-09-05 17:48:43 -07:00
Scott Nonnenberg
006700f9a2 Properly style countdown icon in iOS light/dark themes 2018-08-16 16:55:55 -07:00
Scott Nonnenberg
37f3054976 Both UI timer and database timer will remove expired message 2018-08-15 17:45:24 -07:00
Scott Nonnenberg
b3d56276a8 Conversations now better take advantage of wide screens 2018-08-15 17:00:32 -07:00
Scott Nonnenberg
fedfbed304 Copy quoted message contents into quote on receipt
Also:
  - visually distinguish any reference we couldn't verify on receipt
  - show toast on quote click if we can't scroll to message
  - toast visuals redesigned to match rest of app
2018-08-15 14:58:55 -07:00
Scott Nonnenberg
a247ffe5cf When iOS device has been linked, use iOS color scheme 2018-08-15 11:22:45 -07:00
Scott Nonnenberg
727925a266 Clean up old messages, better handle errors from sending 2018-08-07 18:29:33 -07:00
Scott Nonnenberg
b0b1e9b8e3 Message: video/image attachment borders inline, on top of image
Otherwise, its transparency will result in a distracting line between it
and its attached message bubble
2018-08-02 17:19:56 -07:00
Scott Nonnenberg
3b7ee3e2ce A couple copy changes: Show -> View, New Number -> Safety Number 2018-08-01 11:59:49 -07:00
Scott Nonnenberg
19ff050b3a Show 'Off' text when disappearing messages are turned off 2018-08-01 09:24:05 -07:00
Scott Nonnenberg
3105b77475 Migrate to SQLCipher for messages/cache
Quite a few other fixes, including:
  - Sending to contact with no avatar yet (not synced from mobile)
  - Left pane doesn't update quickly or at all on new message
  - Left pane doesn't show sent or error status

Also:
 - Contributing.md: Ensure set of linux dev dependencies is complete
2018-07-31 17:08:45 -07:00
Scott Nonnenberg
8b92e6112c Add dir='auto' to Message and Quote body for RTL languages 2018-07-27 10:55:10 -07:00
Scott Nonnenberg
f38647dfa5 ContactListItem: Add spacing above and below (for 'show members') 2018-07-27 10:55:10 -07:00
Scott Nonnenberg
f39a96bc76 Move to centralized message/cache data layer
Also, ensure that conversation.messageCollection has nothing in it
unless it has an associated ConversationView.
2018-07-27 10:55:10 -07:00
Scott Nonnenberg
e80857562a Disappearing messages: show 'disabled' instead of 'set to off' 2018-07-27 09:15:57 -07:00
Scott Nonnenberg
7dd931fb7e ConversationHeader: centered title, ConvoListItem: unbold name 2018-07-27 09:15:57 -07:00
Scott Nonnenberg
3a07e9ae73 Ensure that color mapping matches the spreadsheet 2018-07-23 18:34:20 -07:00
Scott Nonnenberg
5933a34a18 Use window.log in browser context, turn on console eslint rule 2018-07-21 14:52:43 -07:00
Scott Nonnenberg
643739f65d
Responding to feedback on the updated visuals (#2549)
* Conversation List Item: timestamp bold only when convo has unread

* Preserve the positioning of overlays on re-entry into convo

* ConversationListItem: Handle missing and broken thumbnails

* Shorten timestamp in left pane for better Android consistency

* Update convo last updated if last was expire timer change

But not if it was from a sync instead of from you or from a contact.

* Make links in quotes the same color as the text

* MediaGridItem: Update placeholder icon colors for dark theme

* Ensure turning off timer shows 'Timer set to off' in left pane

* ConversationListItem: Show unread count in blue circle

* Add one pixel margin to blue indicator for text alignment

* Ensure replies to voice message can bet sent successfully
2018-07-20 16:37:57 -07:00
Scott Nonnenberg
2384988b0a ConversationHeader: Ensure that profile has tilde before it 2018-07-18 19:41:16 -07:00
Scott Nonnenberg
fa18e2ba77 LightBox: tslint exception for play() call which returns promise 2018-07-18 19:40:07 -07:00
Scott Nonnenberg
4fa6a785f4 Remove unused code 2018-07-18 19:40:07 -07:00
Scott Nonnenberg
e90355dab5 Lightbox: Play video on open, play/pause on click of video itself 2018-07-18 19:40:07 -07:00
Scott Nonnenberg
66bd6c826d Fix MediaGallery handling of videos - show thumbnail and overlay 2018-07-18 19:40:07 -07:00
Scott Nonnenberg
0b9b738c88 Remove empty file: colorSVG.ts 2018-07-18 09:41:26 -07:00
Scott Nonnenberg
95976b10e7 Timestamp: Eliminate 'Invalid date' from potential output 2018-07-18 08:14:34 -07:00
Scott Nonnenberg
675e34fc8d New React component: ConversationListItem, installed in left pane
When collecting a conversation's last message, we grab that message's
status as well (if outgoing) and show it.
2018-07-17 20:25:55 -07:00
Scott Nonnenberg
7e2d7b5e60 Media Gallery: Support for dark theme 2018-07-17 17:15:34 -07:00
Scott Nonnenberg
3c69886320 Finish new Message component, integrate into application
Also:
- New schema version 8 with video/image thumbnails, screenshots, sizes
- Upgrade messages not at current schema version when loading messages
  to show in conversation
- New MessageDetail react component
- New ConversationHeader react component
2018-07-17 15:58:07 -07:00
Scott Nonnenberg
43a44793c5 Remove jshint - move everything over to eslint
Also removed all hints of previous linters
2018-07-17 15:54:32 -07:00
Scott Nonnenberg
dc11db92f9 New React component: Message
Also: Use react to render contects on the 'show group members' screen
2018-07-17 15:53:33 -07:00
Scott Nonnenberg
fc5c52fbdf Remove iOS theme in favor of plain light/dark themes 2018-07-17 15:45:40 -07:00
Scott Nonnenberg
445839770b
Fix width of message detail screen (#2478) 2018-06-21 12:02:50 -07:00
Scott Nonnenberg
951ae6d52c Disable inline rendering of SVG attachments
Like TIFF, they are now treated as binary files.
2018-06-15 17:49:35 -07:00
Scott Nonnenberg
925e02e397 Fix lint error in OS.ts 2018-05-23 16:26:48 -07:00
Scott Nonnenberg
34f423b52c Remove unused code; move signal.js to js/modules for eslint
(noticed as I was doing this that signal.js doesn't get eslint coverage)
2018-05-23 16:26:48 -07:00
Scott Nonnenberg
9dedda84e2 Add style guide examples for ContactName and ConversationTitle 2018-05-23 16:26:47 -07:00
Scott Nonnenberg
2988da0981 Turn on all of Microsoft's recommend lint rules
Biggest changes forced by this: alt tags for all images, resulting in
new strings added to messages.json, and a new i18n paramter/prop added
in a plot of places.

Another change of note is that there are two new tslint.json files under
ts/test and ts/styleguide to relax our rules a bit there. This required
a change to our package.json script, as manually specifying the config
file there made it ignore our tslint.json files in subdirectories
2018-05-23 16:26:47 -07:00
Scott Nonnenberg
23586be6b0 Add emojification to contact names shown in quotes 2018-05-23 16:26:47 -07:00
Scott Nonnenberg
548c8e69cf Emojification now all done with react via a few new components
Three locations were changed:
  1. a group update, which lists a set of contacts
  2. the contact name in the left pane
  3. the conversation title

Three new components were added to window.Signal.Components to support
these scenarios, respectively:
  1. Emojify
  2. ContactName
  3. ConversationTitle

Note that there are a number of other places in the app that should be
emojified, but never have been before. Essentially any place that a
contact name might be shown. A non-exhaustive list:
  - Show group members
  - Show safety number
  - Verified change notification
  - Disappearing timer change notification
  - Contact verification notification
  - Quote contact name
2018-05-23 16:26:47 -07:00
Scott Nonnenberg
d9e5338dff Refactor link/emoji/newline components for composability 2018-05-23 16:26:47 -07:00
Scott Nonnenberg
a5416e42c4 Refactor all emoji utility methods into window.Signal.Emoji 2018-05-23 16:26:47 -07:00
Scott Nonnenberg
a328a70ba2
Update React-based emoji handling to fix skin tone modifiers (#2399) 2018-05-23 12:17:25 -07:00
jython234
84759d813e Modify OS.isWindows to check platform before version (#2407)
* Modify OS.isWindows to check if OS is Windows first before checking version.

Previously OS.isWindows checked if the windows version matched the one required. This worked fine, except for the fact that it would end up comparing a linux kernel version to a windows version as it didn't check if the platform was Windows in the first place before.

This caused issues as it would throw an error when comparing with non-semver linux kernels (such as Fedora). Now it checks if the current platform is Windows first, and if not, immediately returns false.

Resolves: #2396

* Fix formatting for OS.ts
2018-05-20 14:02:29 -07:00
Scott Nonnenberg
4e5c8965ff Move to react for newlines, emoji, and links in message body 2018-05-14 16:09:37 -07:00
Scott Nonnenberg
8f934251ae Fix a few types: relax contact, Email->Phone 2018-05-10 11:54:58 -07:00
Scott Nonnenberg
80b069e9b6 Move phone number format/parse into ts/types/PhoneNumber 2018-05-10 11:54:58 -07:00
Scott Nonnenberg
aa13a2c6f7 Parse phone numbers into e164 as part of schema upgrade 2018-05-10 11:54:58 -07:00
Scott Nonnenberg
8cb1f1f532 Fall back on givenName/familyName if no displayName/organization 2018-05-10 11:54:58 -07:00
Scott Nonnenberg
eafa038ba4 Use backup labels if custom contact type labels are missing 2018-05-10 11:54:58 -07:00
Daniel Gasienica
3bf8a8966a Notification improvements
- Remove on read, on focus, and on exit.
- Show multi-message notifications like '5 new messages'.
2018-05-10 14:45:56 -04:00
Daniel Gasienica
d349dd903d Add AttachmentSection to style guide 2018-05-08 16:52:01 -04:00
Daniel Gasienica
121bb0ecef Style guide: Fix empty state 2018-05-08 16:52:01 -04:00
Daniel Gasienica
f19e6ea93d Wrap JSX siblings in container 2018-05-08 16:52:01 -04:00
Daniel Gasienica
a8cd0b782e Rename DocumentListItem::isLast to shouldShowSeparator 2018-05-08 16:52:01 -04:00
Daniel Gasienica
05f67dc04a Hide separator for last document list entry 2018-05-08 16:41:07 -04:00
Daniel Gasienica
fd883b2896 Fix LightboxGallery style guide entry 2018-05-08 16:41:07 -04:00
Daniel Gasienica
bfe7eb7d5e Consolidate styles 2018-05-08 16:41:07 -04:00
Daniel Gasienica
90329a2764 Display icon for unsupported file formats
Still allows users to download media.
2018-05-08 16:41:07 -04:00
Daniel Gasienica
623bdd9284 Port colorSVG from Sass to TypeScript (React) 2018-05-08 16:41:07 -04:00
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.
2018-05-08 16:41:07 -04:00
Daniel Gasienica
f4a5bc9907 Add new MIME types 2018-05-08 16:41:06 -04:00
Daniel Gasienica
63bd9dcc61 Add tests for Attachment.isVisualMedia 2018-05-08 16:41:06 -04:00
Daniel Gasienica
53918d68de Add Attachment.isFile definition 2018-05-08 16:41:06 -04:00
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.
2018-05-08 16:41:06 -04:00
Scott Nonnenberg
0282635142 Remove Object.assign still hanging around in typescript 2018-05-08 09:57:51 -07:00
Scott Nonnenberg
1918a88722 Drop ifTruthy suffix 2018-05-08 09:54:28 -07:00
Scott Nonnenberg
1fd487be3f Refactor to remove duplicated code, lint/prettier fixes 2018-05-07 19:30:50 -07:00
Scott Nonnenberg
f628df1035 Eliminate arrows in the standalone Lightbox component examples 2018-05-07 19:30:50 -07:00
Scott Nonnenberg
8beeef4d10 Show contact name when you reply to message with a contact 2018-05-07 19:30:50 -07:00
Scott Nonnenberg
9d1847a7e5 Pull all setup in preload.js into signal.js. goal: webpackable 2018-05-07 19:30:49 -07:00
Scott Nonnenberg
30cb673405 Fix style guide for LightboxGallery component 2018-05-07 19:11:37 -07:00
Scott Nonnenberg
37821e5a1b Wire up all contact behaviors, refactor Contact type/selector 2018-05-07 19:11:35 -07:00
Scott Nonnenberg
41be7f126b Visuals for embedded contacts as well as contact detail screen 2018-05-07 19:09:55 -07:00
Daniel Gasienica
daa4a3d63f Compile all protocol buffers 2018-05-07 21:53:40 -04:00
Daniel Gasienica
15759f0db5 Normalize package naming 2018-05-07 21:53:40 -04:00
Daniel Gasienica
f88ebdf8b7 Compile protocol buffers as part of yarn grunt dev 2018-05-07 21:53:40 -04:00
Daniel Gasienica
38f3ad6518 Use SignalService vs textsecure for protobuf 2018-05-07 21:53:39 -04:00
Daniel Gasienica
6589247750 Expose SignalService to style guide 2018-05-07 21:53:39 -04:00
Daniel Gasienica
86346ee239 Expose Signal.Types.Attachment to style guide 2018-05-07 21:53:39 -04:00
Daniel Gasienica
5789b3eb75 Add Attachment.isVoiceMessage 2018-05-07 21:53:39 -04:00
Daniel Gasienica
fa4c3fda2b Extract common MIME types 2018-05-07 21:53:39 -04:00
Daniel Gasienica
8a4f062120 Add MIME.APPLICATION_OCTET_STREAM 2018-05-07 21:53:39 -04:00
Daniel Gasienica
5d230d3778 Add Settings.isNotificationGroupingSupported
See: https://github.com/electron/electron/issues/11189
2018-05-04 15:37:46 -04:00
Daniel Gasienica
ecf23b6b2e Disable audio notifications on Windows 7 and lower 2018-05-02 20:01:57 -04:00
Daniel Gasienica
a102016ed8 Port Settings and OS to TypeScript 2018-05-02 20:01:57 -04:00
Daniel Gasienica
c591c3ca55 Use native notifications on all platforms 2018-05-02 19:58:33 -04:00
Daniel Gasienica
4e6a03a91c Log whether OS supports native notifications 2018-05-02 19:18:34 -04:00
Daniel Gasienica
d5b391757d Add Notifications.getStatus 2018-05-02 19:18:33 -04:00
Scott Nonnenberg
322d307655 Turn on prettier support for markdown files, update all files 2018-05-01 16:06:57 -07:00
Daniel Gasienica
87d374ea78 Remove @prettier pragmas 2018-04-30 16:53:34 -04:00
Daniel Gasienica
1dd87ad197 Format all source code using Prettier 2018-04-30 16:53:34 -04:00
Scott Nonnenberg
82e2fe93a5
Show 'You' in Android theme quotes instead of contact name (#2312)
Show 'You' in Android theme quotes instead of contact name
2018-04-30 13:49:19 -07:00
Scott Nonnenberg
c5935eef5d Show 'You' in Android theme quotes instead of contact name 2018-04-30 12:33:16 -07:00
Daniel Gasienica
fccbf70d57 Pre-process media for LightboxGallery 2018-04-30 11:59:26 -04:00
Daniel Gasienica
110b58230b Only revoke object URLs we created 2018-04-30 11:01:57 -04:00
Daniel Gasienica
c6599d2e14 Add another permutation of EmptyState 2018-04-30 11:01:00 -04:00
Daniel Gasienica
9ca6fd6498 Center lightbox navigation controls 2018-04-27 16:31:43 -04:00
Daniel Gasienica
fa45656e8e Wire up media gallery empty state 2018-04-27 16:31:43 -04:00
Daniel Gasienica
4d01264c09 Fix layout of media gallery 2018-04-27 16:31:43 -04:00
Daniel Gasienica
78f15b654d Add EmptyState component 2018-04-27 16:31:43 -04:00
Daniel Gasienica
ea49f7a3b6 Implement keyboard navigation for Lightbox 2018-04-27 16:31:43 -04:00
Daniel Gasienica
e1b620602d Display attachments from disk 2018-04-27 16:31:43 -04:00
Daniel Gasienica
407c77395b Add explicit boolean 2018-04-27 16:31:43 -04:00
Daniel Gasienica
9451dc5e41 Define AttachmentSchemaVersion3 2018-04-27 16:31:43 -04:00
Daniel Gasienica
21db2e7182 Use saveURLAsFile 2018-04-27 16:31:43 -04:00
Daniel Gasienica
307ab0d3a5 Extract saveURLAsFile 2018-04-27 16:31:43 -04:00
Daniel Gasienica
4c0c55082f Move navigation controls to the bottom 2018-04-27 16:31:43 -04:00
Daniel Gasienica
fb8d4e2421 Implement basic lightbox with gallery support 2018-04-27 16:31:42 -04:00
Daniel Gasienica
43e19f3b06 Prevent default event on icon button clicks 2018-04-27 16:31:42 -04:00
Daniel Gasienica
b3d0438537 Show hand cursor on media grid items 2018-04-27 16:31:42 -04:00
Daniel Gasienica
45d6c7a5a8 Implement video support in lightbox 2018-04-27 16:31:42 -04:00
Daniel Gasienica
ac04f0648a Load more documents than media 2018-04-27 16:31:42 -04:00
Daniel Gasienica
6ee56b8445 Remove newlines 2018-04-27 16:31:42 -04:00
Daniel Gasienica
b74b761255 Implement click to save for document list 2018-04-27 16:31:42 -04:00
Daniel Gasienica
8ca5a391af arrayBufferToObjectURL: Ensure data is ArrayBuffer 2018-04-27 16:31:42 -04:00
Daniel Gasienica
b27fdd1559 Use pointer cursor for DocumentListItem 2018-04-27 16:31:42 -04:00
Daniel Gasienica
4a5e61eaf4 Implement Attachment.save 2018-04-27 16:31:42 -04:00
Daniel Gasienica
f8119be97b Include videos in media gallery 2018-04-27 16:31:42 -04:00
Daniel Gasienica
37d73accde Show ‘Documents’ tab 2018-04-27 16:31:42 -04:00
Daniel Gasienica
96c44094e3 Implement Conversation.fetchFileAttachments 2018-04-27 16:31:42 -04:00
Scott Nonnenberg
ccf14710a3 styleguide: Make filesize and Signal.Util.GoogleChrome available 2018-04-27 08:51:46 -07:00
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.
2018-04-25 15:25:12 -04:00
Daniel Gasienica
b65370c8d7 Prefer GoogleChrome.is* over MIME.is* 2018-04-25 15:25:12 -04:00
Daniel Gasienica
64c3d604aa Fix type errors 2018-04-25 15:24:52 -04:00
Daniel Gasienica
cd6912f0dd 🎨 Autoformat code 2018-04-25 15:24:52 -04:00
Daniel Gasienica
823a58f98a Prevent NPE 2018-04-25 15:24:52 -04:00
Daniel Gasienica
96be0df8c7 Show lightbox controls based on presence of handlers 2018-04-25 15:24:52 -04:00
Daniel Gasienica
59650035ec Use 🇺🇸 spelling 2018-04-25 15:24:52 -04:00
Daniel Gasienica
feff820cd4 Prefer custom styles over strong 2018-04-25 15:24:52 -04:00
Daniel Gasienica
fca8de16c8 Add required Message.id: string 2018-04-25 15:24:52 -04:00
Daniel Gasienica
dd7e51e697 🎨 Fix formatting 2018-04-25 15:24:52 -04:00
Daniel Gasienica
74582de2d1 Clarify naming 2018-04-25 15:24:52 -04:00
Daniel Gasienica
6330a8d9f3 Simplify expression 2018-04-25 15:24:52 -04:00
Daniel Gasienica
f99e6306c3 Simplify withSection 2018-04-25 15:24:52 -04:00
Daniel Gasienica
d98d08a7e0 Remove obsolete TODO 2018-04-25 15:24:52 -04:00
Daniel Gasienica
e97b078088 Use componentWillUnmount 2018-04-25 15:24:52 -04:00
Daniel Gasienica
9abf1f0fcd Use dash-case for CSS class names 2018-04-25 15:24:52 -04:00
Daniel Gasienica
2e121310e4 🎨 Fix lint error 2018-04-25 15:24:52 -04:00
Daniel Gasienica
4d04638358 Document changes for MVP 2018-04-25 15:24:52 -04:00
Daniel Gasienica
c3e04ecf87 Remove use of LoadingIndicator 2018-04-25 15:24:52 -04:00
Daniel Gasienica
6d5d0df1c0 🎨 Fix TSLint errors 2018-04-25 15:24:52 -04:00
Daniel Gasienica
8b9516de72 Update test for attachment metadata 2018-04-25 15:24:52 -04:00
Daniel Gasienica
f240269d7b MVP: Only show images in media gallery 2018-04-25 15:24:51 -04:00
Daniel Gasienica
b4e3749c88 MVP: Only show media tab
Until we support showing documents.
2018-04-25 15:24:51 -04:00
Daniel Gasienica
60ed82b728 Show all lightbox controls in style guide 2018-04-25 15:24:51 -04:00
Daniel Gasienica
a7ed21a811 Add shouldShowSaveAsButton option 2018-04-25 15:24:51 -04:00
Daniel Gasienica
0d676a65b8 Open media gallery item in lightbox 2018-04-25 15:24:51 -04:00
Daniel Gasienica
a9f7f18721 Add ItemClickEvent 2018-04-25 15:24:51 -04:00
Daniel Gasienica
d634a414c3 Make visibility of previous/next buttons opt-in 2018-04-25 15:24:51 -04:00
Daniel Gasienica
142236640e Click lightbox to close 2018-04-25 15:24:51 -04:00
Daniel Gasienica
ce825fbd66 Rename save to onSave 2018-04-25 15:24:51 -04:00
Daniel Gasienica
1b9e581e90 Show lightbox image as large as possible 2018-04-25 15:24:51 -04:00
Daniel Gasienica
2cb0b0aeb1 Add arrow controls 2018-04-25 15:24:51 -04:00
Daniel Gasienica
246e0ca87b Add note about inline styles 2018-04-25 15:24:51 -04:00
Daniel Gasienica
d797ede791 Close lightbox on escape key press 2018-04-25 15:24:51 -04:00
Daniel Gasienica
86da80fd23 Wire up attachment saving 2018-04-25 15:24:51 -04:00
Daniel Gasienica
593976fe21 Extract Backbone Lightbox view module 2018-04-25 15:24:51 -04:00
Daniel Gasienica
2474b42198 Port lightbox icon buttons 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
cb94d09ef9 Rename media gallery items 2018-04-25 15:24:51 -04:00
Daniel Gasienica
5d0469adef Skip loading videos into memory for performance 2018-04-25 15:24:51 -04:00
Daniel Gasienica
c6904476f4 Improve IndexableBoolean type 2018-04-25 15:24:51 -04:00
Daniel Gasienica
809e34b0f4 Load 50 attachments for media gallery 2018-04-25 15:24:51 -04:00
Daniel Gasienica
0a4be2e0f4 Remove unused i18n 2018-04-25 15:24:51 -04:00
Daniel Gasienica
4ce0472b9f Extract Message.loadWithObjectURL 2018-04-25 15:24:51 -04:00
Daniel Gasienica
45d89d1e44 Create UserMessage type
Describes user visible messages that can have attachments.
2018-04-25 15:24:51 -04:00
Daniel Gasienica
27c4bf90e3 Add Signal.Backbone 2018-04-25 15:24:51 -04:00
Daniel Gasienica
825980fbd1 Add Collection.fetchVisualMediaAttachments 2018-04-25 15:24:51 -04:00
Daniel Gasienica
cad5e417f3 Add arrayBufferToObjectURL module 2018-04-25 15:24:51 -04:00
Daniel Gasienica
e5d90775d0 Add MapAsync type definition 2018-04-25 15:24:51 -04:00
Daniel Gasienica
648a7ab1bb Autoformat using Prettier 2018-04-25 15:24:51 -04:00
Daniel Gasienica
e07458d886 Add basic Backbone type definitions 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
c46e1a1519 Move top-level functions to Signal.Util 2018-04-25 15:24:51 -04:00
Daniel Gasienica
a609c31a57 Style attachment section headers 2018-04-25 15:24:51 -04:00
Daniel Gasienica
ae4c74dd5b Skip metadata initialization for verified-change messages 2018-04-25 15:24:51 -04:00
Daniel Gasienica
b0fefdbb98 Implementing grouping messages by date 2018-04-25 15:24:51 -04:00
Daniel Gasienica
424965f876 🎨 Autoformat code 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
3d70e46aea Calculate dates in UTC 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
e34347f290 Add groupMessagesByDate 2018-04-25 15:24:51 -04:00
Daniel Gasienica
9053b6acfc Remove unused style 2018-04-25 15:24:51 -04:00
Daniel Gasienica
66516fd36a Use short format for dates 2018-04-25 15:24:51 -04:00
Daniel Gasienica
923d5ff088 Add missingCaseError function 2018-04-25 15:24:51 -04:00
Daniel Gasienica
fc1c3aabf5 Add scaffolding for media gallery 2018-04-25 15:24:51 -04:00
Daniel Gasienica
a8be4f2d8d Expose Lodash in style guide 2018-04-25 15:24:51 -04:00
Daniel Gasienica
94ef3bab80 Move test file 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
f9e4613395 Move TS test for message migration 2018-04-25 15:24:50 -04:00
Daniel Gasienica
867bece952 Add Message.initializeAttachmentMetadata 2018-04-25 15:24:50 -04:00
Daniel Gasienica
c5352cf26c Separate required from optional Message keys 2018-04-25 15:24:50 -04:00
Daniel Gasienica
fc12353bb8 Add Attachment.isVisualMedia 2018-04-25 15:24:50 -04:00
Daniel Gasienica
47cc701e72 Add GoogleChrome module
Helps us determine which media we can natively display / play back in Electron.
2018-04-25 15:24:50 -04:00
Daniel Gasienica
6ff82adf0a Add MIME.isImage and MIME.isVideo 2018-04-25 15:24:50 -04:00
Daniel Gasienica
df2e6e7864 Port MIME module to TypeScript 2018-04-25 15:24:50 -04: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
fdc13d0af3
Fix some tslint errors
I really need to get it running in my editor!
2018-04-20 16:19:53 -07:00
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)
2018-04-20 16:02:33 -07:00
Scott Nonnenberg
21713cbce7
Update quotes to render emoji just like normal messages 2018-04-20 15:24:05 -07:00
Scott Nonnenberg
37cac717cb
Use fit: cover for non-square thumbnails, better movie icon
Also: Match Android's X button in the quote composition area
2018-04-20 15:23:55 -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
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
d29162f3b6
CSS Refactor: Pull quote CSS out from parent classes
This is to prepare for it to be shown in the message composition area.
2018-04-20 15:23:50 -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
a563dc8b37
Style Guide: Additional message examples, a few fixes to enable 2018-04-20 15:23:47 -07:00
Scott Nonnenberg
5af5bbdb0f
Add style guide examples for portrait/landscape images 2018-04-20 15:23:46 -07:00
Scott Nonnenberg
e3d15d80f6
Quote.md: Fix image example, add examples for attachment + reply 2018-04-16 13:02:51 -07:00
Scott Nonnenberg
7bd747a796
ConversationContext: conversationType => type
And a group conversation example to messages.md
2018-04-13 18:10:52 -07:00
Scott Nonnenberg
3bbbf65a6b
Fix iOS: tail, blue partial border, extra attachment space
Turns out that display: inline on the img tag resulted in a mysterious
3px of space added below it.
2018-04-13 18:10:52 -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
fce9bb7342
Move to central MIME functions, remove some console.log
And generally address PR feedback.
2018-04-13 18:10:51 -07:00
Scott Nonnenberg
d91f40177e
Quote.tsx: Fix tslint errors
I really need to get tslint editor integration in place.
2018-04-13 18:10:50 -07:00
Scott Nonnenberg
a0b1dea693
Introduce a bit of color to the message/attachment style guide 2018-04-13 18:10:50 -07:00
Scott Nonnenberg
b458c7d449
android-dark: Constrain light play icon to with peer image 2018-04-13 18:10:49 -07:00
Scott Nonnenberg
bdaebc24ae
A few tweaks for the android-dark theme 2018-04-13 18:10:49 -07:00
Scott Nonnenberg
087dd0f758
Support for iOS theme 2018-04-13 18:10:49 -07:00
Scott Nonnenberg
644bc9e6fb
Fix problem of squished quote icons and images 2018-04-13 18:10:49 -07:00
Scott Nonnenberg
2243e348f1
Wire up fake window.Signal.HTML because it's captured on load 2018-04-13 18:10:48 -07:00
Scott Nonnenberg
0f8dd7e2db
Fix a number of lint failures 2018-04-13 18:10:48 -07:00
Scott Nonnenberg
1cc0633786
Full support for quotations in Android theme 2018-04-13 18:10:48 -07:00
Scott Nonnenberg
21bf02c94d
Fixed examples in Quote.md, rough Android visuals 2018-04-13 18:05:44 -07:00
Scott Nonnenberg
6653123671
Move quote-related examples from Message.md to Quote.md 2018-04-13 18:05:44 -07:00
Scott Nonnenberg
b4ce79cac0
Reply -> Quote 2018-04-13 18:05:43 -07:00
Scott Nonnenberg
09c3fbc5e2
Style guide: All permutations of text reply to diff. quote types 2018-04-13 18:05:43 -07:00
Scott Nonnenberg
ae043bf239
In iOS theme, join attachment bubble with caption bubble 2018-04-13 18:05:42 -07:00
Scott Nonnenberg
3a76c3c86e
Styleguide: Incoming/outgoing attachments of all types 2018-04-13 18:05:42 -07:00
Daniel Gasienica
44debd123d Add basic implementation of Conversation.updateFromLastMessage 2018-04-11 19:34:21 -04:00
Daniel Gasienica
cca5db3237 Remove unused import 2018-04-11 19:25:38 -04:00
Daniel Gasienica
1659354f51 Expand Message type definitions 2018-04-11 19:25:38 -04:00
Daniel Gasienica
b50c55172d Add MIME type 2018-04-11 19:25:38 -04:00
Daniel Gasienica
65bf34d1b8 Add basic Attachment type definition 2018-04-11 19:25:38 -04:00
Daniel Gasienica
f25a579f32 Add basic Message type definition 2018-04-11 19:25:38 -04:00
Daniel Gasienica
bcd3e26377 Fix TS warning about appendChild 2018-04-11 19:25:30 -04:00
Daniel Gasienica
55fc21505e Rename ts/test to ts/styleguide 2018-04-11 16:36:42 -04:00
Daniel Gasienica
9d41b86162 Remove escaping from linkText
We leverage jQuery’s HTML escaping in `$.html(…)`.
2018-04-11 16:36:42 -04:00
Daniel Gasienica
f04c65088b Fork link-text module 2018-04-11 16:36:42 -04:00
Daniel Gasienica
144cb58a47 Add HTML module for rendering messages 2018-04-11 16:36:42 -04:00
Daniel Gasienica
f38370f40e Add custom type definition for link-text 2018-04-11 16:36:42 -04:00
Scott Nonnenberg
96bd90a4e0
Simplify assignment; add warning to preload.js about Style Guide 2018-04-05 17:16:15 -07:00
Scott Nonnenberg
05303233fb
window.Signal.React -> window.Signal.Components 2018-04-05 16:10:59 -07:00
Scott Nonnenberg
23537546fe
Big refactor: ts/ directory for all typescript, including react
Split out test-specific and general utility react components too.

And moved our test/legacy* files for the Style Guide into a styleguide/
subdirectory of test/.

I think we'll be able to live in this directory structure for a while.
2018-04-05 15:30:40 -07:00