diff --git a/.eslintrc.js b/.eslintrc.js
index 42977707..d7745202 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1,10 +1,26 @@
module.exports = {
extends: ['airbnb', 'airbnb-typescript', 'prettier'],
- plugins: ['@typescript-eslint', 'no-relative-import-paths', 'prettier'],
+ plugins: ['@typescript-eslint', 'no-relative-import-paths', 'prettier', 'header'],
parserOptions: {
project: './tsconfig.json',
},
rules: {
+ 'header/header': [
+ 'error',
+ 'block', // comment type
+ [ // expected file header comment
+ // the spaces are important, otherwise, the rule will mark it as an error
+ '',
+ ' * Copyright (C) Contributors to the Suwayomi project',
+ ' *',
+ ' * This Source Code Form is subject to the terms of the Mozilla Public',
+ ' * License, v. 2.0. If a copy of the MPL was not distributed with this',
+ ' * file, You can obtain one at https://mozilla.org/MPL/2.0/.',
+ ' ',
+ ],
+ 2, // number of new lines after comment
+ ],
+
'prettier/prettier': 'error',
'no-plusplus': ['error', { allowForLoopAfterthoughts: true }],
diff --git a/package.json b/package.json
index 2836a349..aa27c0a2 100644
--- a/package.json
+++ b/package.json
@@ -62,6 +62,7 @@
"eslint-config-airbnb": "^19.0.4",
"eslint-config-airbnb-typescript": "^17.0.0",
"eslint-config-prettier": "^8.6.0",
+ "eslint-plugin-header": "^3.1.1",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-jsx-a11y": "^6.7.1",
"eslint-plugin-no-relative-import-paths": "^1.5.2",
diff --git a/src/App.tsx b/src/App.tsx
index d52ecf3d..a5f5da28 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import { Container } from '@mui/material';
import CssBaseline from '@mui/material/CssBaseline';
diff --git a/src/components/ExtensionCard.tsx b/src/components/ExtensionCard.tsx
index daa214c5..8e509fca 100644
--- a/src/components/ExtensionCard.tsx
+++ b/src/components/ExtensionCard.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useState } from 'react';
import Card from '@mui/material/Card';
diff --git a/src/components/MangaCard.tsx b/src/components/MangaCard.tsx
index 5018c191..85cc8614 100644
--- a/src/components/MangaCard.tsx
+++ b/src/components/MangaCard.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React from 'react';
import Card from '@mui/material/Card';
diff --git a/src/components/MangaGrid.tsx b/src/components/MangaGrid.tsx
index 32436c09..b98e9c60 100644
--- a/src/components/MangaGrid.tsx
+++ b/src/components/MangaGrid.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useEffect, useLayoutEffect, useRef, useState } from 'react';
import Grid from '@mui/material/Grid';
diff --git a/src/components/SourceCard.tsx b/src/components/SourceCard.tsx
index 5c689d17..0c15b698 100644
--- a/src/components/SourceCard.tsx
+++ b/src/components/SourceCard.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import { CardActionArea } from '@mui/material';
import Avatar from '@mui/material/Avatar';
diff --git a/src/components/atoms/LoadingIconButton.tsx b/src/components/atoms/LoadingIconButton.tsx
index 719b7475..70688d61 100644
--- a/src/components/atoms/LoadingIconButton.tsx
+++ b/src/components/atoms/LoadingIconButton.tsx
@@ -1,3 +1,11 @@
+/*
+ * Copyright (C) Contributors to the Suwayomi project
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+
import { CircularProgress, IconButton, IconButtonProps } from '@mui/material';
import React, { useState } from 'react';
diff --git a/src/components/context/DarkTheme.tsx b/src/components/context/DarkTheme.tsx
index f05ee4cd..cd3ba383 100644
--- a/src/components/context/DarkTheme.tsx
+++ b/src/components/context/DarkTheme.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React from 'react';
diff --git a/src/components/context/LibraryOptionsContext.tsx b/src/components/context/LibraryOptionsContext.tsx
index caaece64..1d24fc24 100644
--- a/src/components/context/LibraryOptionsContext.tsx
+++ b/src/components/context/LibraryOptionsContext.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useContext } from 'react';
import { LibraryOptions } from 'typings';
diff --git a/src/components/context/NavbarContext.tsx b/src/components/context/NavbarContext.tsx
index 54be9de5..8a50d06a 100644
--- a/src/components/context/NavbarContext.tsx
+++ b/src/components/context/NavbarContext.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useContext, useEffect } from 'react';
import { INavbarOverride } from 'typings';
diff --git a/src/components/library/LibraryOptionsPanel.tsx b/src/components/library/LibraryOptionsPanel.tsx
index 192d7c50..a215b2d3 100644
--- a/src/components/library/LibraryOptionsPanel.tsx
+++ b/src/components/library/LibraryOptionsPanel.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import { FormLabel, RadioGroup } from '@mui/material';
import CheckboxInput from 'components/atoms/CheckboxInput';
diff --git a/src/components/library/LibraryOptionsProvider.tsx b/src/components/library/LibraryOptionsProvider.tsx
index 7cc04bac..b396a9e3 100644
--- a/src/components/library/LibraryOptionsProvider.tsx
+++ b/src/components/library/LibraryOptionsProvider.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import LibraryOptionsContext, { DefaultLibraryOptions } from 'components/context/LibraryOptionsContext';
import React, { useMemo } from 'react';
diff --git a/src/components/library/LibraryToolbarMenu.tsx b/src/components/library/LibraryToolbarMenu.tsx
index 83b32299..468be59a 100644
--- a/src/components/library/LibraryToolbarMenu.tsx
+++ b/src/components/library/LibraryToolbarMenu.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import FilterList from '@mui/icons-material/FilterList';
import { IconButton } from '@mui/material';
diff --git a/src/components/library/UpdateChecker.tsx b/src/components/library/UpdateChecker.tsx
index 2edd1629..54d664be 100644
--- a/src/components/library/UpdateChecker.tsx
+++ b/src/components/library/UpdateChecker.tsx
@@ -1,3 +1,11 @@
+/*
+ * Copyright (C) Contributors to the Suwayomi project
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+
import React, { useEffect, useState } from 'react';
import IconButton from '@mui/material/IconButton';
import RefreshIcon from '@mui/icons-material/Refresh';
diff --git a/src/components/library/useSubscription.ts b/src/components/library/useSubscription.ts
index 87452594..abaf2087 100644
--- a/src/components/library/useSubscription.ts
+++ b/src/components/library/useSubscription.ts
@@ -1,3 +1,11 @@
+/*
+ * Copyright (C) Contributors to the Suwayomi project
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+
import { useEffect, useState } from 'react';
const baseWebsocketUrl = JSON.parse(window.localStorage.getItem('serverBaseURL')!).replace('http', 'ws');
diff --git a/src/components/manga/ChapterCard.tsx b/src/components/manga/ChapterCard.tsx
index d644a7bf..e12f876d 100644
--- a/src/components/manga/ChapterCard.tsx
+++ b/src/components/manga/ChapterCard.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import BookmarkIcon from '@mui/icons-material/Bookmark';
import BookmarkAdd from '@mui/icons-material/BookmarkAdd';
diff --git a/src/components/manga/ChapterList.tsx b/src/components/manga/ChapterList.tsx
index fa36f0dd..33b5e049 100644
--- a/src/components/manga/ChapterList.tsx
+++ b/src/components/manga/ChapterList.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import { Button, CircularProgress, Stack } from '@mui/material';
import Typography from '@mui/material/Typography';
diff --git a/src/components/manga/ChapterOptions.tsx b/src/components/manga/ChapterOptions.tsx
index d0d0a286..7d5fc9e1 100644
--- a/src/components/manga/ChapterOptions.tsx
+++ b/src/components/manga/ChapterOptions.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import { RadioGroup } from '@mui/material';
import RadioInput from 'components/atoms/RadioInput';
diff --git a/src/components/manga/ChaptersToolbarMenu.tsx b/src/components/manga/ChaptersToolbarMenu.tsx
index 3517129d..4757ead4 100644
--- a/src/components/manga/ChaptersToolbarMenu.tsx
+++ b/src/components/manga/ChaptersToolbarMenu.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import FilterList from '@mui/icons-material/FilterList';
import { IconButton } from '@mui/material';
diff --git a/src/components/manga/MangaDetails.tsx b/src/components/manga/MangaDetails.tsx
index 528a2247..6082c136 100644
--- a/src/components/manga/MangaDetails.tsx
+++ b/src/components/manga/MangaDetails.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import FavoriteIcon from '@mui/icons-material/Favorite';
import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder';
diff --git a/src/components/manga/MangaToolbarMenu.tsx b/src/components/manga/MangaToolbarMenu.tsx
index ffdd2195..076f2353 100644
--- a/src/components/manga/MangaToolbarMenu.tsx
+++ b/src/components/manga/MangaToolbarMenu.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import Label from '@mui/icons-material/Label';
import MoreHoriz from '@mui/icons-material/MoreHoriz';
diff --git a/src/components/manga/ResumeFAB.tsx b/src/components/manga/ResumeFAB.tsx
index aac0265c..2f8be58e 100644
--- a/src/components/manga/ResumeFAB.tsx
+++ b/src/components/manga/ResumeFAB.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React from 'react';
import { Link } from 'react-router-dom';
diff --git a/src/components/manga/SelectionFAB.tsx b/src/components/manga/SelectionFAB.tsx
index 13eb433b..c580ee89 100644
--- a/src/components/manga/SelectionFAB.tsx
+++ b/src/components/manga/SelectionFAB.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import MoreHoriz from '@mui/icons-material/MoreHoriz';
import { Fab, Menu } from '@mui/material';
diff --git a/src/components/manga/SelectionFABActionItem.tsx b/src/components/manga/SelectionFABActionItem.tsx
index 4d1e65ad..9d07a7d1 100644
--- a/src/components/manga/SelectionFABActionItem.tsx
+++ b/src/components/manga/SelectionFABActionItem.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import BookmarkAdd from '@mui/icons-material/BookmarkAdd';
import BookmarkRemove from '@mui/icons-material/BookmarkRemove';
diff --git a/src/components/manga/hooks.ts b/src/components/manga/hooks.ts
index 260a2937..ee4d5ffe 100644
--- a/src/components/manga/hooks.ts
+++ b/src/components/manga/hooks.ts
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import { useCallback, useState } from 'react';
import { mutate } from 'swr';
diff --git a/src/components/manga/util.tsx b/src/components/manga/util.tsx
index c71ba6cb..ac072696 100644
--- a/src/components/manga/util.tsx
+++ b/src/components/manga/util.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import { t } from 'i18next';
import { useReducerLocalStorage } from 'util/useLocalStorage';
diff --git a/src/components/molecules/OptionsPanel.tsx b/src/components/molecules/OptionsPanel.tsx
index de7ccae1..f7d1447c 100644
--- a/src/components/molecules/OptionsPanel.tsx
+++ b/src/components/molecules/OptionsPanel.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import { Drawer } from '@mui/material';
import { Box } from '@mui/system';
diff --git a/src/components/molecules/OptionsTabs.tsx b/src/components/molecules/OptionsTabs.tsx
index 17fbfb4c..f9657c87 100644
--- a/src/components/molecules/OptionsTabs.tsx
+++ b/src/components/molecules/OptionsTabs.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import { Stack, Tab, Tabs } from '@mui/material';
import TabPanel from 'components/util/TabPanel';
diff --git a/src/components/navbar/DefaultNavBar.tsx b/src/components/navbar/DefaultNavBar.tsx
index 1ab9c432..9b8254c5 100644
--- a/src/components/navbar/DefaultNavBar.tsx
+++ b/src/components/navbar/DefaultNavBar.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useContext } from 'react';
import AppBar from '@mui/material/AppBar';
diff --git a/src/components/navbar/NavBarContextProvider.tsx b/src/components/navbar/NavBarContextProvider.tsx
index e4c61b38..a703933f 100644
--- a/src/components/navbar/NavBarContextProvider.tsx
+++ b/src/components/navbar/NavBarContextProvider.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useCallback, useMemo, useState } from 'react';
import NavBarContext from 'components/context/NavbarContext';
diff --git a/src/components/navbar/ReaderNavBar.tsx b/src/components/navbar/ReaderNavBar.tsx
index 50fcb0b7..06cc8c2d 100644
--- a/src/components/navbar/ReaderNavBar.tsx
+++ b/src/components/navbar/ReaderNavBar.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import IconButton from '@mui/material/IconButton';
import CloseIcon from '@mui/icons-material/Close';
diff --git a/src/components/navbar/action/CategorySelect.tsx b/src/components/navbar/action/CategorySelect.tsx
index 2b541258..57687d36 100644
--- a/src/components/navbar/action/CategorySelect.tsx
+++ b/src/components/navbar/action/CategorySelect.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useMemo } from 'react';
import Button from '@mui/material/Button';
diff --git a/src/components/navbar/action/LangSelect.tsx b/src/components/navbar/action/LangSelect.tsx
index ed4963fd..5dfc8d04 100644
--- a/src/components/navbar/action/LangSelect.tsx
+++ b/src/components/navbar/action/LangSelect.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useState } from 'react';
import Button from '@mui/material/Button';
diff --git a/src/components/navbar/navigation/DesktopSideBar.tsx b/src/components/navbar/navigation/DesktopSideBar.tsx
index c187e77c..af590674 100644
--- a/src/components/navbar/navigation/DesktopSideBar.tsx
+++ b/src/components/navbar/navigation/DesktopSideBar.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React from 'react';
import { ListItem, ListItemIcon, Tooltip } from '@mui/material';
diff --git a/src/components/navbar/navigation/MobileBottomBar.tsx b/src/components/navbar/navigation/MobileBottomBar.tsx
index 758c8276..a0a1db11 100644
--- a/src/components/navbar/navigation/MobileBottomBar.tsx
+++ b/src/components/navbar/navigation/MobileBottomBar.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React from 'react';
import { ListItem } from '@mui/material';
diff --git a/src/components/reader/DoublePage.tsx b/src/components/reader/DoublePage.tsx
index 75e9c6a5..c4cd2a21 100644
--- a/src/components/reader/DoublePage.tsx
+++ b/src/components/reader/DoublePage.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React from 'react';
import { Box, styled } from '@mui/system';
diff --git a/src/components/reader/Page.tsx b/src/components/reader/Page.tsx
index 4ea43bda..abe77885 100644
--- a/src/components/reader/Page.tsx
+++ b/src/components/reader/Page.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useRef } from 'react';
import SpinnerImage from 'components/util/SpinnerImage';
diff --git a/src/components/reader/PageNumber.tsx b/src/components/reader/PageNumber.tsx
index 25b20772..742a3e05 100644
--- a/src/components/reader/PageNumber.tsx
+++ b/src/components/reader/PageNumber.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React from 'react';
import { Box } from '@mui/system';
diff --git a/src/components/reader/pager/DoublePagedPager.tsx b/src/components/reader/pager/DoublePagedPager.tsx
index e319db13..7e1090ea 100644
--- a/src/components/reader/pager/DoublePagedPager.tsx
+++ b/src/components/reader/pager/DoublePagedPager.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useEffect, useRef } from 'react';
import ReactDOM from 'react-dom';
diff --git a/src/components/reader/pager/HorizontalPager.tsx b/src/components/reader/pager/HorizontalPager.tsx
index ec88e5e6..b41ddfa5 100644
--- a/src/components/reader/pager/HorizontalPager.tsx
+++ b/src/components/reader/pager/HorizontalPager.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useEffect, useRef } from 'react';
import { Box } from '@mui/system';
diff --git a/src/components/reader/pager/PagedPager.tsx b/src/components/reader/pager/PagedPager.tsx
index 0e49670e..0a797814 100644
--- a/src/components/reader/pager/PagedPager.tsx
+++ b/src/components/reader/pager/PagedPager.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useEffect, useRef } from 'react';
import { Box } from '@mui/system';
diff --git a/src/components/reader/pager/VerticalPager.tsx b/src/components/reader/pager/VerticalPager.tsx
index 1fc7acf8..28a41a7c 100644
--- a/src/components/reader/pager/VerticalPager.tsx
+++ b/src/components/reader/pager/VerticalPager.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useCallback, useEffect, useRef } from 'react';
import { Box } from '@mui/system';
diff --git a/src/components/source/GridLayouts.tsx b/src/components/source/GridLayouts.tsx
index cccf3b97..eadbd8ab 100644
--- a/src/components/source/GridLayouts.tsx
+++ b/src/components/source/GridLayouts.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import { IconButton, Menu, MenuItem, FormControlLabel, Radio } from '@mui/material';
import React from 'react';
diff --git a/src/components/source/filters/CheckBoxFilter.tsx b/src/components/source/filters/CheckBoxFilter.tsx
index 4d3f471e..2a4c6647 100644
--- a/src/components/source/filters/CheckBoxFilter.tsx
+++ b/src/components/source/filters/CheckBoxFilter.tsx
@@ -5,6 +5,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
+
import CheckboxInput from 'components/atoms/CheckboxInput';
import React from 'react';
diff --git a/src/components/source/filters/GroupFilter.tsx b/src/components/source/filters/GroupFilter.tsx
index cb7c76d1..f5f99b1d 100644
--- a/src/components/source/filters/GroupFilter.tsx
+++ b/src/components/source/filters/GroupFilter.tsx
@@ -5,6 +5,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
+
import { ExpandLess, ExpandMore } from '@mui/icons-material';
import { Collapse, ListItemButton, ListItemText, Stack } from '@mui/material';
import { Box } from '@mui/system';
diff --git a/src/components/source/filters/SeparatorFilter.tsx b/src/components/source/filters/SeparatorFilter.tsx
index a2389739..3cad7ce2 100644
--- a/src/components/source/filters/SeparatorFilter.tsx
+++ b/src/components/source/filters/SeparatorFilter.tsx
@@ -5,6 +5,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
+
import { Divider } from '@mui/material';
import React from 'react';
diff --git a/src/components/source/filters/SortFilter.tsx b/src/components/source/filters/SortFilter.tsx
index 8e3b3ac4..7009a6ff 100644
--- a/src/components/source/filters/SortFilter.tsx
+++ b/src/components/source/filters/SortFilter.tsx
@@ -5,6 +5,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
+
import { ExpandLess, ExpandMore } from '@mui/icons-material';
import { Collapse, ListItemButton, ListItemText, Stack } from '@mui/material';
import { Box } from '@mui/system';
diff --git a/src/components/source/filters/TextFilter.tsx b/src/components/source/filters/TextFilter.tsx
index f395ab3e..0d1005da 100644
--- a/src/components/source/filters/TextFilter.tsx
+++ b/src/components/source/filters/TextFilter.tsx
@@ -5,6 +5,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
+
import SearchIcon from '@mui/icons-material/Search';
import { FormControl, Input, InputAdornment, InputLabel } from '@mui/material';
import React from 'react';
diff --git a/src/components/source/filters/TriStateFilter.tsx b/src/components/source/filters/TriStateFilter.tsx
index 0dde50fa..7f4a91fc 100644
--- a/src/components/source/filters/TriStateFilter.tsx
+++ b/src/components/source/filters/TriStateFilter.tsx
@@ -5,6 +5,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
+
import ThreeStateCheckboxInput from 'components/atoms/ThreeStateCheckboxInput';
import React from 'react';
diff --git a/src/components/sourceConfiguration/EditTextPreference.tsx b/src/components/sourceConfiguration/EditTextPreference.tsx
index 520f8b6d..b3f54574 100644
--- a/src/components/sourceConfiguration/EditTextPreference.tsx
+++ b/src/components/sourceConfiguration/EditTextPreference.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useState } from 'react';
import ListItem from '@mui/material/ListItem';
diff --git a/src/components/sourceConfiguration/ListPreference.tsx b/src/components/sourceConfiguration/ListPreference.tsx
index e0ad2402..216476ff 100644
--- a/src/components/sourceConfiguration/ListPreference.tsx
+++ b/src/components/sourceConfiguration/ListPreference.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useState, useEffect } from 'react';
import ListItem from '@mui/material/ListItem';
diff --git a/src/components/sourceConfiguration/MultiSelectListPreference.tsx b/src/components/sourceConfiguration/MultiSelectListPreference.tsx
index d129c068..bf3335b1 100644
--- a/src/components/sourceConfiguration/MultiSelectListPreference.tsx
+++ b/src/components/sourceConfiguration/MultiSelectListPreference.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useState, useEffect } from 'react';
import ListItem from '@mui/material/ListItem';
diff --git a/src/components/sourceConfiguration/TwoStatePreference.tsx b/src/components/sourceConfiguration/TwoStatePreference.tsx
index f4898105..36fad6b2 100644
--- a/src/components/sourceConfiguration/TwoStatePreference.tsx
+++ b/src/components/sourceConfiguration/TwoStatePreference.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useState, useEffect } from 'react';
import ListItem from '@mui/material/ListItem';
diff --git a/src/components/util/CustomExtensionOutlinedIcon.tsx b/src/components/util/CustomExtensionOutlinedIcon.tsx
index 38213db7..575ea7d2 100644
--- a/src/components/util/CustomExtensionOutlinedIcon.tsx
+++ b/src/components/util/CustomExtensionOutlinedIcon.tsx
@@ -1,3 +1,11 @@
+/*
+ * Copyright (C) Contributors to the Suwayomi project
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+
import React from 'react';
import createSvgIcon from '@mui/material/utils/createSvgIcon';
diff --git a/src/components/util/EmptyView.tsx b/src/components/util/EmptyView.tsx
index 610708d6..c59688ff 100644
--- a/src/components/util/EmptyView.tsx
+++ b/src/components/util/EmptyView.tsx
@@ -3,7 +3,9 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+
// adopted from: https://github.com/tachiyomiorg/tachiyomi/blob/master/app/src/main/java/eu/kanade/tachiyomi/widget/EmptyView.kt
import React, { useMemo } from 'react';
diff --git a/src/components/util/ListItemLink.tsx b/src/components/util/ListItemLink.tsx
index 637a93bc..dafcc04c 100644
--- a/src/components/util/ListItemLink.tsx
+++ b/src/components/util/ListItemLink.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React from 'react';
import ListItem, { ListItemProps } from '@mui/material/ListItem';
diff --git a/src/components/util/LoadingPlaceholder.tsx b/src/components/util/LoadingPlaceholder.tsx
index 0f7bce6e..d615ddb9 100644
--- a/src/components/util/LoadingPlaceholder.tsx
+++ b/src/components/util/LoadingPlaceholder.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React from 'react';
import CircularProgress from '@mui/material/CircularProgress';
diff --git a/src/components/util/SpinnerImage.tsx b/src/components/util/SpinnerImage.tsx
index 4b2fa706..5eea2121 100644
--- a/src/components/util/SpinnerImage.tsx
+++ b/src/components/util/SpinnerImage.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useEffect, useState, CSSProperties } from 'react';
import CircularProgress from '@mui/material/CircularProgress';
diff --git a/src/components/util/StyledFab.tsx b/src/components/util/StyledFab.tsx
index 59a7cfa3..b894dc55 100644
--- a/src/components/util/StyledFab.tsx
+++ b/src/components/util/StyledFab.tsx
@@ -1,3 +1,11 @@
+/*
+ * Copyright (C) Contributors to the Suwayomi project
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+
import { Fab } from '@mui/material';
import { styled } from '@mui/system';
diff --git a/src/components/util/TabPanel.tsx b/src/components/util/TabPanel.tsx
index a320633f..a992eb31 100644
--- a/src/components/util/TabPanel.tsx
+++ b/src/components/util/TabPanel.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React from 'react';
diff --git a/src/components/util/Toast.tsx b/src/components/util/Toast.tsx
index 795a1eab..3f6e222b 100644
--- a/src/components/util/Toast.tsx
+++ b/src/components/util/Toast.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import ReactDOM from 'react-dom';
import React from 'react';
diff --git a/src/i18n/i18next.d.ts b/src/i18n/i18next.d.ts
index d64f1282..01ce1df5 100644
--- a/src/i18n/i18next.d.ts
+++ b/src/i18n/i18next.d.ts
@@ -1,3 +1,11 @@
+/*
+ * Copyright (C) Contributors to the Suwayomi project
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+
import 'i18next';
import resources from 'i18n/translations';
diff --git a/src/i18n/index.ts b/src/i18n/index.ts
index af249f16..6fe53cad 100644
--- a/src/i18n/index.ts
+++ b/src/i18n/index.ts
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import { use } from 'i18next';
import { initReactI18next } from 'react-i18next';
diff --git a/src/i18n/translations.ts b/src/i18n/translations.ts
index 81bd0187..71aa52fb 100644
--- a/src/i18n/translations.ts
+++ b/src/i18n/translations.ts
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import en from 'i18n/locale/en.json';
diff --git a/src/index.tsx b/src/index.tsx
index 45dd6a9f..5a53943d 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React from 'react';
import ReactDOM from 'react-dom';
diff --git a/src/react-app-env.d.ts b/src/react-app-env.d.ts
index 87b106f7..2f00a39d 100644
--- a/src/react-app-env.d.ts
+++ b/src/react-app-env.d.ts
@@ -3,6 +3,7 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
///
diff --git a/src/screens/Browse.tsx b/src/screens/Browse.tsx
index 43c460d0..81f77fd7 100644
--- a/src/screens/Browse.tsx
+++ b/src/screens/Browse.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useState } from 'react';
import Tabs from '@mui/material/Tabs';
diff --git a/src/screens/DownloadQueue.tsx b/src/screens/DownloadQueue.tsx
index dd1d8442..30acf7fd 100644
--- a/src/screens/DownloadQueue.tsx
+++ b/src/screens/DownloadQueue.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import DeleteIcon from '@mui/icons-material/Delete';
import DragHandle from '@mui/icons-material/DragHandle';
diff --git a/src/screens/Extensions.tsx b/src/screens/Extensions.tsx
index 58e9ca53..235e41ac 100644
--- a/src/screens/Extensions.tsx
+++ b/src/screens/Extensions.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useContext, useEffect, useMemo, useRef, useState } from 'react';
import { fromEvent } from 'file-selector';
diff --git a/src/screens/Library.tsx b/src/screens/Library.tsx
index 31f3d8b2..668635af 100644
--- a/src/screens/Library.tsx
+++ b/src/screens/Library.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import { Chip, Tab, Tabs } from '@mui/material';
import React, { useContext, useEffect, useMemo, useState } from 'react';
diff --git a/src/screens/Manga.tsx b/src/screens/Manga.tsx
index 79c89fda..4a493b16 100644
--- a/src/screens/Manga.tsx
+++ b/src/screens/Manga.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import { Warning } from '@mui/icons-material';
import { CircularProgress, IconButton, Stack, Tooltip } from '@mui/material';
diff --git a/src/screens/Reader.tsx b/src/screens/Reader.tsx
index 095df777..c3a508ca 100644
--- a/src/screens/Reader.tsx
+++ b/src/screens/Reader.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import CircularProgress from '@mui/material/CircularProgress';
import React, { useCallback, useContext, useEffect, useState } from 'react';
diff --git a/src/screens/Settings.tsx b/src/screens/Settings.tsx
index 0aab8a2d..9db46193 100644
--- a/src/screens/Settings.tsx
+++ b/src/screens/Settings.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useContext, useEffect, useState } from 'react';
import AutoStoriesIcon from '@mui/icons-material/AutoStories';
diff --git a/src/screens/SourceConfigure.tsx b/src/screens/SourceConfigure.tsx
index 299f408e..b7d57724 100644
--- a/src/screens/SourceConfigure.tsx
+++ b/src/screens/SourceConfigure.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useContext, useEffect } from 'react';
import NavbarContext from 'components/context/NavbarContext';
diff --git a/src/screens/SourceMangas.tsx b/src/screens/SourceMangas.tsx
index f53c2e1f..d09daa9b 100644
--- a/src/screens/SourceMangas.tsx
+++ b/src/screens/SourceMangas.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useContext, useEffect, useState } from 'react';
import { useParams, useHistory } from 'react-router-dom';
diff --git a/src/screens/Sources.tsx b/src/screens/Sources.tsx
index 5ebcb71b..94625112 100644
--- a/src/screens/Sources.tsx
+++ b/src/screens/Sources.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useContext, useEffect } from 'react';
import LangSelect from 'components/navbar/action/LangSelect';
diff --git a/src/screens/Updates.tsx b/src/screens/Updates.tsx
index 094f8692..897f2e0a 100644
--- a/src/screens/Updates.tsx
+++ b/src/screens/Updates.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import DownloadIcon from '@mui/icons-material/Download';
import { CardActionArea } from '@mui/material';
diff --git a/src/screens/settings/About.tsx b/src/screens/settings/About.tsx
index 2de77f90..7f8b55ac 100644
--- a/src/screens/settings/About.tsx
+++ b/src/screens/settings/About.tsx
@@ -1,3 +1,11 @@
+/*
+ * Copyright (C) Contributors to the Suwayomi project
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+
import React, { useContext, useEffect } from 'react';
import List from '@mui/material/List';
import ListItem from '@mui/material/ListItem';
diff --git a/src/screens/settings/Backup.tsx b/src/screens/settings/Backup.tsx
index a9cae24a..ad4e3e34 100644
--- a/src/screens/settings/Backup.tsx
+++ b/src/screens/settings/Backup.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useContext, useEffect } from 'react';
import List from '@mui/material/List';
diff --git a/src/screens/settings/Categories.tsx b/src/screens/settings/Categories.tsx
index ecaab2bc..ec10a141 100644
--- a/src/screens/settings/Categories.tsx
+++ b/src/screens/settings/Categories.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useMemo, useState, useContext, useEffect } from 'react';
import { List, ListItem, ListItemText, ListItemIcon, IconButton } from '@mui/material';
diff --git a/src/screens/settings/SearchSettings.tsx b/src/screens/settings/SearchSettings.tsx
index 6858e9a9..7dc33023 100644
--- a/src/screens/settings/SearchSettings.tsx
+++ b/src/screens/settings/SearchSettings.tsx
@@ -1,3 +1,11 @@
+/*
+ * Copyright (C) Contributors to the Suwayomi project
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+
import { ListItem, ListItemText, Switch } from '@mui/material';
import ListItemSecondaryAction from '@mui/material/ListItemSecondaryAction';
import React from 'react';
diff --git a/src/screens/util/Extensions.ts b/src/screens/util/Extensions.ts
index 46180e01..a14461e0 100644
--- a/src/screens/util/Extensions.ts
+++ b/src/screens/util/Extensions.ts
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import { IExtension, TranslationKey } from 'typings';
import { DefaultLanguage, langCodeToName } from 'util/language';
diff --git a/src/typings.ts b/src/typings.ts
index 462bbea1..965ceabf 100644
--- a/src/typings.ts
+++ b/src/typings.ts
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import { OverridableComponent } from '@mui/material/OverridableComponent';
import { SvgIconTypeMap } from '@mui/material/SvgIcon/SvgIcon';
diff --git a/src/util/client.tsx b/src/util/client.tsx
index 51a7546f..877cb71b 100644
--- a/src/util/client.tsx
+++ b/src/util/client.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import axios from 'axios';
import useSWR, { SWRConfiguration, SWRResponse } from 'swr';
diff --git a/src/util/cloneObject.tsx b/src/util/cloneObject.tsx
index 0460e952..bb7bb4c2 100644
--- a/src/util/cloneObject.tsx
+++ b/src/util/cloneObject.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
export default function cloneObject(obj: T) {
return JSON.parse(JSON.stringify(obj)) as T;
diff --git a/src/util/date.ts b/src/util/date.ts
index 1daac10d..964a70a9 100644
--- a/src/util/date.ts
+++ b/src/util/date.ts
@@ -5,6 +5,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
+
import { t } from 'i18next';
export const isWithinLastXMillis = (date: Date, timeMS: number) => {
diff --git a/src/util/language.tsx b/src/util/language.tsx
index 85ed7bc3..066cc579 100644
--- a/src/util/language.tsx
+++ b/src/util/language.tsx
@@ -3,7 +3,9 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+
import { t } from 'i18next';
export enum DefaultLanguage {
diff --git a/src/util/localStorage.tsx b/src/util/localStorage.tsx
index 478e20e8..5da9219b 100644
--- a/src/util/localStorage.tsx
+++ b/src/util/localStorage.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
function getItem(key: string, defaultValue: T): T {
const item = window.localStorage.getItem(key);
diff --git a/src/util/searchSettings.ts b/src/util/searchSettings.ts
index 18f4ee2d..796f1c18 100644
--- a/src/util/searchSettings.ts
+++ b/src/util/searchSettings.ts
@@ -1,3 +1,11 @@
+/*
+ * Copyright (C) Contributors to the Suwayomi project
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
+
import { useQuery } from 'util/client';
import { getMetadataFrom } from 'util/metadata';
import { Metadata, ISearchSettings } from 'typings';
diff --git a/src/util/useBackTo.ts b/src/util/useBackTo.ts
index 6abc9693..1754da77 100644
--- a/src/util/useBackTo.ts
+++ b/src/util/useBackTo.ts
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import { useNavBarContext } from 'components/context/NavbarContext';
import { useLocation } from 'react-router-dom';
diff --git a/src/util/useLocalStorage.tsx b/src/util/useLocalStorage.tsx
index 3b952af2..9217c001 100644
--- a/src/util/useLocalStorage.tsx
+++ b/src/util/useLocalStorage.tsx
@@ -3,7 +3,8 @@
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
+ */
import React, { useState, Dispatch, SetStateAction, useReducer, Reducer, useCallback } from 'react';
import storage from 'util/localStorage';
diff --git a/yarn.lock b/yarn.lock
index 31d7a322..067e2126 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5314,6 +5314,11 @@ eslint-plugin-flowtype@^8.0.3:
lodash "^4.17.21"
string-natural-compare "^3.0.1"
+eslint-plugin-header@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-header/-/eslint-plugin-header-3.1.1.tgz#6ce512432d57675265fac47292b50d1eff11acd6"
+ integrity sha512-9vlKxuJ4qf793CmeeSrZUvVClw6amtpghq3CuWcB5cUNnWHQhgcqy5eF8oVKFk1G3Y/CbchGfEaw3wiIJaNmVg==
+
eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.27.5:
version "2.27.5"
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65"