Commit graph

85 commits

Author SHA1 Message Date
Sorin Davidoi
ecab38fd66 Web Push Notifications (#3243)
* feat: Register push subscription

* feat: Notify when mentioned

* feat: Boost, favourite, reply, follow, follow request

* feat: Notification interaction

* feat: Handle change of public key

* feat: Unsubscribe if things go wrong

* feat: Do not send normal notifications if push is enabled

* feat: Focus client if open

* refactor: Move push logic to WebPushSubscription

* feat: Better title and body

* feat: Localize messages

* chore: Fix lint errors

* feat: Settings

* refactor: Lazy load

* fix: Check if push settings exist

* feat: Device-based preferences

* refactor: Simplify logic

* refactor: Pull request feedback

* refactor: Pull request feedback

* refactor: Create /api/web/push_subscriptions endpoint

* feat: Spec PushSubscriptionController

* refactor: WebPushSubscription => Web::PushSubscription

* feat: Spec Web::PushSubscription

* feat: Display first media attachment

* feat: Support direction

* fix: Stuff broken while rebasing

* refactor: Integration with session activations

* refactor: Cleanup

* refactor: Simplify implementation

* feat: Set VAPID keys via environment

* chore: Comments

* fix: Crash when no alerts

* fix: Set VAPID keys in testing environment

* fix: Follow link

* feat: Notification actions

* fix: Delete previous subscription

* chore: Temporary logs

* refactor: Move migration to a later date

* fix: Fetch the correct session activation and misc bugs

* refactor: Move migration to a later date

* fix: Remove follow request (no notifications)

* feat: Send administrator contact to push service

* feat: Set time-to-live

* fix: Do not show sensitive images

* fix: Reducer crash in error handling

* feat: Add badge

* chore: Fix lint error

* fix: Checkbox label overlap

* fix: Check for payload support

* fix: Rename action "type" (crash in latest Chrome)

* feat: Action to expand notification

* fix: Lint errors

* fix: Unescape notification body

* fix: Do not allow boosting if the status is hidden

* feat: Add VAPID keys to the production sample environment

* fix: Strip HTML tags from status

* refactor: Better error messages

* refactor: Handle browser not implementing the VAPID protocol (Samsung Internet)

* fix: Error when target_status is nil

* fix: Handle lack of image

* fix: Delete reference to invalid subscriptions

* feat: Better error handling

* fix: Unescape HTML characters after tags are striped

* refactor: Simpify code

* fix: Modify to work with #4091

* Sort strings alphabetically

* i18n: Updated Polish translation

it annoys me that it's not fully localized :P

* refactor: Use current_session in PushSubscriptionController

* fix: Rebase mistake

* fix: Set cacheName to mastodon

* refactor: Pull request feedback

* refactor: Remove logging statements

* chore(yarn): Fix conflicts with master

* chore(yarn): Copy latest from master

* chore(yarn): Readd offline-plugin

* refactor: Use save! and update!

* refactor: Send notifications async

* fix: Allow retry when push fails

* fix: Save track for failed pushes

* fix: Minify sw.js

* fix: Remove account_id from fabricator
2017-07-13 22:15:32 +02:00
Eugen Rochko
fb7fcebb2b Fix #4059 - Remove ModuleConcatenationPlugin (#4139)
It increased memory usage of Webpack 1.5x fold with little benefits
2017-07-10 18:46:46 +02:00
Yamagishi Kazutoshi
2cd7d15620 Fix regular expression for RFC 5646 (regression from #3604) (#4133) 2017-07-10 14:02:18 +02:00
unarist
7968c69df4 Fix react-intl/locale-data import issue on production build (#3937)
Webpack seems to fail to import `react-intl/locale-data/*.js` if those
files has been proceed by babel, and this also breaks applying our translation.

Note that this won't be a problem on English locale, because react-intl
includes it as default and works fine without manually added locale-data.
Also this issue seems to only occurs on production build, but I'm not sure
about reason.
2017-06-25 12:49:53 +02:00
unarist
741fd15f4e Fix webpack config for Windows (#3926) 2017-06-24 14:03:52 +02:00
Nolan Lawson
9c246cac5c Apply babel to react-intl to remove prop-types (#3914) 2017-06-23 18:21:33 +02:00
Nolan Lawson
61634505c1 Upgrade to Webpack 3 with module concatenation (#3912) 2017-06-23 17:44:55 +02:00
Yamagishi Kazutoshi
0a2e331bd5 Re-add disableHostCheck (regression #3729) (#3854)
ref #2790
2017-06-19 14:01:31 +02:00
Yamagishi Kazutoshi
dece663cd0 Upgrade Webpacker to version 2.0 (#3729) 2017-06-18 02:57:09 +02:00
Eugen Rochko
baf07bc83b Exclude packs/custom.js from webpack compilation to prevent breakage (#3719)
due to the change in #3373
2017-06-13 03:55:36 +02:00
Yamagishi Kazutoshi
eb34081815 Remove comments for eslint-disable (#3691) 2017-06-11 10:42:42 +02:00
Yamagishi Kazutoshi
d66a5fb801 Refactor translationRunner.js (#3604)
- Use yargs instead of minimist
- Simplify validators
- Fix typo (RFC5626 -> RFC5646)
2017-06-06 13:31:57 +02:00
Yamagishi Kazutoshi
615c580665 Add quotes ESLint rules (#3602)
* Add quotes ESLint rule

* Add jsx-quotes ESlint rule

* Sort ESLint rules
2017-06-06 03:56:36 +02:00
Nolan Lawson
1a543944c8 Enable stats.json analysis with Webpack Visualizer (#3509) 2017-06-02 03:49:56 +02:00
Akihiko Odaki (@fn_aki@pawoo.net)
6b0fdf95b9 Resolve custom application stylesheet with Webpack (#3373)
This implementation is a bit smaller and still has the following benefits:

* No need of app/javascript/packs/custom.js
For custom stylesheet, it typically has only
"require('../styles/custom.scss')" and is redundant.

* No need to extract vendor stylesheet to another asset
Extracting vendor stylesheet could be forgotten by developers who do not
use custom stylesheet.
2017-06-01 20:56:32 +02:00
Yamagishi Kazutoshi
59ff072fcf Remove unused loaders of webpack (#3495) 2017-06-01 17:27:35 +02:00
Yamagishi Kazutoshi
c7be992701 Add ESLint rule (object-curly-spacing) (#3498) 2017-06-01 17:25:10 +02:00
Naouak
b7e9451a40 Fix webpack building on Windows (#3426)
* Path should not be constructed manually. Use path.join to ensure compatibility.

* Path should not be constructed manually. Use path.join to ensure compatibility.

* Fix regexp.

* Fix my own stupidity.
I forgot to check outside my test script the regexp...
2017-05-30 15:30:59 +02:00
Daniel Hunsaker
1a58ed6653 [nanobox] Adjustments for Nanobox development (#3295)
Because Nanobox doesn't run data components in the same container as the code, there are a few tweaks that need to be made in the configuration to get WebPack to work properly in development mode.

The same differences lead to needing to use `DATABASE_URL` by default in the `.env` file for Rails to work correctly.

Limitations of our `.env` loader for Node.js mean the `.env` file needs to be compiled everywhere in order to work, so we compile it in development, now, too. Also, all the `.env.production` tweaks have been consolidated into a single command.

Finally, since Nanobox actually creates the database when it sets up the database server, using the existence of the database alone to determine whether to migrate or setup is insufficient. So we add a condition to `rake db:migrate:setup` to check whether any migrations have run - if the database doesn't exist yet, `db:setup` will be called; if it does, but no migrations have been run, `db:migrate` and `db:seed` are called instead (the same basic idea as what `db:setup` does, but it skips `db:create`, which will only cause problems with an existing DB); otherwise, only `db:migrate` is called.

None of these changes should affect development, and all are designed not to interfere with existing behaviors in other environments.
2017-05-29 17:59:18 +02:00
Akihiko Odaki
a6773d2936 Fix Webpack Bundle Analyzer output for Webpacker (#3374)
Webpacker failed to parse output of Webpack when a module requires
non-existent module or has similar errors. This commit fixes the bug.
2017-05-28 16:26:16 +02:00
Eugen Rochko
a46c2a5e19 Fix #2922 - Load stylesheet from "custom.css" entrypoint when present (#3332)
* Fix #2922 - Load stylesheet from "custom.css" entrypoint when present

This is pretty much the same way it worked as before, albeit with
having to create app/javascript/packs/custom.js with
require('../styles/custom.scss') (or whatever you want really), which
will be a blank slate for you to import whatever you want

* Remove old assets directory

* Extract font-awesome into common.css and always load it
2017-05-27 16:55:09 +02:00
Nolan Lawson
b69a1f599a Add improved performance marks for development mode (#3297) 2017-05-25 14:09:55 +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
Akihiko Odaki
a4a52180cd Introduce common JavaScript file (#2981)
* Create common chunk rather than vendor chunk

vendor chunk is a set of modules provided by external vendors, but now we
can have a chunk as a set of modules shared by multiple entry points,
which could be more efficent than having vendor chunk.

* Start rails-ujs in common.js

This is used by /settings/two_factor_authentication.
2017-05-15 20:20:10 +02:00
Yamagishi Kazutoshi
1ef8cd0bbc Add final newline to locale files (#2890) 2017-05-07 19:55:47 +02:00
Nolan Lawson
c4d405f24c add source maps for dev/production (#2873) 2017-05-07 15:22:30 +02:00
Nolan Lawson
475c467847 switch uglify to compress:true,mangle:true (#2852) 2017-05-06 21:24:59 +02:00
Koala Yeung
d9cfc5c821 translateionRunner: improve minimalist options (#2835)
* translateionRunner: improve minimalist options

* Properly added flags.
* Added alias: -h, -f

* translationRunner: improve logic and flow

* Show all error messages instead of validate availability / name
  format separately.

* translationRunner: check messageDirectory existance

* translationRunner: changed throw string to Error

* translationRunner: use short cut for boolean
2017-05-06 17:05:13 +02:00
Nolan Lawson
a56fc930ae remove unnecessary buffer polyfill (#2833) 2017-05-06 11:02:19 +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
abcang
6e3b33e5f1 Enable disableHostCheck option of webpack-dev-server (#2790) 2017-05-04 17:49:05 +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