diff --git a/config/webpack.config.prod.js b/config/webpack.config.prod.js index 837d781..ab8dc2c 100644 --- a/config/webpack.config.prod.js +++ b/config/webpack.config.prod.js @@ -7,6 +7,8 @@ var ExtractTextPlugin = require('extract-text-webpack-plugin'); var ManifestPlugin = require('webpack-manifest-plugin'); var InterpolateHtmlPlugin = require('react-dev-utils/InterpolateHtmlPlugin'); var paths = require('./paths'); +var path = require('path'); +var fs = require('fs') var getClientEnvironment = require('./env'); var SentryPlugin = require('webpack-sentry-plugin'); @@ -126,6 +128,12 @@ module.exports = { include: paths.appSrc, loader: 'babel', + }, + { + test: /\.(js|jsx)$/, + include: path.resolve(fs.realpathSync(process.cwd()), 'node_modules/streamsaver'), + loader: 'babel', + }, // The notation here is somewhat confusing. // "postcss" loader applies autoprefixer to our CSS. diff --git a/src/components/Meta.js b/src/components/Meta.js index 42c9fb7..33cca25 100644 --- a/src/components/Meta.js +++ b/src/components/Meta.js @@ -255,6 +255,14 @@ export default class Meta extends Component { return shareUrl; } + saveable() { + try { + 'serviceWorker' in navigator && !!new ReadableStream() && !!new WritableStream() + return 'saveable'; + } catch (e) { + return false; + } + } render() { return (
@@ -267,13 +275,14 @@ export default class Meta extends Component {
: null } -
+
-
+ {this.saveable() &&
+ } {this.props.route ?