From: Jay Sitter <jay@jaysitter.com> Date: Thu, 22 Jun 2023 04:54:07 +0000 (-0400) Subject: feat: Default language dropdowns to user's primary language X-Git-Url: http://these/git/readmes/%7B%60%24%7BarchiveTodayUrl%7D/%24%7BgetStaticDir%28%29%7D/styles/styles.css?a=commitdiff_plain;h=f0375889d3c9a558cbb5978110bf4b334326c7df;p=lemmy-ui.git feat: Default language dropdowns to user's primary language --- diff --git a/src/shared/components/comment/comment-form.tsx b/src/shared/components/comment/comment-form.tsx index 294960a..11366fc 100644 --- a/src/shared/components/comment/comment-form.tsx +++ b/src/shared/components/comment/comment-form.tsx @@ -1,4 +1,5 @@ import { myAuthRequired } from "@utils/app"; +import getUserPrimaryLanguage from "@utils/app/user-primary-language"; import { capitalizeFirstLetter } from "@utils/helpers"; import { Component } from "inferno"; import { T } from "inferno-i18next-dess"; @@ -40,6 +41,10 @@ export class CommentForm extends Component<CommentFormProps, any> { : undefined : undefined; + const userPrimaryLanguage = getUserPrimaryLanguage( + UserService?.Instance?.myUserInfo + ); + return ( <div className={["comment-form", "mb-3", this.props.containerClass].join( @@ -49,6 +54,7 @@ export class CommentForm extends Component<CommentFormProps, any> { {UserService.Instance.myUserInfo ? ( <MarkdownTextArea initialContent={initialContent} + initialLanguageId={userPrimaryLanguage} showLanguage buttonTitle={this.buttonTitle} finished={this.props.finished} diff --git a/src/shared/components/post/post-form.tsx b/src/shared/components/post/post-form.tsx index d2793fa..337cc6e 100644 --- a/src/shared/components/post/post-form.tsx +++ b/src/shared/components/post/post-form.tsx @@ -4,6 +4,7 @@ import { myAuth, myAuthRequired, } from "@utils/app"; +import getUserPrimaryLanguage from "@utils/app/user-primary-language"; import { capitalizeFirstLetter, debounce, @@ -323,8 +324,9 @@ export class PostForm extends Component<PostFormProps, PostFormState> { } render() { - const firstLang = this.state.form.language_id; - const selectedLangs = firstLang ? Array.of(firstLang) : undefined; + const userPrimaryLanguage = getUserPrimaryLanguage( + UserService?.Instance?.myUserInfo + ); const url = this.state.form.url; @@ -494,8 +496,8 @@ export class PostForm extends Component<PostFormProps, PostFormState> { </div> <LanguageSelect allLanguages={this.props.allLanguages} + selectedLanguageIds={[userPrimaryLanguage]} siteLanguages={this.props.siteLanguages} - selectedLanguageIds={selectedLangs} multiple={false} onChange={this.handleLanguageChange} /> diff --git a/src/shared/utils/app/index.ts b/src/shared/utils/app/index.ts index cdae267..2d2f09e 100644 --- a/src/shared/utils/app/index.ts +++ b/src/shared/utils/app/index.ts @@ -52,6 +52,7 @@ import showScores from "./show-scores"; import siteBannerCss from "./site-banner-css"; import updateCommunityBlock from "./update-community-block"; import updatePersonBlock from "./update-person-block"; +import getUserPrimaryLanguage from "./user-primary-language"; export { buildCommentsTree, @@ -86,6 +87,7 @@ export { getIdFromProps, getRecipientIdFromProps, getUpdatedSearchId, + getUserPrimaryLanguage, initializeSite, insertCommentIntoTree, isAuthPath, diff --git a/src/shared/utils/app/user-primary-language.ts b/src/shared/utils/app/user-primary-language.ts new file mode 100644 index 0000000..06ae259 --- /dev/null +++ b/src/shared/utils/app/user-primary-language.ts @@ -0,0 +1,9 @@ +import { UserService } from "../../services"; + +export default function getUserPrimaryLanguage( + myUserInfo = UserService.Instance.myUserInfo +): number { + // Get first language in discussion languages array that isn't equal to "0", + // which is the language selection "Undetermined" + return myUserInfo?.discussion_languages.find(lang => lang !== 0) || 0; +}