Commit Graph

2360 Commits (b4ff223d1818c81e453d85e4027f14da36139666)

Author SHA1 Message Date
Scott Nonnenberg b4ff223d18
Refactor: Push selector logic for quote props into Message model 7 years ago
Scott Nonnenberg d0b11c59f5
Eslintify conversation_view.js 7 years ago
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
7 years ago
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.
7 years ago
Scott Nonnenberg a563dc8b37
Style Guide: Additional message examples, a few fixes to enable 7 years ago
Scott Nonnenberg 000dc3a159
Handle attachment load failure for quoted message 7 years ago
Scott Nonnenberg f1ff040842
Finish type definition for _mapQuotedAttachments 7 years ago
Scott Nonnenberg 4e9abdf348
MessageView: Call the proper render method on change event 7 years ago
Scott Nonnenberg 04d186c05a
Conversation.loadQuoteThumbnail: Be resilient to no attachments 7 years ago
Scott Nonnenberg a6467d4fda
Constrain 'start recording' event listener to capture-audio only
(it was firing when clicking on a microphone icon in quotation!)
7 years ago
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
7 years ago
Scott Nonnenberg c283ba1a12
Remove pointer cursor when clicking on quote won't do anything 7 years ago
Scott Nonnenberg 9ad55c803f
Fix handling attachment thumbnails using thumbnail key 7 years ago
Scott Nonnenberg fce9bb7342
Move to central MIME functions, remove some console.log
And generally address PR feedback.
7 years ago
Scott Nonnenberg 32925ed026
Load attachment data for quotedMessages, processMessage on add
Not ideal that it loads it twice, but AttachmentView is so selfish with
its blob and objectUrl!
7 years ago
Scott Nonnenberg 0100e279f5
MessageView: Make Quotes resilient to re-renders 7 years ago
Scott Nonnenberg 087dd0f758
Support for iOS theme 7 years ago
Scott Nonnenberg fc330ef854
Quote loading: Check for in-memory message until we get one 7 years ago
Scott Nonnenberg 0f8dd7e2db
Fix a number of lint failures 7 years ago
Scott Nonnenberg 1cc0633786
Full support for quotations in Android theme 7 years ago
Scott Nonnenberg 5602241a0c
Eliminate eslint-generated triple-parents 7 years ago
Scott Nonnenberg 5c2936bdd6
Turns out that we call validateNumber() on group conversations! 7 years ago
Scott Nonnenberg e99192dca7
Unleash eslint on models/messages.js
Fun fact: eslint was not running on this file, despite the eslint
directives previously in the file!
7 years ago
Scott Nonnenberg 33ef967dd7
Unleash eslint on models/conversations.js 7 years ago
Scott Nonnenberg 054d3887a1
Quotes: The full pipeline into the database
1. MessageReceiver always pulls down thumbnails included in quotes
2. Message.upgradeSchema has a new schema that puts all thumbnails on
   disk just like happens with full attachments.
3. handleDataMessage pipes quote from dataMessage into the final message
   destined for the database
7 years ago
Scott Nonnenberg 21bf02c94d
Fixed examples in Quote.md, rough Android visuals 7 years ago
Scott Nonnenberg 2def6afe45
message_view.js: eslint fixes and a bit of fixup 7 years ago
Scott Nonnenberg ae043bf239
In iOS theme, join attachment bubble with caption bubble 7 years ago
Daniel Gasienica 5f8148d3da Bind to `Conversation` lazily to prevent style guide errors 7 years ago
Daniel Gasienica 0902c94093 Reset last message after message has expired
Fixes #980.
7 years ago
Daniel Gasienica d7b845326d ESLint auto-fix `link_text` 7 years ago
Daniel Gasienica 9d41b86162 Remove escaping from `linkText`
We leverage jQuery’s HTML escaping in `$.html(…)`.
7 years ago
Daniel Gasienica f04c65088b Fork `link-text` module 7 years ago
Daniel Gasienica ac50713f86 Improve auto-linking of URLs in messages
Fixes #598.
7 years ago
Daniel Gasienica 24f4ad53bc Use single quotes for identifiers 7 years ago
Daniel Gasienica 432a6ebd7f Redact file paths with escaped slashes 7 years ago
Daniel Gasienica a8a7525609 Redact stack traces with forward and backslashes 7 years ago
Daniel Gasienica b0da7d965e Redact URL encoded file paths in stack traces 7 years ago
Daniel Gasienica f2c9ccae90 Prefer `is.*` over Lodash `is*` functions 7 years ago
Daniel Gasienica 2ee78ec556 Prefer `path` over `Path` 7 years ago
Scott Nonnenberg 8467352994
Rename file for Whisper.ReactWrapperView (#2232) 7 years ago
Scott Nonnenberg c6c3b65bbc
Introduce React, TypeScript, TSLint and React-StyleGuidist (#2219)
Quite a bit of change here.

First, the basics:

- New dependencies were added: react, typescript, tslint, and react-styleguidist
- A new npm script: transpile. It uses typescript to process .tsx files in js/react, putting .js files next to the original file. It's part of the watch functionality of grunt dev as well as the default task run with just grunt (used to build the app prior to release). A lighter-weight to get watch behavior when just working on React components is to run yarn transpile --watch.
- yarn run clean-transpile will remove generated .js files


Style guide via react-styleguidist. Example site: https://react-styleguidist.js.org/examples/basic/

- Start with yarn styleguide
- Component.md files right next to the .tsx file
- jsdoc-style comments are picked up and added to the generated part of the styleguide - the overall summary and a table listing methods and properties of the component
- It has hot-reloading!
- It uses webpack, which means that our app now pulls in webpack though we don't use it to generate anything for the production app.
- I did a bunch of work to enable the use of Backbone views in this context, which will allow us to move smoothly from the old world to the new. First, add all the permutations in the old way, and then slowly start to re-render those same views with React.

A bit of dependency cleanup to enable use in React components:

- moment was moved from our Bower dependencies to our npm dependencies, so it can be used in React components not running in a browser window.
- i18n was moved into the new commonjs format, so it can be used in React components even if window is not available.

Lastly, a bit of Gruntfile cleanup:

- Removal of Chrome App-era modifications of background.js
- Make jshint/jscs watch more targeted, since more and more we'll be using other tools
7 years ago
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.
7 years ago
Scott Nonnenberg 50d4dbaae7
Remove 'use strict' from i18n.js 7 years ago
Scott Nonnenberg 76be13552f
js/i18n.js -> js/modules/i18n.js 7 years ago
Scott Nonnenberg e5322e8261
Finish rename of MessageParents, re-add moment to page
(we were getting crashes in the initial setup of a backbone view)
7 years ago
Scott Nonnenberg cdd16c9780
Rename test-only MessageParents to ConversationContext 7 years ago
Scott Nonnenberg 61a7846149
Fix typo in index.ts 7 years ago
Scott Nonnenberg 2384092e9e
Use Array.isArray in i18n.js 7 years ago
Scott Nonnenberg 23293a3c00
New tslint rule: Interfaces must not start with I 7 years ago