From 7e2772812c471b8bcd5bc35278cb4e0ea137f5f5 Mon Sep 17 00:00:00 2001 From: August Date: Fri, 25 Sep 2020 07:07:16 -0700 Subject: [PATCH] Remove lodash.merge with custom merge fucntion, default to "en" language if null --- package.json | 1 - src/App.jsx | 6 +++--- src/modules/merge.js | 17 +++++++++++++++++ 3 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 src/modules/merge.js diff --git a/package.json b/package.json index dc61e758..20016efb 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,6 @@ "@material-ui/icons": "^4.9.1", "@muetab/quotes": "^1.0.0", "detect-browser-language": "0.0.2", - "lodash.merge": "^4.6.2", "react": "^16.13.1", "react-clock": "^2.4.0", "react-dom": "^16.13.1", diff --git a/src/App.jsx b/src/App.jsx index e21668a0..6f5f3b11 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -13,7 +13,7 @@ import Navbar from './components/Navbar'; import SettingsFunctions from './modules/settingsFunctions'; import { ToastContainer } from 'react-toastify'; import Modal from 'react-modal'; -import Merge from 'lodash.merge'; +import { merge } from './modules/merge'; import RoomIcon from '@material-ui/icons/Room'; // Modals are lazy loaded as a user won't use them every time they open a tab @@ -48,9 +48,9 @@ export default class App extends React.PureComponent { let overlayClassList = 'Overlay'; if (localStorage.getItem('animations') === 'true') overlayClassList = 'Overlay modal-animation'; - let language = require(`./translations/${localStorage.getItem('language')}.json`); + let language = require(`./translations/${localStorage.getItem('language') || 'en'}.json`); const en = require('./translations/en.json'); - language = Merge(en, language); + language = merge(en, language); const theme = localStorage.getItem('theme'); if (theme) { diff --git a/src/modules/merge.js b/src/modules/merge.js new file mode 100644 index 00000000..82626757 --- /dev/null +++ b/src/modules/merge.js @@ -0,0 +1,17 @@ +/** + * Merges 2 objects into a huge one + * @template T The original object + * @template U The object that is returned + * @param {...T} items The objects to merge + * @returns {U} The merged object + */ +export const merge = (...items) => { + const obj = {}; + for (let i = 0; i < items.length; i++) { + for (const k in items[i]) { + if (!obj.hasOwnProperty(k)) obj[k] = items[i][k]; + } + } + + return obj; +}; \ No newline at end of file