]> Untitled Git - lemmy.git/commitdiff
Fixing create_post, create_community, and login pages.
authorDessalines <tyhou13@gmx.com>
Fri, 3 Jan 2020 18:52:21 +0000 (13:52 -0500)
committerDessalines <tyhou13@gmx.com>
Fri, 3 Jan 2020 18:52:21 +0000 (13:52 -0500)
- Includes fetching the site for `enable_nsfw` info. Fixes #400

ui/src/components/community-form.tsx
ui/src/components/login.tsx
ui/src/components/post-form.tsx

index d5efb4324de06378665764f62b3c628db2080c3f..2085da2895ae2e4ceebfde20338179196d352483 100644 (file)
@@ -7,6 +7,7 @@ import {
   Category,
   ListCategoriesResponse,
   CommunityResponse,
+  GetSiteResponse,
 } from '../interfaces';
 import { WebSocketService } from '../services';
 import { msgOp, capitalizeFirstLetter } from '../utils';
@@ -27,6 +28,7 @@ interface CommunityFormState {
   communityForm: CommunityFormI;
   categories: Array<Category>;
   loading: boolean;
+  enable_nsfw: boolean;
 }
 
 export class CommunityForm extends Component<
@@ -44,6 +46,7 @@ export class CommunityForm extends Component<
     },
     categories: [],
     loading: false,
+    enable_nsfw: null,
   };
 
   constructor(props: any, context: any) {
@@ -79,6 +82,7 @@ export class CommunityForm extends Component<
       );
 
     WebSocketService.Instance.listCategories();
+    WebSocketService.Instance.getSite();
   }
 
   componentDidMount() {
@@ -157,7 +161,7 @@ export class CommunityForm extends Component<
           </div>
         </div>
 
-        {WebSocketService.Instance.site.enable_nsfw && (
+        {this.state.enable_nsfw && (
           <div class="form-group row">
             <div class="col-12">
               <div class="form-check">
@@ -267,6 +271,10 @@ export class CommunityForm extends Component<
       let res: CommunityResponse = msg;
       this.state.loading = false;
       this.props.onEdit(res.community);
+    } else if (op == UserOperation.GetSite) {
+      let res: GetSiteResponse = msg;
+      this.state.enable_nsfw = res.site.enable_nsfw;
+      this.setState(this.state);
     }
   }
 }
index c8de6c70edc9a741b9dbf07858427efc678ec56d..53b7a22ff278d07ef27900e5555fcd0b7c375f18 100644 (file)
@@ -7,6 +7,7 @@ import {
   LoginResponse,
   UserOperation,
   PasswordResetForm,
+  GetSiteResponse,
 } from '../interfaces';
 import { WebSocketService, UserService } from '../services';
 import { msgOp, validEmail } from '../utils';
@@ -18,6 +19,7 @@ interface State {
   registerForm: RegisterForm;
   loginLoading: boolean;
   registerLoading: boolean;
+  enable_nsfw: boolean;
 }
 
 export class Login extends Component<any, State> {
@@ -37,6 +39,7 @@ export class Login extends Component<any, State> {
     },
     loginLoading: false,
     registerLoading: false,
+    enable_nsfw: undefined,
   };
 
   constructor(props: any, context: any) {
@@ -58,18 +61,14 @@ export class Login extends Component<any, State> {
         err => console.error(err),
         () => console.log('complete')
       );
+
+    WebSocketService.Instance.getSite();
   }
 
   componentWillUnmount() {
     this.subscription.unsubscribe();
   }
 
-  componentDidMount() {
-    document.title = `${i18n.t('login')} - ${
-      WebSocketService.Instance.site.name
-    }`;
-  }
-
   render() {
     return (
       <div class="container">
@@ -205,7 +204,7 @@ export class Login extends Component<any, State> {
             />
           </div>
         </div>
-        {WebSocketService.Instance.site.enable_nsfw && (
+        {this.state.enable_nsfw && (
           <div class="form-group row">
             <div class="col-sm-10">
               <div class="form-check">
@@ -322,6 +321,13 @@ export class Login extends Component<any, State> {
         this.props.history.push('/communities');
       } else if (op == UserOperation.PasswordReset) {
         alert(i18n.t('reset_password_mail_sent'));
+      } else if (op == UserOperation.GetSite) {
+        let res: GetSiteResponse = msg;
+        this.state.enable_nsfw = res.site.enable_nsfw;
+        this.setState(this.state);
+        document.title = `${i18n.t('login')} - ${
+          WebSocketService.Instance.site.name
+        }`;
       }
     }
   }
index ef639c9daa0ec118dac324be18bd65a95ccbc0c5..7964a3ff987212e1c0d86d91535ab2d0e4f2f330 100644 (file)
@@ -15,6 +15,7 @@ import {
   SearchForm,
   SearchType,
   SearchResponse,
+  GetSiteResponse,
 } from '../interfaces';
 import { WebSocketService, UserService } from '../services';
 import {
@@ -49,6 +50,7 @@ interface PostFormState {
   suggestedTitle: string;
   suggestedPosts: Array<Post>;
   crossPosts: Array<Post>;
+  enable_nsfw: boolean;
 }
 
 export class PostForm extends Component<PostFormProps, PostFormState> {
@@ -70,6 +72,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
     suggestedTitle: undefined,
     suggestedPosts: [],
     crossPosts: [],
+    enable_nsfw: undefined,
   };
 
   constructor(props: any, context: any) {
@@ -124,6 +127,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
     };
 
     WebSocketService.Instance.listCommunities(listCommunitiesForm);
+    WebSocketService.Instance.getSite();
   }
 
   componentDidMount() {
@@ -287,7 +291,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
               </div>
             </div>
           )}
-          {WebSocketService.Instance.site.enable_nsfw && (
+          {this.state.enable_nsfw && (
             <div class="form-group row">
               <div class="col-sm-10">
                 <div class="form-check">
@@ -498,6 +502,10 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
         this.state.crossPosts = res.posts;
       }
       this.setState(this.state);
+    } else if (op == UserOperation.GetSite) {
+      let res: GetSiteResponse = msg;
+      this.state.enable_nsfw = res.site.enable_nsfw;
+      this.setState(this.state);
     }
   }
 }