]> Untitled Git - lemmy-ui.git/blobdiff - src/shared/components/post/post-form.tsx
Adding Community Language fixes. #783 (#868)
[lemmy-ui.git] / src / shared / components / post / post-form.tsx
index dd2c59f65ffb7890852e775eff434eefc9254aea..abfb5430f19bf5df14788452d6872df4814f2835 100644 (file)
@@ -64,6 +64,7 @@ const MAX_POST_TITLE_LENGTH = 200;
 interface PostFormProps {
   post_view: Option<PostView>; // If a post is given, that means this is an edit
   allLanguages: Language[];
+  siteLanguages: number[];
   communities: Option<CommunityView[]>;
   params: Option<PostFormParams>;
   onCancel?(): any;
@@ -80,6 +81,7 @@ interface PostFormState {
   crossPosts: Option<PostView[]>;
   loading: boolean;
   imageLoading: boolean;
+  communitySearchLoading: boolean;
   previewMode: boolean;
 }
 
@@ -99,6 +101,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
     }),
     loading: false,
     imageLoading: false,
+    communitySearchLoading: false,
     previewMode: false,
     suggestedTitle: None,
     suggestedPosts: None,
@@ -180,7 +183,13 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
 
   render() {
     let selectedLangs = this.state.postForm.language_id
-      .or(myFirstDiscussionLanguageId(UserService.Instance.myUserInfo))
+      .or(
+        myFirstDiscussionLanguageId(
+          this.props.allLanguages,
+          this.props.siteLanguages,
+          UserService.Instance.myUserInfo
+        )
+      )
       .map(Array.of);
 
     return (
@@ -296,6 +305,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
                         enableDownvotes={this.props.enableDownvotes}
                         enableNsfw={this.props.enableNsfw}
                         allLanguages={this.props.allLanguages}
+                        siteLanguages={this.props.siteLanguages}
                       />
                     </>
                   ),
@@ -338,6 +348,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
                         enableDownvotes={this.props.enableDownvotes}
                         enableNsfw={this.props.enableNsfw}
                         allLanguages={this.props.allLanguages}
+                        siteLanguages={this.props.siteLanguages}
                       />
                     </>
                   ),
@@ -357,6 +368,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
                 buttonTitle={None}
                 maxLength={None}
                 allLanguages={this.props.allLanguages}
+                siteLanguages={this.props.siteLanguages}
               />
             </div>
           </div>
@@ -366,7 +378,11 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
                 className="col-sm-2 col-form-label"
                 htmlFor="post-community"
               >
-                {i18n.t("community")}
+                {this.state.communitySearchLoading ? (
+                  <Spinner />
+                ) : (
+                  i18n.t("community")
+                )}
               </label>
               <div className="col-sm-10">
                 <select
@@ -405,6 +421,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
           )}
           <LanguageSelect
             allLanguages={this.props.allLanguages}
+            siteLanguages={this.props.siteLanguages}
             selectedLanguageIds={selectedLangs}
             multiple={false}
             onChange={this.handleLanguageChange}
@@ -635,8 +652,9 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
           i.state.postForm.url = Some(url);
           i.setState({ imageLoading: false });
           pictrsDeleteToast(
-            i18n.t("click_to_delete_picture"),
-            i18n.t("picture_deleted"),
+            `${i18n.t("click_to_delete_picture")}: ${file.name}`,
+            `${i18n.t("picture_deleted")}: ${file.name}`,
+            `${i18n.t("failed_to_delete_picture")}: ${file.name}`,
             deleteUrl
           );
         } else {
@@ -668,6 +686,9 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
           },
           false
         );
+        this.choices.passedElement.element.addEventListener("search", () => {
+          this.setState({ communitySearchLoading: true });
+        });
         this.choices.passedElement.element.addEventListener(
           "search",
           debounce(async (e: any) => {
@@ -680,6 +701,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
                 "label",
                 true
               );
+              this.setState({ communitySearchLoading: false });
             } catch (err) {
               console.log(err);
             }