]> Untitled Git - lemmy-ui.git/commitdiff
Dont preselect new post language (#1008)
authorNutomic <me@nutomic.com>
Sat, 13 May 2023 20:07:05 +0000 (22:07 +0200)
committerGitHub <noreply@github.com>
Sat, 13 May 2023 20:07:05 +0000 (16:07 -0400)
Lemmy-ui currently preselects the first language in the user
settings when creating a new post or comment. This is a bad
idea because this language might not actually be allowed in
the community. It is better to pass the language as None if
the user didnt specify it explicitly, because then the backend
can smartly choose a language based on the overlap of user
languages and community languages.

This fixes the problem described in
[this thread](https://lemmy.ml/post/1066608), where a user
tries to post in a community that has only English allowed,
with all languages enabled in user settings. In this case
lemmy-ui preselects "undetermined language" as default, which
is not allowed and results in an error. This PR fixes the issue
because it lets the backend automatically select the correct
language (English).

lemmy-translations
src/shared/components/comment/comment-form.tsx
src/shared/components/common/language-select.tsx
src/shared/components/post/post-form.tsx
src/shared/utils.ts

index 007e53683768aeba63e9e4c179c1d240217bcee2..a1fff8b481f4b02327e4ee04088606af627628f2 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 007e53683768aeba63e9e4c179c1d240217bcee2
+Subproject commit a1fff8b481f4b02327e4ee04088606af627628f2
index c7285193971011892ffbe99240940543929f266b..74d17bff4bc230dd907a4d49933f2a213bc0bc7b 100644 (file)
@@ -17,7 +17,6 @@ import { UserService, WebSocketService } from "../../services";
 import {
   capitalizeFirstLetter,
   myAuth,
-  myFirstDiscussionLanguageId,
   wsClient,
   wsSubscribe,
 } from "../../utils";
@@ -77,21 +76,11 @@ export class CommentForm extends Component<CommentFormProps, CommentFormState> {
           : undefined
         : undefined;
 
-    let selectedLang =
-      typeof this.props.node !== "number"
-        ? this.props.node.comment_view.comment.language_id
-        : myFirstDiscussionLanguageId(
-            this.props.allLanguages,
-            this.props.siteLanguages,
-            UserService.Instance.myUserInfo
-          );
-
     return (
       <div className="mb-3">
         {UserService.Instance.myUserInfo ? (
           <MarkdownTextArea
             initialContent={initialContent}
-            initialLanguageId={selectedLang}
             showLanguage
             buttonTitle={this.state.buttonTitle}
             finished={this.state.finished}
index feada32a68e4eaf51e1d1e800ae9879af5802ecb..a63c4db38d4a5e209aeab0a35b1e10537eea8fb6 100644 (file)
@@ -111,6 +111,11 @@ export class LanguageSelect extends Component<LanguageSelectProps, any> {
         multiple={this.props.multiple}
         disabled={this.props.disabled}
       >
+        {!this.props.multiple && (
+          <option selected disabled hidden>
+            {i18n.t("language_select_placeholder")}
+          </option>
+        )}
         {filteredLangs.map(l => (
           <option
             key={l.id}
index 355a6ed4a70ca95e96a412b51999233683e94f88..e7edf22c7835dee9f2d7d7363e126812e9e1f407 100644 (file)
@@ -29,7 +29,6 @@ import {
   ghostArchiveUrl,
   isImage,
   myAuth,
-  myFirstDiscussionLanguageId,
   pictrsDeleteToast,
   relTags,
   setupTippy,
@@ -187,13 +186,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
   }
 
   render() {
-    let firstLang =
-      this.state.form.language_id ??
-      myFirstDiscussionLanguageId(
-        this.props.allLanguages,
-        this.props.siteLanguages,
-        UserService.Instance.myUserInfo
-      );
+    let firstLang = this.state.form.language_id;
     let selectedLangs = firstLang ? Array.of(firstLang) : undefined;
 
     let url = this.state.form.url;
index ec6d92d1de000d9a644c9c867edd002542be5c84..4e5f74b4f39abea19cde41612d7836bf70eab059 100644 (file)
@@ -1453,20 +1453,6 @@ export function postToCommentSortType(sort: SortType): CommentSortType {
   }
 }
 
-export function myFirstDiscussionLanguageId(
-  allLanguages: Language[],
-  siteLanguages: number[],
-  myUserInfo = UserService.Instance.myUserInfo
-): number | undefined {
-  return selectableLanguages(
-    allLanguages,
-    siteLanguages,
-    false,
-    false,
-    myUserInfo
-  ).at(0)?.id;
-}
-
 export function canCreateCommunity(
   siteRes: GetSiteResponse,
   myUserInfo = UserService.Instance.myUserInfo