default languages cleanup, force Local source enabled

This commit is contained in:
Aria Moradi
2021-10-18 14:02:51 +03:30
parent 2049c329d7
commit 23c8e649a1
5 changed files with 44 additions and 18 deletions

View File

@@ -11,7 +11,7 @@ import NavbarContext from 'context/NavbarContext';
import client from 'util/client'; import client from 'util/client';
import useLocalStorage from 'util/useLocalStorage'; import useLocalStorage from 'util/useLocalStorage';
import ExtensionLangSelect from 'components/manga/ExtensionLangSelect'; import ExtensionLangSelect from 'components/manga/ExtensionLangSelect';
import { defualtLangs, langCodeToName, langSortCmp } from 'util/language'; import { extensionDefaultLangs, langCodeToName, langSortCmp } from 'util/language';
const allLangs: string[] = []; const allLangs: string[] = [];
@@ -42,10 +42,6 @@ function groupExtensions(extensions: IExtension[]) {
return result; return result;
} }
function extensionDefaultLangs() {
return [...defualtLangs(), 'all'];
}
export default function AnimeExtensions() { export default function AnimeExtensions() {
const { setTitle, setAction } = useContext(NavbarContext); const { setTitle, setAction } = useContext(NavbarContext);
const [shownLangs, setShownLangs] = useLocalStorage<string[]>('shownExtensionLangs', extensionDefaultLangs()); const [shownLangs, setShownLangs] = useLocalStorage<string[]>('shownExtensionLangs', extensionDefaultLangs());

View File

@@ -10,7 +10,7 @@ import ExtensionLangSelect from 'components/manga/ExtensionLangSelect';
import SourceCard from 'components/anime/SourceCard'; import SourceCard from 'components/anime/SourceCard';
import NavbarContext from 'context/NavbarContext'; import NavbarContext from 'context/NavbarContext';
import client from 'util/client'; import client from 'util/client';
import { defualtLangs, langCodeToName, langSortCmp } from 'util/language'; import { sourceDefualtLangs, langCodeToName, langSortCmp } from 'util/language';
import useLocalStorage from 'util/useLocalStorage'; import useLocalStorage from 'util/useLocalStorage';
function sourceToLangList(sources: ISource[]) { function sourceToLangList(sources: ISource[]) {
@@ -37,7 +37,7 @@ function groupByLang(sources: ISource[]) {
export default function AnimeSources() { export default function AnimeSources() {
const { setTitle, setAction } = useContext(NavbarContext); const { setTitle, setAction } = useContext(NavbarContext);
const [shownLangs, setShownLangs] = useLocalStorage<string[]>('shownSourceLangs', defualtLangs()); const [shownLangs, setShownLangs] = useLocalStorage<string[]>('shownSourceLangs', sourceDefualtLangs());
const [sources, setSources] = useState<ISource[]>([]); const [sources, setSources] = useState<ISource[]>([]);
const [fetched, setFetched] = useState<boolean>(false); const [fetched, setFetched] = useState<boolean>(false);

View File

@@ -14,7 +14,7 @@ import NavbarContext from 'context/NavbarContext';
import client from 'util/client'; import client from 'util/client';
import useLocalStorage from 'util/useLocalStorage'; import useLocalStorage from 'util/useLocalStorage';
import ExtensionLangSelect from 'components/manga/ExtensionLangSelect'; import ExtensionLangSelect from 'components/manga/ExtensionLangSelect';
import { defualtLangs, langCodeToName, langSortCmp } from 'util/language'; import { extensionDefaultLangs, langCodeToName, langSortCmp } from 'util/language';
import { makeToaster } from 'components/Toast'; import { makeToaster } from 'components/Toast';
const allLangs: string[] = []; const allLangs: string[] = [];
@@ -46,10 +46,6 @@ function groupExtensions(extensions: IExtension[]) {
return result; return result;
} }
function extensionDefaultLangs() {
return [...defualtLangs(), 'all'];
}
export default function MangaExtensions() { export default function MangaExtensions() {
const { setTitle, setAction } = useContext(NavbarContext); const { setTitle, setAction } = useContext(NavbarContext);
const [shownLangs, setShownLangs] = useLocalStorage<string[]>('shownExtensionLangs', extensionDefaultLangs()); const [shownLangs, setShownLangs] = useLocalStorage<string[]>('shownExtensionLangs', extensionDefaultLangs());

View File

@@ -10,7 +10,9 @@ import ExtensionLangSelect from 'components/manga/ExtensionLangSelect';
import SourceCard from 'components/manga/SourceCard'; import SourceCard from 'components/manga/SourceCard';
import NavbarContext from 'context/NavbarContext'; import NavbarContext from 'context/NavbarContext';
import client from 'util/client'; import client from 'util/client';
import { defualtLangs, langCodeToName, langSortCmp } from 'util/language'; import {
sourceDefualtLangs, sourceForcedDefaultLangs, langCodeToName, langSortCmp,
} from 'util/language';
import useLocalStorage from 'util/useLocalStorage'; import useLocalStorage from 'util/useLocalStorage';
function sourceToLangList(sources: ISource[]) { function sourceToLangList(sources: ISource[]) {
@@ -37,12 +39,28 @@ function groupByLang(sources: ISource[]) {
export default function MangaSources() { export default function MangaSources() {
const { setTitle, setAction } = useContext(NavbarContext); const { setTitle, setAction } = useContext(NavbarContext);
const [shownLangs, setShownLangs] = useLocalStorage<string[]>('shownSourceLangs', defualtLangs()); const [shownLangs, setShownLangs] = useLocalStorage<string[]>('shownSourceLangs', sourceDefualtLangs());
const [showNsfw] = useLocalStorage<boolean>('showNsfw', true); const [showNsfw] = useLocalStorage<boolean>('showNsfw', true);
const [sources, setSources] = useState<ISource[]>([]); const [sources, setSources] = useState<ISource[]>([]);
const [fetched, setFetched] = useState<boolean>(false); const [fetched, setFetched] = useState<boolean>(false);
useEffect(() => {
// make sure all of forcedDefaultLangs() exists in shownLangs
sourceForcedDefaultLangs().forEach((forcedLang) => {
let hasLang = false;
shownLangs.forEach((lang) => {
if (lang === forcedLang) hasLang = true;
});
if (!hasLang) {
setShownLangs((shownLangsCopy) => {
shownLangsCopy.push(forcedLang);
return shownLangsCopy;
});
}
});
}, [shownLangs]);
useEffect(() => { useEffect(() => {
setTitle('Sources'); setTitle('Sources');
setAction( setAction(

View File

@@ -93,11 +93,27 @@ export function langCodeToName(code: string): string {
return result; return result;
} }
export function defualtLangs() { function defaultNativeLang() {
return 'en'; // TODO: infer from the browser
}
export function extensionDefaultLangs() {
return [ return [
// todo: infer this from the browser defaultNativeLang(),
'en', 'all',
'localSourceLang', ];
}
export function sourceDefualtLangs() {
return [
defaultNativeLang(),
'localsourcelang',
];
}
export function sourceForcedDefaultLangs(): string[] {
return [
'localsourcelang',
]; ];
} }