From f0375889d3c9a558cbb5978110bf4b334326c7df Mon Sep 17 00:00:00 2001 From: Jay Sitter <jay@jaysitter.com> Date: Thu, 22 Jun 2023 00:54:07 -0400 Subject: [PATCH] feat: Default language dropdowns to user's primary language --- src/shared/components/comment/comment-form.tsx | 6 ++++++ src/shared/components/post/post-form.tsx | 8 +++++--- src/shared/utils/app/index.ts | 2 ++ src/shared/utils/app/user-primary-language.ts | 9 +++++++++ 4 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 src/shared/utils/app/user-primary-language.ts 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; +} -- 2.44.1