]> Untitled Git - lemmy-ui.git/commitdiff
Merge branch 'main' into feat/create-private-message-updates
authorJay Sitter <jsit@users.noreply.github.com>
Sat, 24 Jun 2023 20:30:35 +0000 (16:30 -0400)
committerGitHub <noreply@github.com>
Sat, 24 Jun 2023 20:30:35 +0000 (16:30 -0400)
src/shared/components/comment/comment-form.tsx
src/shared/components/common/language-select.tsx
src/shared/components/common/markdown-textarea.tsx
src/shared/components/post/post-form.tsx
src/shared/utils/app/index.ts
src/shared/utils/app/user-interface-language.ts [new file with mode: 0644]

index 294960a812d35711983c4e33728189ae74fb7e36..c9937c6292b6771fe43134a4cf0402becff56015 100644 (file)
@@ -1,4 +1,5 @@
 import { myAuthRequired } from "@utils/app";
+import getUserInterfaceLangId from "@utils/app/user-interface-language";
 import { capitalizeFirstLetter } from "@utils/helpers";
 import { Component } from "inferno";
 import { T } from "inferno-i18next-dess";
@@ -40,6 +41,8 @@ export class CommentForm extends Component<CommentFormProps, any> {
           : undefined
         : undefined;
 
+    const userInterfaceLangId = getUserInterfaceLangId(this.props.allLanguages);
+
     return (
       <div
         className={["comment-form", "mb-3", this.props.containerClass].join(
@@ -49,6 +52,7 @@ export class CommentForm extends Component<CommentFormProps, any> {
         {UserService.Instance.myUserInfo ? (
           <MarkdownTextArea
             initialContent={initialContent}
+            initialLanguageId={userInterfaceLangId}
             showLanguage
             buttonTitle={this.buttonTitle}
             finished={this.props.finished}
index c74f24cd6d1a88258ce0e13a3a7a4d62d2f71737..03d868bea7018ee001ed0517b573bc28d9752dc2 100644 (file)
@@ -49,7 +49,7 @@ export class LanguageSelect extends Component<LanguageSelectProps, any> {
     return this.props.iconVersion ? (
       this.selectBtn
     ) : (
-      <div className="language-select mb-3">
+      <div className="language-select row mb-3">
         <label
           className={classNames(
             "col-form-label",
index f83843e9017eed321fd087d27498b64af210c23f..2590609745aad49d144b7d0d431785d409072bc3 100644 (file)
@@ -273,8 +273,12 @@ export class MarkdownTextArea extends Component<
               <LanguageSelect
                 iconVersion
                 allLanguages={this.props.allLanguages}
+                // Only set the selected language ID if it exists as an option
+                // in the dropdown; otherwise, set it to 0 (Undetermined)
                 selectedLanguageIds={
-                  languageId ? Array.of(languageId) : undefined
+                  languageId && this.props.siteLanguages.includes(languageId)
+                    ? [languageId]
+                    : [0]
                 }
                 siteLanguages={this.props.siteLanguages}
                 onChange={this.handleLanguageChange}
index d2793fa2810e529f2c78e0be0dd8f9c058cec1de..ebea432479d69fabf3dc7d3ed984d317820f8132 100644 (file)
@@ -4,6 +4,7 @@ import {
   myAuth,
   myAuthRequired,
 } from "@utils/app";
+import getUserInterfaceLangId from "@utils/app/user-interface-language";
 import {
   capitalizeFirstLetter,
   debounce,
@@ -323,11 +324,10 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
   }
 
   render() {
-    const firstLang = this.state.form.language_id;
-    const selectedLangs = firstLang ? Array.of(firstLang) : undefined;
-
     const url = this.state.form.url;
 
+    const userInterfaceLangId = getUserInterfaceLangId(this.props.allLanguages);
+
     return (
       <form className="post-form" onSubmit={linkEvent(this, handlePostSubmit)}>
         <NavigationPrompt
@@ -494,8 +494,8 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
         </div>
         <LanguageSelect
           allLanguages={this.props.allLanguages}
+          selectedLanguageIds={[userInterfaceLangId]}
           siteLanguages={this.props.siteLanguages}
-          selectedLanguageIds={selectedLangs}
           multiple={false}
           onChange={this.handleLanguageChange}
         />
index 9993ac7230dc18c0c4f6034d1df43df74960d151..f98357d7a9150d6259d617018d894d64bd827142 100644 (file)
@@ -53,6 +53,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 getUserInterfaceLangId from "./user-interface-language";
 
 export {
   buildCommentsTree,
@@ -87,6 +88,7 @@ export {
   getIdFromProps,
   getRecipientIdFromProps,
   getUpdatedSearchId,
+  getUserInterfaceLangId,
   initializeSite,
   insertCommentIntoTree,
   isAuthPath,
diff --git a/src/shared/utils/app/user-interface-language.ts b/src/shared/utils/app/user-interface-language.ts
new file mode 100644 (file)
index 0000000..ff2e439
--- /dev/null
@@ -0,0 +1,18 @@
+import { Language } from "lemmy-js-client";
+import { I18NextService } from "../../services/I18NextService";
+
+export default function getUserInterfaceLangId(
+  allLanguages: Language[]
+): number {
+  // Get the string of the browser- or user-defined language, like en-US
+  const i18nLang = I18NextService.i18n.language;
+
+  // Find the Language object with a code that matches the initial characters of
+  // this string
+  const userLang = allLanguages.find(lang => {
+    return i18nLang.indexOf(lang.code) === 0;
+  });
+
+  // Return the ID of that language object, or "0" for Undetermined
+  return userLang?.id || 0;
+}