Commit Graph

141 Commits (ad769409f7a9d827444a86af66c1c60cecc58363)

Author SHA1 Message Date
Sorin Davidoi 5efcea69d2 Lazy load toots using IntersectionObserver (#3191)
* refactor(components/status_list): Lazy load using IntersectionObserver

* refactor(components/status_list): Avoid setState bottleneck

* refactor(components/status_list): Update state correctly

* fix(components/status): Render if isIntersecting is undefined

* refactor(components/status): Recycle timeout

* refactor(components/status): Reduce animation duration

* refactor(components/status): Use requestIdleCallback

* chore: Split polyfill bundles

* refactor(components/status_list): Increase rootMargin to 300%

* fix(components/status): Check if onRef is not defined

* chore: Add note about polyfill bundle splitting

* fix(components/status): Reduce animation duration to 0.3 seconds
2017-05-24 17:55:00 +02:00
Nolan Lawson bde004c68c Use node instead of babel-node for streaming (#3269) 2017-05-24 00:45:05 +02:00
Yamagishi Kazutoshi 5bb10252fa Focus the submit button (#3253)
Focus the submit button when confirmation modal is opened.

Also, changed cancellation link to button.
This makes the meaning clearer.
2017-05-23 13:10:41 +02:00
Nolan Lawson e228bdd3b6 Add webpack-bundle-analyzer for production builds (#3170) 2017-05-22 15:42:11 +02:00
Nolan Lawson 2d7aacf747 Only load Intl data for current language (#3130)
* Only load Intl data for current language

* Extract common chunk only from application.js and public.js

* Generate locale packs, avoid caching on window object
2017-05-22 15:06:06 +02:00
Yamagishi Kazutoshi e4ed0b155c Improve eslint rules (#3147)
* Add semi to ESLint rules

* Add padded-blocks to ESLint rules

* Add comma-dangle to ESLint rules

* add config/webpack and storyboard

* add streaming/

* yarn test:lint -- --fix
2017-05-20 17:31:47 +02:00
Yamagishi Kazutoshi d1f83bee86 Remove react-autosuggest (#3140)
react-autosuggest is added from b91faaebbb

Dependence removed from d088b3cade
2017-05-19 15:21:34 +02:00
Yamagishi Kazutoshi 9ab33ded34 Downgrade eslint-plugin-jsx-a11y to v4.0.0 (#3131)
In Code Climate, eslint-plugin-jsx-a11y v4.0.0 is used.
Therefore, it seems that a warning is displayed.

ref https://github.com/codeclimate/codeclimate-eslint/pull/273
2017-05-19 11:44:28 +02:00
Sorin Davidoi 200a8b4c79 feat(babel): Strip prop types (#3122)
* feat(babel): Strip prop types

* chore(babel): Indent

* fix(babel): Move babel-plugin-transform-react-remove-prop-types to dependencies
2017-05-19 02:42:21 +02:00
Nolan Lawson a91765191b Add transform-runtime for smaller Babel helpers (#3116) 2017-05-18 19:14:58 +02:00
Yamagishi Kazutoshi 4a3038618f Use babel-preset-env on Streaming Server (#2998)
* Use babel-preset-env on Streaming Server

Change the streaming server to use babel-preset-env as well as asset compilation.
This shortens the load time at first boot.

* remove babel-plugin-lodash
2017-05-14 13:47:31 +02:00
Yamagishi Kazutoshi 7bc8be7915 Remove Babel plugin for ES Modules (#2975)
* Remove Babel plugin for ES Modules

Processing of ES Modules is executed by Webpack.
Don't have to do it on Babel side.

* Add plugin for test
2017-05-14 12:59:40 +02:00
Daigo 3 Dango cb2738f6d0 Rebuild node-sass (#3002)
Got an error in asset precompile on Heroku:
Module build failed: Error: ENOENT: no such file or directory, scandir '/tmp/.../node_modules/node-sass/vendor'

ref: https://github.com/rails/webpacker#troubleshooting
2017-05-12 22:04:41 +02:00
Yamagishi Kazutoshi 2d254f9733 Use ES Class Fields & Static Properties (#3008)
Use ES Class Fields & Static Properties (currently stage 2) for improve class outlook.

Added babel-plugin-transform-class-properties as a Babel plugin.
2017-05-12 14:44:10 +02:00
Yamagishi Kazutoshi 64b3e75585 Remove dependencies that are no longer needed now (#2999)
There are some dependencies that are no longer needed anymore.
As a result, it took more time to install the package than necessary.

I want to delete them and shorten the installation time.
2017-05-12 04:04:41 +02:00
Nolan Lawson 4692cc8d98 Add dynamic polyfills for older browsers (#2985)
Fixes #2941
2017-05-11 11:26:06 +02:00
Yamagishi Kazutoshi 84a4758114 Remove jquery-ujs (#2939)
* Remove jquery-ujs

* fix for eslint
2017-05-09 14:50:43 +02:00
Yamagishi Kazutoshi f1bf2214bc Remove local_time gem, and add similar (#2875) 2017-05-07 15:22:54 +02:00
Nolan Lawson fa96b86b64 upgrade emojione-picker (#2874) 2017-05-07 15:22:42 +02:00
Nolan Lawson c9e8d229a4 add asynchronous emojione-picker (code-splitting) (#2863) 2017-05-07 02:42:38 +02:00
Koala Yeung 94460603c0 Eslintrc fix (#2850)
* eslintrc: adapt changes in eslint-plugin-jsx-a11y

* Replace 'jsx-a11y/img-has-alt' with 'jsx-a11y/alt-text'.
  Reference: evcohen/eslint-plugin-jsx-a11y@24b6193

* Replace 'jsx-a11y/onclick-has-focus' with 'jsx-a11y/interactive-supports-focus'
  Reference: evcohen/eslint-plugin-jsx-a11y@cbdfeb8

* Replace 'jsx-a11y/onclick-has-role' with 'jsx-a11y/no-noninteractive-element-interactions'
  Reference: evcohen/eslint-plugin-jsx-a11y@18c9b71

* Update eslint-plugin-jsx-a11y to 5.0.0

Follow the change in Code Climate. Make sure the same eslintrc
can be executed locally and in Code Climate.

* Convert .eslintrc.json to equivlant .eslintrc.yml

* Less quotes and commas, more readability, allow comment.
2017-05-06 21:26:54 +02:00
Eshin Kunishima 0a9c2152c9 Replace ws with uws (#2807)
* Replace ws with uws

* fix indent

* Adjust indentation

* remove trailing space
2017-05-06 17:05:38 +02:00
Nolan Lawson 63ad61a2b6 remove legacy decorators, use lodash.debounce (#2830) 2017-05-06 11:05:32 +02:00
Yamagishi Kazutoshi 842f4fab9f Move babel-plugin-lodash to dependencies from devDependencies (#2831) 2017-05-06 11:04:55 +02:00
Nolan Lawson 7a874f1f98 separate .babelrc for prod/dev, add babel-plugin-lodash (#2829) 2017-05-06 04:18:23 +02:00
Koala Yeung b1f14a1c7f Streamline javascript translation by improving translationRunner (#2808)
* package.json: Add "build:*" targets

* Improve react-intl-translations-manager workflow.
  * Added "build:production" to build production bundle.
  * Added "build:development" to build development bundle.

* Fix json translation files

* Run `yarn manage:translations` to fix translation files.
* Fix `pl.json` for syntax error.

* translationRunner: auto detect existing languages

* Auto detect existing rfc5646 language tag in *.json filenames
  in `app/javascript/mastodon/locale` folder. No need to manually
  define every new language in the languages array here.

* translationRunner: add more functionality

* Allow script user to specify language code to check.
* Added available language check.
* Added --force flag to force creation of unexists language.
* Added --help flag and help messages.

* gitignore: ignore npm-debug.log

* Fix webpack error if NODE_ENV is not defined

Default to use 'development' in config/webpack/configuration.js
2017-05-06 04:05:38 +02:00
Yamagishi Kazutoshi 93ec05f976 Decode IDNA in PreviewCard (#2781) 2017-05-04 15:52:08 +02:00
Eugen Rochko ef2af79a48 Replace sprockets/browserify with Webpack (#2617)
* Replace browserify with webpack

* Add react-intl-translations-manager

* Do not minify in development, add offline-plugin for ServiceWorker background cache updates

* Adjust tests and dependencies

* Fix production deployments

* Fix tests

* More optimizations

* Improve travis cache for npm stuff

* Re-run travis

* Add back support for custom.scss as before

* Remove offline-plugin and babili

* Fix issue with Immutable.List().unshift(...values) not working as expected

* Make travis load schema instead of running all migrations in sequence

* Fix missing React import in WarningContainer. Optimize rendering performance by using ImmutablePureComponent instead of
React.PureComponent. ImmutablePureComponent uses Immutable.is() to compare props. Replace dynamic callback bindings in
<UI />

* Add react definitions to places that use JSX

* Add Procfile.dev for running rails, webpack and streaming API at the same time
2017-05-03 02:04:16 +02:00
Michael Deeb 2d7bc2267c Added the repository field and a script for after npm version (#2459) 2017-04-26 01:51:51 +02:00
Ash Furrow 109d1bdcda Fixes string length issue for multibyte characters. (#2443) 2017-04-25 17:37:51 +02:00
Keiji, Yoshimi 89ad73a9af update emojione-picker for fixed warnings. (#2324) 2017-04-22 17:28:02 +02:00
Yamagishi Kazutoshi 542c134ed4 Remove deprecated features at React v15.5 (#1905)
* Remove deprecated features at React v15.5

- [x] React.PropTypes
- [x] react-addons-pure-render-mixin
- [x] react-addons-test-utils

* Uncommented out & Add browserify_rails options

* re-add react-addons-shallow

* Fix syntax error from resolve conflicts

* follow up 0ab0db9fe7
2017-04-21 20:05:35 +02:00
Mingye Wang 0fd613d2dc Use new ESLint filename (.json) (#2248)
* Use new ESLint filename (.json)

Codeclimate's ESLint 3 is complaining about the old filename. Let me try changing it.

* point eslint to new rc

(squash this)
2017-04-21 16:43:57 +02:00
Christoph Witzany 23b457c287 Make Docker image buildable on ARM (#2065)
* after yarn upgrade

* after manually removing node-gyp as top level dependency
2017-04-20 13:29:38 +02:00
Alda Marteau-Hardi f0cfb2cb90 Add the licence key in package.json (#1914) 2017-04-16 16:08:11 +02:00
Zac Anger 4afb6d9b15 Add eslint-plugin-jsx-a11y (#1651)
* Add eslint-plugin-jsx-a11y.

* Fix npm script.

* Adjust npm scripts so test also runs lint.

* Fix existing lint errors.

* Don't break on a11y issues.

* Add role and tabIndex.

* Add vim and Mac files to .gitignore and .dockerignore.

* Handle htmlFor (partially), a that's actually a button.

* Fix missing tabIndex.

* Add cursor:pointer to load-more

* Revert change to load_more.

* Fixes based on review.

* Update yarn.lock.

* Don't try to install fsevents on Linux (hides warning noise).
2017-04-15 13:27:27 +02:00
Eugen 5122f9ab3b Fix #1491 - Fix broken notifications, broken Link header parsing for exclude_types (#1548) 2017-04-11 22:53:58 +02:00
Gavin Mogan a710eec95c Dev Tooling fixes (eslint/editorconfig) (#1398)
* Add eslint to dev dependancies so it gets installed for the repo

yarn add --dev eslint babel-eslint eslint-plugin-reac

project specific version of eslint, you can globally install eslint-cli
if you want the global runtime, or add .bin to your path

* fix eslint errors about inconsitent returns

* eslint ignore the same as git ignore. allows for eslint .

* Add editorconfig file so everyones editor will be setup to follow the same standards
2017-04-11 00:36:03 +02:00
Eugen Rochko cdbfbbc691 Improve emojis - use SVGs where possible 2017-03-29 22:27:24 +02:00
Eugen Rochko b6dff981a2 Replace howler.js with simple <audio />, will hopefully resolve
some weird mobile browser behaviours
2017-03-13 17:12:30 +01:00
Eugen Rochko 6ded139be0 Fix #372 - Emoji picker 2017-03-02 00:57:55 +01:00
Eugen Rochko a24f95ae92 Fix broken dependency on inner react utility function 2017-02-26 01:34:56 +01:00
Eugen Rochko fcd765c166 Improve compose form performance, upgrade JS dependencies. LightingBox
now allows to cycle through multiple images
2017-02-26 01:23:44 +01:00
Eugen Rochko b8ab1bdd70 Add unique request IDs to streaming API to improve logs 2017-02-05 23:37:25 +01:00
Eugen Rochko 9dde86c4f3 Remove react-dnd as it was interfering with text selection. Move content
warning mentions preview into area where actual content would be
2017-02-05 04:11:14 +01:00
Eugen Rochko 35cdb8c261 Getting started on draggable columns 2017-02-05 01:58:25 +01:00
Eugen Rochko 9bd2b6be86 Make the streaming API also handle websockets (because trying to get the browser EventSource interface to
work flawlessly was a nightmare). WARNING: This commit makes the web UI connect to the streaming API instead
of ActionCable like before. This means that if you are upgrading, you should set that up beforehand.
2017-02-04 00:34:31 +01:00
Eugen Rochko 999ecc9d69 Add logging and filtering to the node.js streaming API 2017-02-02 13:56:14 +01:00
Eugen Rochko d4601c094f Add streaming API in Node.js 2017-02-02 01:31:09 +01:00
Eugen Rochko 7865ce28e5 Add sounds for notifications. Boop by @jk@mastodon.social 2017-01-17 20:09:03 +01:00
Eugen Rochko 81db795253 Fix #414 - Improve lightbox, add loading indicator 2017-01-16 12:04:02 +01:00
Eugen Rochko 992c8d2c41 Add ruby version to Gemfile, move devDependencies in package.json to dependencies,
fix bug in process feed service
2017-01-11 15:39:31 +01:00
Eugen Rochko c8bcd413e2 Home column filters 2017-01-10 17:25:10 +01:00
Eugen Rochko 0dac73b5cc Add tab bar alternative to desktop UI, upgrade react & react-redux 2017-01-06 22:09:55 +01:00
Jessica Stokes 73ce525d4b Upgrade EmojiOne to 2.2.7
Adds support for, among other things, 🏳️‍🌈
2017-01-05 15:16:13 -08:00
Eugen 8b35bd2b92 Revert "Display native emoji on browsers which support it" 2017-01-05 13:45:21 +01:00
Misty De Meo 8dfb4048cc Display native emoji on browsers which support it 2017-01-04 22:23:02 -08:00
Eugen Rochko d088b3cade Re-implemented autosuggestions component for the compose form
Fix #205, fix #156, fix #124
2016-12-14 18:21:31 +01:00
Eugen Rochko 0f221668a3 Fix #341 - Remove react-responsive in favour of simpler resize handler/window width 2016-12-06 19:18:37 +01:00
Eugen Rochko 1c8ca7aed5 Adding content sensitivity toggle, spoilers for media 2016-11-23 18:53:23 +01:00
Eugen Rochko 06f4f99ee1 Updating some npm packages 2016-11-18 23:55:44 +01:00
Eugen Rochko 2096fc62ec Add an Intl polyfill 2016-11-17 16:34:36 +01:00
Eugen Rochko 43daf0be85 Adding react-intl i18n to the frontend. No translations yet 2016-11-16 17:20:52 +01:00
Eugen Rochko c244c3f7bc Infinite scroll for followers/following lists 2016-11-13 20:42:54 +01:00
Eugen Rochko e60cb2792e Debounce autosuggestions requests 2016-11-13 13:13:36 +01:00
Eugen Rochko db4df4481b Fix modals sizing and add animation to it, fix #140 by only making the text of
status clickable (this also fixes multiple dropdown being openable at the same
time)
2016-11-10 23:21:24 +01:00
Eugen Rochko 46191e7071 Adding Emoji One 2016-11-08 21:46:29 +01:00
Eugen Rochko 24abc550ab Replace react-skylight with own solution that centers images better 2016-11-07 18:23:36 +01:00
Eugen Rochko b91faaebbb Basic username autocomplete for text area 2016-10-30 18:13:05 +01:00
Eugen Rochko 68535f58cd Add opening images in a modal window 2016-10-24 18:08:23 +02:00
Eugen Rochko fac770fccd Remember scroll position when navigating back, do not needlessly reload
entire timelines (only fetch since last known ID). Side effect: account
timelines no longer update in real-time
2016-10-18 23:06:28 +02:00
Kai Schaper ec8754f22e add chai-enzyme; add/improve Avatar component specs 2016-10-12 18:06:18 +02:00
Eugen Rochko d70e728326 Responsively changing layout to single-column + nav on smaller screens 2016-10-12 13:17:17 +02:00
Eugen Rochko 15a6e7374f Merge in react-storybook, add yarn lockfile 2016-10-12 12:08:57 +02:00
Kai Schaper e4f10bf9b1 setup React Storybook; add example story for LoadingIndicator component 2016-10-11 20:19:03 +02:00
Kai Schaper 7698f1e833 add sinon; add basic Button component test 2016-10-10 22:48:58 +02:00
Kai Schaper 56f381d45c add jsdom; add basic Avatar component test 2016-10-10 22:48:58 +02:00
Kai Schaper 0361f97958 add required peer dependency 2016-10-10 22:48:58 +02:00
Kai Schaper 7d3382f755 set up Mocha/Chai/Enzyme for React component unit testing 2016-10-10 22:48:58 +02:00
Eugen Rochko 292119e278 Install npm 3 in docker (v3 warns on invalid peer dependencies instead of failing) 2016-10-08 00:23:01 +02:00
Eugen Rochko f10b5ee0d8 Use reselect to memoize denormalization in UI state
Also upgrade react-redux to latest version. This is a performance update
2016-10-08 00:01:22 +02:00
Eugen Rochko e63aebff7a Adding landing page 2016-09-27 23:12:33 +02:00
Eugen Rochko 337462aa5e Re-organizing components to be more modular, adding loading bars 2016-09-19 23:26:21 +02:00
Eugen Rochko d6a64f45fd Adding a notification stack for error messages 2016-09-12 19:20:55 +02:00
Eugen Rochko 0077fc26df Merge and unmerge timelines on follow/unfollow, solves #21, #22 2016-09-10 18:36:48 +02:00
Eugen Rochko c249ceb10c Reblogs fixed 2016-09-01 14:12:11 +02:00
Eugen Rochko 72591cc6d5 Cleaning up action names and compose drawer 2016-08-31 16:15:12 +02:00
Eugen Rochko 92afd29650 The frontend will now be an OAuth app, auto-authorized. The frontend will use an access token for API requests
Adding better errors for the API controllers, posting a simple status works from the frontend now
2016-08-26 19:12:19 +02:00
Eugen Rochko 44e57f64dd Improving statuses, adding a composer drawer, which doesn't work yet 2016-08-25 19:52:55 +02:00
Eugen Rochko a541e937ca More styling for statuses 2016-08-24 21:08:00 +02:00
Eugen Rochko 49520d6e62 Adding React.js, Redux, revamping dashboard 2016-08-24 17:56:44 +02:00