]> Untitled Git - lemmy-ui.git/blob - src/shared/utils/app/selectable-languages.ts
8079abdc08d37f22ecce4352d88f88f085fab7ea
[lemmy-ui.git] / src / shared / utils / app / selectable-languages.ts
1 import { Language } from "lemmy-js-client";
2 import { UserService } from "../../services";
3
4 /**
5  * This shows what language you can select
6  *
7  * Use showAll for the site form
8  * Use showSite for the profile and community forms
9  * Use false for both those to filter on your profile and site ones
10  */
11 export default function selectableLanguages(
12   allLanguages: Language[],
13   siteLanguages: number[],
14   showAll?: boolean,
15   showSite?: boolean,
16   myUserInfo = UserService.Instance.myUserInfo
17 ): Language[] {
18   const allLangIds = allLanguages.map(l => l.id);
19   let myLangs = myUserInfo?.discussion_languages ?? allLangIds;
20   myLangs = myLangs.length == 0 ? allLangIds : myLangs;
21   const siteLangs = siteLanguages.length == 0 ? allLangIds : siteLanguages;
22
23   if (showAll) {
24     return allLanguages;
25   } else {
26     if (showSite) {
27       return allLanguages.filter(x => siteLangs.includes(x.id));
28     } else {
29       return allLanguages
30         .filter(x => siteLangs.includes(x.id))
31         .filter(x => myLangs.includes(x.id));
32     }
33   }
34 }