mirror of
https://github.com/sergeyyarkov/yarkov.tech.git
synced 2026-10-11 10:29:21 +03:00
some refactor
This commit is contained in:
parent
c92c15c8e8
commit
2d94f31c16
@ -12,6 +12,7 @@ export function formatArticlesByLangs(data: Record<string, MDXInstance<ArticleTy
|
|||||||
const splitted = module.file.split("/");
|
const splitted = module.file.split("/");
|
||||||
const lang = splitted.at(-2);
|
const lang = splitted.at(-2);
|
||||||
const name = splitted.at(-3);
|
const name = splitted.at(-3);
|
||||||
|
|
||||||
if (!modules[name]) modules[name] = {};
|
if (!modules[name]) modules[name] = {};
|
||||||
modules[name][lang] = module;
|
modules[name][lang] = module;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,22 +8,19 @@ class ArticleService {
|
|||||||
const modules = formatArticlesByLangs(data);
|
const modules = formatArticlesByLangs(data);
|
||||||
const siteLang = getLanguageFromURL(Astro.url.pathname);
|
const siteLang = getLanguageFromURL(Astro.url.pathname);
|
||||||
const articles: MDXInstance<ArticleType>[] = [];
|
const articles: MDXInstance<ArticleType>[] = [];
|
||||||
|
const push = (article: MDXInstance<ArticleType>, lang: LanguageKeys) => {
|
||||||
|
articles.push(article);
|
||||||
|
article.frontmatter.lang = lang;
|
||||||
|
};
|
||||||
|
|
||||||
for (const key of Object.keys(modules)) {
|
for (const key of Object.keys(modules)) {
|
||||||
const langs = Object.keys(modules[key]);
|
const langs = Object.keys(modules[key]) as LanguageKeys[];
|
||||||
for (const articleLang of langs) {
|
for (const lang of langs) {
|
||||||
const isNonDefaultLanguage = !langs.includes(siteLang) && langs.length === 1;
|
const isNonDefaultLanguage = !langs.includes(siteLang) && langs.length === 1;
|
||||||
const article = modules[key];
|
const article = modules[key];
|
||||||
|
|
||||||
if (articleLang === siteLang) {
|
if (lang === siteLang) push(article[siteLang], siteLang);
|
||||||
articles.push(article[siteLang]);
|
if (isNonDefaultLanguage) push(article[lang], lang);
|
||||||
article[siteLang].frontmatter.lang = siteLang;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isNonDefaultLanguage) {
|
|
||||||
articles.push(article[articleLang]);
|
|
||||||
article[articleLang].frontmatter.lang = articleLang;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,8 +7,8 @@ export const encode = (data: object) => {
|
|||||||
.join("&");
|
.join("&");
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getLanguageFromURL = (pathname: string) => {
|
export const getLanguageFromURL = (pathname: string): LanguageKeys => {
|
||||||
const lang = pathname.split("/")[1];
|
const lang = pathname.split("/")[1] as LanguageKeys;
|
||||||
if (Object.hasOwn(languages, lang)) return lang;
|
if (Object.hasOwn(languages, lang)) return lang;
|
||||||
return DEFAULT_LANGUAGE;
|
return DEFAULT_LANGUAGE;
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user