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;
+}