From 2d1111fa74fc2697b57f0128205d24d69fbc639c Mon Sep 17 00:00:00 2001
From: Dessalines <dessalines@users.noreply.github.com>
Date: Wed, 27 Apr 2022 15:09:36 -0400
Subject: [PATCH] Fixing initial loading of admin page. Fixes #635 (#638)

---
 src/shared/components/home/admin-settings.tsx | 29 ++++++++-----------
 src/shared/components/home/site-form.tsx      |  4 +--
 2 files changed, 14 insertions(+), 19 deletions(-)

diff --git a/src/shared/components/home/admin-settings.tsx b/src/shared/components/home/admin-settings.tsx
index 284805b..b98da1f 100644
--- a/src/shared/components/home/admin-settings.tsx
+++ b/src/shared/components/home/admin-settings.tsx
@@ -35,7 +35,7 @@ import { SiteForm } from "./site-form";
 interface AdminSettingsState {
   siteRes: GetSiteResponse;
   siteConfigRes: GetSiteConfigResponse;
-  siteConfigForm: SaveSiteConfig;
+  siteConfigHjson: string;
   loading: boolean;
   banned: PersonViewSafe[];
   siteConfigLoading: boolean;
@@ -48,10 +48,7 @@ export class AdminSettings extends Component<any, AdminSettingsState> {
   private subscription: Subscription;
   private emptyState: AdminSettingsState = {
     siteRes: this.isoData.site_res,
-    siteConfigForm: {
-      config_hjson: null,
-      auth: null,
-    },
+    siteConfigHjson: null,
     siteConfigRes: {
       config_hjson: null,
     },
@@ -72,13 +69,11 @@ export class AdminSettings extends Component<any, AdminSettingsState> {
     // Only fetch the data if coming from another route
     if (this.isoData.path == this.context.router.route.match.url) {
       this.state.siteConfigRes = this.isoData.routeData[0];
-      this.state.siteConfigForm.config_hjson =
-        this.state.siteConfigRes.config_hjson;
+      this.state.siteConfigHjson = this.state.siteConfigRes.config_hjson;
       this.state.banned = this.isoData.routeData[1].banned;
       this.state.siteConfigLoading = false;
       this.state.loading = false;
     } else {
-      this.state.siteConfigForm.auth = authField();
       WebSocketService.Instance.send(
         wsClient.getSiteConfig({
           auth: authField(),
@@ -211,7 +206,7 @@ export class AdminSettings extends Component<any, AdminSettingsState> {
             <div class="col-12">
               <textarea
                 id={this.siteConfigTextAreaId}
-                value={this.state.siteConfigForm.config_hjson}
+                value={this.state.siteConfigHjson}
                 onInput={linkEvent(this, this.handleSiteConfigHjsonChange)}
                 class="form-control text-monospace"
                 rows={3}
@@ -237,14 +232,16 @@ export class AdminSettings extends Component<any, AdminSettingsState> {
   handleSiteConfigSubmit(i: AdminSettings, event: any) {
     event.preventDefault();
     i.state.siteConfigLoading = true;
-    WebSocketService.Instance.send(
-      wsClient.saveSiteConfig(i.state.siteConfigForm)
-    );
+    let form: SaveSiteConfig = {
+      config_hjson: this.state.siteConfigHjson,
+      auth: authField(),
+    };
+    WebSocketService.Instance.send(wsClient.saveSiteConfig(form));
     i.setState(i.state);
   }
 
   handleSiteConfigHjsonChange(i: AdminSettings, event: any) {
-    i.state.siteConfigForm.config_hjson = event.target.value;
+    i.state.siteConfigHjson = event.target.value;
     i.setState(i.state);
   }
 
@@ -276,8 +273,7 @@ export class AdminSettings extends Component<any, AdminSettingsState> {
       let data = wsJsonToRes<GetSiteConfigResponse>(msg).data;
       this.state.siteConfigRes = data;
       this.state.loading = false;
-      this.state.siteConfigForm.config_hjson =
-        this.state.siteConfigRes.config_hjson;
+      this.state.siteConfigHjson = this.state.siteConfigRes.config_hjson;
       this.setState(this.state);
       var textarea: any = document.getElementById(this.siteConfigTextAreaId);
       autosize(textarea);
@@ -292,8 +288,7 @@ export class AdminSettings extends Component<any, AdminSettingsState> {
     } else if (op == UserOperation.SaveSiteConfig) {
       let data = wsJsonToRes<GetSiteConfigResponse>(msg).data;
       this.state.siteConfigRes = data;
-      this.state.siteConfigForm.config_hjson =
-        this.state.siteConfigRes.config_hjson;
+      this.state.siteConfigHjson = this.state.siteConfigRes.config_hjson;
       this.state.siteConfigLoading = false;
       toast(i18n.t("site_saved"));
       this.setState(this.state);
diff --git a/src/shared/components/home/site-form.tsx b/src/shared/components/home/site-form.tsx
index 59db455..20e1db0 100644
--- a/src/shared/components/home/site-form.tsx
+++ b/src/shared/components/home/site-form.tsx
@@ -38,7 +38,7 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
       application_question: null,
       private_instance: null,
       default_theme: null,
-      auth: authField(),
+      auth: authField(false),
     },
     loading: false,
     themeList: [],
@@ -75,7 +75,7 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
         application_question: site.application_question,
         private_instance: site.private_instance,
         default_theme: site.default_theme,
-        auth: authField(),
+        auth: authField(false),
       };
     }
   }
-- 
2.44.1