From 1683a745b5d8ef0a38cdcb45c4cb8465bfa64343 Mon Sep 17 00:00:00 2001
From: Nutomic <me@nutomic.com>
Date: Sat, 13 May 2023 22:07:05 +0200
Subject: [PATCH] Dont preselect new post language (#1008)

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                               |  2 +-
 src/shared/components/comment/comment-form.tsx   | 11 -----------
 src/shared/components/common/language-select.tsx |  5 +++++
 src/shared/components/post/post-form.tsx         |  9 +--------
 src/shared/utils.ts                              | 14 --------------
 5 files changed, 7 insertions(+), 34 deletions(-)

diff --git a/lemmy-translations b/lemmy-translations
index 007e536..a1fff8b 160000
--- a/lemmy-translations
+++ b/lemmy-translations
@@ -1 +1 @@
-Subproject commit 007e53683768aeba63e9e4c179c1d240217bcee2
+Subproject commit a1fff8b481f4b02327e4ee04088606af627628f2
diff --git a/src/shared/components/comment/comment-form.tsx b/src/shared/components/comment/comment-form.tsx
index c728519..74d17bf 100644
--- a/src/shared/components/comment/comment-form.tsx
+++ b/src/shared/components/comment/comment-form.tsx
@@ -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}
diff --git a/src/shared/components/common/language-select.tsx b/src/shared/components/common/language-select.tsx
index feada32..a63c4db 100644
--- a/src/shared/components/common/language-select.tsx
+++ b/src/shared/components/common/language-select.tsx
@@ -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}
diff --git a/src/shared/components/post/post-form.tsx b/src/shared/components/post/post-form.tsx
index 355a6ed..e7edf22 100644
--- a/src/shared/components/post/post-form.tsx
+++ b/src/shared/components/post/post-form.tsx
@@ -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;
diff --git a/src/shared/utils.ts b/src/shared/utils.ts
index ec6d92d..4e5f74b 100644
--- a/src/shared/utils.ts
+++ b/src/shared/utils.ts
@@ -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
-- 
2.44.1