From 620e53990baf417f2a44f01d852672a0aefefcca Mon Sep 17 00:00:00 2001 From: AlexeyMatskevich Date: Wed, 27 Nov 2019 02:14:42 +0300 Subject: [PATCH] Avoid destructive mutations https://github.com/apollographql/apollo-client/pull/4543 * Enable strict mode in all scripts --- app/javascript/components/AccountControl/index.js | 1 + .../CustomSnackbar/CustomSnackbarContent/index.js | 1 + app/javascript/components/CustomSnackbar/index.js | 1 + app/javascript/components/Form/Auth/ForgotPassword/index.js | 1 + .../components/Form/Auth/Inputs/emailFormControl.js | 1 + .../Form/Auth/Inputs/emailFormControlAutoValidation.js | 1 + .../Form/Auth/Inputs/passwordConfirmFormControl.js | 1 + .../components/Form/Auth/Inputs/passwordFormControl.js | 1 + app/javascript/components/Form/Auth/Login/index.js | 1 + app/javascript/components/Form/Auth/Registration/index.js | 1 + app/javascript/components/Form/Auth/ResetPassword/index.js | 1 + app/javascript/components/Form/Product/AddProduct/index.js | 1 + .../components/Form/Product/Inputs/ImageFormControl.js | 1 + .../Form/Product/Inputs/NameFormControlValidation.js | 1 + .../Form/Product/Inputs/PreviewDescriptionFormControl.js | 1 + .../components/Form/Product/Inputs/PriceFormControl.js | 1 + .../components/Form/Product/Inputs/WeightFormControl.js | 1 + app/javascript/components/Form/Product/direct_upload.js | 1 + app/javascript/components/Form/Product/get_file_media.js | 1 + app/javascript/components/Form/helper.js | 1 + app/javascript/components/Form/style.js | 1 + app/javascript/components/Header/index.js | 1 + app/javascript/components/Home/index.js | 1 + app/javascript/components/NetworkError/index.js | 1 + app/javascript/components/Product/index.js | 1 + app/javascript/components/Provider/index.js | 1 + app/javascript/components/Reviews/index.js | 1 + app/javascript/components/Search/index.js | 1 + app/javascript/components/ShopItem/NewItem/index.js | 1 + app/javascript/components/ShopItem/index.js | 1 + app/javascript/components/ShopList/SearchList/index.js | 1 + app/javascript/components/ShopList/ShopListMobile/index.js | 1 + app/javascript/components/ShopList/index.js | 1 + app/javascript/components/ShopList/style.js | 1 + app/javascript/packs/index.js | 1 + app/javascript/utils/apollo.js | 6 ++++-- app/javascript/utils/csrf.js | 1 + app/javascript/utils/type.js | 1 + 38 files changed, 41 insertions(+), 2 deletions(-) diff --git a/app/javascript/components/AccountControl/index.js b/app/javascript/components/AccountControl/index.js index 2957761..b37b1bb 100644 --- a/app/javascript/components/AccountControl/index.js +++ b/app/javascript/components/AccountControl/index.js @@ -1,3 +1,4 @@ +'use strict' import React from 'react' import { IconButton, Menu, MenuItem } from '@material-ui/core' import { AccountCircle } from '@material-ui/icons' diff --git a/app/javascript/components/CustomSnackbar/CustomSnackbarContent/index.js b/app/javascript/components/CustomSnackbar/CustomSnackbarContent/index.js index b92856c..21416ba 100644 --- a/app/javascript/components/CustomSnackbar/CustomSnackbarContent/index.js +++ b/app/javascript/components/CustomSnackbar/CustomSnackbarContent/index.js @@ -1,3 +1,4 @@ +'use strict' import React from 'react' import PropTypes from 'prop-types' import clsx from 'clsx' diff --git a/app/javascript/components/CustomSnackbar/index.js b/app/javascript/components/CustomSnackbar/index.js index 5bc0908..d32331e 100644 --- a/app/javascript/components/CustomSnackbar/index.js +++ b/app/javascript/components/CustomSnackbar/index.js @@ -1,3 +1,4 @@ +'use strict' import { Snackbar } from '@material-ui/core' import CustomSnackbarContent from './CustomSnackbarContent' import React from 'react' diff --git a/app/javascript/components/Form/Auth/ForgotPassword/index.js b/app/javascript/components/Form/Auth/ForgotPassword/index.js index 13e55cf..a1f6302 100644 --- a/app/javascript/components/Form/Auth/ForgotPassword/index.js +++ b/app/javascript/components/Form/Auth/ForgotPassword/index.js @@ -1,3 +1,4 @@ +'use strict' import React, { useState } from 'react' import clsx from 'clsx' import useForm, { FormContext } from 'react-hook-form' diff --git a/app/javascript/components/Form/Auth/Inputs/emailFormControl.js b/app/javascript/components/Form/Auth/Inputs/emailFormControl.js index 436ca4a..731f956 100644 --- a/app/javascript/components/Form/Auth/Inputs/emailFormControl.js +++ b/app/javascript/components/Form/Auth/Inputs/emailFormControl.js @@ -1,3 +1,4 @@ +'use strict' import { FormControl, FormHelperText, Input, InputAdornment, InputLabel, makeStyles } from '@material-ui/core' import EmailIcon from '@material-ui/icons/Email' import React from 'react' diff --git a/app/javascript/components/Form/Auth/Inputs/emailFormControlAutoValidation.js b/app/javascript/components/Form/Auth/Inputs/emailFormControlAutoValidation.js index a9ac070..2c2fc37 100644 --- a/app/javascript/components/Form/Auth/Inputs/emailFormControlAutoValidation.js +++ b/app/javascript/components/Form/Auth/Inputs/emailFormControlAutoValidation.js @@ -1,3 +1,4 @@ +'use strict' import { FormControl, FormHelperText, Input, InputAdornment, InputLabel, makeStyles } from '@material-ui/core' import EmailIcon from '@material-ui/icons/Email' import React from 'react' diff --git a/app/javascript/components/Form/Auth/Inputs/passwordConfirmFormControl.js b/app/javascript/components/Form/Auth/Inputs/passwordConfirmFormControl.js index 5450acf..ae76ff2 100644 --- a/app/javascript/components/Form/Auth/Inputs/passwordConfirmFormControl.js +++ b/app/javascript/components/Form/Auth/Inputs/passwordConfirmFormControl.js @@ -1,3 +1,4 @@ +'use strict' import { FormControl, FormHelperText, IconButton, Input, InputAdornment, InputLabel } from '@material-ui/core' import Visibility from '@material-ui/icons/Visibility' import VisibilityOff from '@material-ui/icons/VisibilityOff' diff --git a/app/javascript/components/Form/Auth/Inputs/passwordFormControl.js b/app/javascript/components/Form/Auth/Inputs/passwordFormControl.js index 6bf4cde..84a022f 100644 --- a/app/javascript/components/Form/Auth/Inputs/passwordFormControl.js +++ b/app/javascript/components/Form/Auth/Inputs/passwordFormControl.js @@ -1,3 +1,4 @@ +'use strict' import { FormControl, FormHelperText, IconButton, Input, InputAdornment, InputLabel } from '@material-ui/core' import Visibility from '@material-ui/icons/Visibility' import VisibilityOff from '@material-ui/icons/VisibilityOff' diff --git a/app/javascript/components/Form/Auth/Login/index.js b/app/javascript/components/Form/Auth/Login/index.js index 6421ba5..1527a2e 100644 --- a/app/javascript/components/Form/Auth/Login/index.js +++ b/app/javascript/components/Form/Auth/Login/index.js @@ -1,3 +1,4 @@ +'use strict' import React, { useState } from 'react' import clsx from 'clsx' import useForm, { FormContext } from 'react-hook-form' diff --git a/app/javascript/components/Form/Auth/Registration/index.js b/app/javascript/components/Form/Auth/Registration/index.js index 57744aa..26cfd27 100644 --- a/app/javascript/components/Form/Auth/Registration/index.js +++ b/app/javascript/components/Form/Auth/Registration/index.js @@ -1,3 +1,4 @@ +'use strict' import React, { useState } from 'react' import clsx from 'clsx' import useForm, { FormContext } from 'react-hook-form' diff --git a/app/javascript/components/Form/Auth/ResetPassword/index.js b/app/javascript/components/Form/Auth/ResetPassword/index.js index 077c7f2..15e62f7 100644 --- a/app/javascript/components/Form/Auth/ResetPassword/index.js +++ b/app/javascript/components/Form/Auth/ResetPassword/index.js @@ -1,3 +1,4 @@ +'use strict' import React, { useState } from 'react' import clsx from 'clsx' import useForm, { FormContext } from 'react-hook-form' diff --git a/app/javascript/components/Form/Product/AddProduct/index.js b/app/javascript/components/Form/Product/AddProduct/index.js index cfb58ff..84bd42c 100644 --- a/app/javascript/components/Form/Product/AddProduct/index.js +++ b/app/javascript/components/Form/Product/AddProduct/index.js @@ -1,3 +1,4 @@ +'use strict' import React, { useState } from 'react' import clsx from 'clsx' import useForm, { FormContext } from 'react-hook-form' diff --git a/app/javascript/components/Form/Product/Inputs/ImageFormControl.js b/app/javascript/components/Form/Product/Inputs/ImageFormControl.js index b51a543..5b50637 100644 --- a/app/javascript/components/Form/Product/Inputs/ImageFormControl.js +++ b/app/javascript/components/Form/Product/Inputs/ImageFormControl.js @@ -1,3 +1,4 @@ +'use strict' import { CircularProgress, makeStyles } from '@material-ui/core' import React from 'react' import { useFormContext } from 'react-hook-form' diff --git a/app/javascript/components/Form/Product/Inputs/NameFormControlValidation.js b/app/javascript/components/Form/Product/Inputs/NameFormControlValidation.js index 68a9db2..f28c11f 100644 --- a/app/javascript/components/Form/Product/Inputs/NameFormControlValidation.js +++ b/app/javascript/components/Form/Product/Inputs/NameFormControlValidation.js @@ -1,3 +1,4 @@ +'use strict' import { FormControl, FormHelperText, Input, InputLabel } from '@material-ui/core' import debounce from 'lodash/debounce' import React from 'react' diff --git a/app/javascript/components/Form/Product/Inputs/PreviewDescriptionFormControl.js b/app/javascript/components/Form/Product/Inputs/PreviewDescriptionFormControl.js index cdc2a7a..ca06de7 100644 --- a/app/javascript/components/Form/Product/Inputs/PreviewDescriptionFormControl.js +++ b/app/javascript/components/Form/Product/Inputs/PreviewDescriptionFormControl.js @@ -1,3 +1,4 @@ +'use strict' import { FormControl, FormHelperText, Input, InputLabel } from '@material-ui/core' import React from 'react' import { useFormContext } from 'react-hook-form' diff --git a/app/javascript/components/Form/Product/Inputs/PriceFormControl.js b/app/javascript/components/Form/Product/Inputs/PriceFormControl.js index 9257683..a53d64b 100644 --- a/app/javascript/components/Form/Product/Inputs/PriceFormControl.js +++ b/app/javascript/components/Form/Product/Inputs/PriceFormControl.js @@ -1,3 +1,4 @@ +'use strict' import { FormControl, FormHelperText, Input, InputAdornment, InputLabel } from '@material-ui/core' import React from 'react' import { useFormContext } from 'react-hook-form' diff --git a/app/javascript/components/Form/Product/Inputs/WeightFormControl.js b/app/javascript/components/Form/Product/Inputs/WeightFormControl.js index 724c72c..647a2cc 100644 --- a/app/javascript/components/Form/Product/Inputs/WeightFormControl.js +++ b/app/javascript/components/Form/Product/Inputs/WeightFormControl.js @@ -1,3 +1,4 @@ +'use strict' import { FormControl, FormHelperText, Input, InputAdornment, InputLabel } from '@material-ui/core' import React from 'react' import { useFormContext } from 'react-hook-form' diff --git a/app/javascript/components/Form/Product/direct_upload.js b/app/javascript/components/Form/Product/direct_upload.js index 98e5c7e..9986617 100644 --- a/app/javascript/components/Form/Product/direct_upload.js +++ b/app/javascript/components/Form/Product/direct_upload.js @@ -1,3 +1,4 @@ +'use strict' import { BlobUpload } from '@rails/activestorage/src/blob_upload' import { CSRF } from '../../../utils/csrf' diff --git a/app/javascript/components/Form/Product/get_file_media.js b/app/javascript/components/Form/Product/get_file_media.js index a69e5da..13a612c 100644 --- a/app/javascript/components/Form/Product/get_file_media.js +++ b/app/javascript/components/Form/Product/get_file_media.js @@ -1,3 +1,4 @@ +'use strict' import { FileChecksum } from '@rails/activestorage/src/file_checksum' function calculateChecksum (file) { diff --git a/app/javascript/components/Form/helper.js b/app/javascript/components/Form/helper.js index 05c26a1..eadbbd3 100644 --- a/app/javascript/components/Form/helper.js +++ b/app/javascript/components/Form/helper.js @@ -1,3 +1,4 @@ +'use strict' export function isEmpty (obj) { for (const key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { return false } diff --git a/app/javascript/components/Form/style.js b/app/javascript/components/Form/style.js index dd07fd9..50f0474 100644 --- a/app/javascript/components/Form/style.js +++ b/app/javascript/components/Form/style.js @@ -1,3 +1,4 @@ +'use strict' import { makeStyles } from '@material-ui/core' import { green } from '@material-ui/core/colors' diff --git a/app/javascript/components/Header/index.js b/app/javascript/components/Header/index.js index 8195d6a..4a8fc49 100644 --- a/app/javascript/components/Header/index.js +++ b/app/javascript/components/Header/index.js @@ -1,3 +1,4 @@ +'use strict' import React from 'react' import { fade, makeStyles, withStyles } from '@material-ui/core/styles' import { AppBar, Toolbar, IconButton, Badge, LinearProgress } from '@material-ui/core' diff --git a/app/javascript/components/Home/index.js b/app/javascript/components/Home/index.js index 50fbc3a..a3178c6 100644 --- a/app/javascript/components/Home/index.js +++ b/app/javascript/components/Home/index.js @@ -1,3 +1,4 @@ +'use strict' import React from 'react' import { useQuery } from '@apollo/react-hooks' import { productsMeta } from './operations.graphql' diff --git a/app/javascript/components/NetworkError/index.js b/app/javascript/components/NetworkError/index.js index 747fd67..c52aa2a 100644 --- a/app/javascript/components/NetworkError/index.js +++ b/app/javascript/components/NetworkError/index.js @@ -1,3 +1,4 @@ +'use strict' import React from 'react' import { useQuery } from '@apollo/react-hooks' import { networkErrors } from '../operations.graphql' diff --git a/app/javascript/components/Product/index.js b/app/javascript/components/Product/index.js index 6b6050a..a293f1e 100644 --- a/app/javascript/components/Product/index.js +++ b/app/javascript/components/Product/index.js @@ -1,3 +1,4 @@ +'use strict' import React from 'react' import { useParams } from 'react-router-dom' import { product } from './operations.graphql' diff --git a/app/javascript/components/Provider/index.js b/app/javascript/components/Provider/index.js index eded3a5..fa2a336 100644 --- a/app/javascript/components/Provider/index.js +++ b/app/javascript/components/Provider/index.js @@ -1,3 +1,4 @@ +'use strict' import React from 'react' import { ApolloProvider } from '@apollo/react-hooks' import { createClient } from '../../utils/apollo' diff --git a/app/javascript/components/Reviews/index.js b/app/javascript/components/Reviews/index.js index 34495d0..7413b5d 100644 --- a/app/javascript/components/Reviews/index.js +++ b/app/javascript/components/Reviews/index.js @@ -1,3 +1,4 @@ +'use strict' import React from 'react' import { makeStyles } from '@material-ui/core/styles' import List from '@material-ui/core/List' diff --git a/app/javascript/components/Search/index.js b/app/javascript/components/Search/index.js index 6525c48..45f1aae 100644 --- a/app/javascript/components/Search/index.js +++ b/app/javascript/components/Search/index.js @@ -1,3 +1,4 @@ +'use strict' import React from 'react' import TextField from '@material-ui/core/TextField' import Autocomplete from '@material-ui/lab/Autocomplete' diff --git a/app/javascript/components/ShopItem/NewItem/index.js b/app/javascript/components/ShopItem/NewItem/index.js index d103507..9fab7c0 100644 --- a/app/javascript/components/ShopItem/NewItem/index.js +++ b/app/javascript/components/ShopItem/NewItem/index.js @@ -1,3 +1,4 @@ +'use strict' import React from 'react' import { makeStyles } from '@material-ui/core/styles' import Card from '@material-ui/core/Card' diff --git a/app/javascript/components/ShopItem/index.js b/app/javascript/components/ShopItem/index.js index 683594d..8ecdf1a 100644 --- a/app/javascript/components/ShopItem/index.js +++ b/app/javascript/components/ShopItem/index.js @@ -1,3 +1,4 @@ +'use strict' import React from 'react' import { makeStyles } from '@material-ui/core/styles' import { diff --git a/app/javascript/components/ShopList/SearchList/index.js b/app/javascript/components/ShopList/SearchList/index.js index 2043f59..8531be6 100644 --- a/app/javascript/components/ShopList/SearchList/index.js +++ b/app/javascript/components/ShopList/SearchList/index.js @@ -1,3 +1,4 @@ +'use strict' import React, { useEffect, useState } from 'react' import { Container, Grid, Typography } from '@material-ui/core' import ShopItem from '../../ShopItem' diff --git a/app/javascript/components/ShopList/ShopListMobile/index.js b/app/javascript/components/ShopList/ShopListMobile/index.js index 59a9987..d51db7f 100644 --- a/app/javascript/components/ShopList/ShopListMobile/index.js +++ b/app/javascript/components/ShopList/ShopListMobile/index.js @@ -1,3 +1,4 @@ +'use strict' import React from 'react' import { Container, Grid, Typography } from '@material-ui/core' import ShopItem from '../../ShopItem' diff --git a/app/javascript/components/ShopList/index.js b/app/javascript/components/ShopList/index.js index 0986c9c..36c58a6 100644 --- a/app/javascript/components/ShopList/index.js +++ b/app/javascript/components/ShopList/index.js @@ -1,3 +1,4 @@ +'use strict' import React, { useEffect, useState } from 'react' import { Container, Grid, Typography } from '@material-ui/core' import ShopItem from '../ShopItem' diff --git a/app/javascript/components/ShopList/style.js b/app/javascript/components/ShopList/style.js index 0253719..e36466c 100644 --- a/app/javascript/components/ShopList/style.js +++ b/app/javascript/components/ShopList/style.js @@ -1,3 +1,4 @@ +'use strict' import { makeStyles } from '@material-ui/core' export const useStyles = makeStyles(theme => ({ diff --git a/app/javascript/packs/index.js b/app/javascript/packs/index.js index ea28824..612df7e 100644 --- a/app/javascript/packs/index.js +++ b/app/javascript/packs/index.js @@ -1,3 +1,4 @@ +'use strict' import React from 'react' import ReactDOM from 'react-dom' import CssBaseline from '@material-ui/core/CssBaseline' diff --git a/app/javascript/utils/apollo.js b/app/javascript/utils/apollo.js index 41ebd69..0988648 100644 --- a/app/javascript/utils/apollo.js +++ b/app/javascript/utils/apollo.js @@ -1,3 +1,4 @@ +'use strict' import { ApolloClient } from 'apollo-client' import { InMemoryCache } from 'apollo-cache-inmemory' import { HttpLink } from 'apollo-link-http' @@ -7,7 +8,7 @@ import { resolvers, typeDefs } from './type' import { networkErrors } from '../components/operations.graphql' import { CSRF } from './csrf' -const cache = new InMemoryCache() +const cache = new InMemoryCache({ freezeResults: true }) const isLoggedIn = !!window.localStorage.getItem('refreshToken') || !!window.localStorage.getItem('token') cache.writeData({ @@ -137,7 +138,8 @@ export const createClient = () => { createHttpLink() ]), typeDefs, - resolvers + resolvers, + assumeImmutableResults: true }) client.onResetStore(() => { cache.writeData({ data: { isLoggedIn, networkErrors: [] } }) }) diff --git a/app/javascript/utils/csrf.js b/app/javascript/utils/csrf.js index 9651e9d..10af14c 100644 --- a/app/javascript/utils/csrf.js +++ b/app/javascript/utils/csrf.js @@ -1 +1,2 @@ +'use strict' export const CSRF = () => document.querySelector('meta[name="csrf-token"]').getAttribute('content') diff --git a/app/javascript/utils/type.js b/app/javascript/utils/type.js index 35fb457..1455d17 100644 --- a/app/javascript/utils/type.js +++ b/app/javascript/utils/type.js @@ -1,3 +1,4 @@ +'use strict' import gql from 'graphql-tag' export const typeDefs = gql`