From 008ff4b055705d0dde4f495bb8bedcc96264dbe8 Mon Sep 17 00:00:00 2001
From: chylex <contact@chylex.com>
Date: Wed, 31 May 2017 18:33:21 +0200
Subject: [PATCH] Fix edit-design plugin resetting TweetDeck settings on first
 run

---
 Resources/Plugins/edit-design/browser.js | 63 ++++++++++++++----------
 1 file changed, 36 insertions(+), 27 deletions(-)

diff --git a/Resources/Plugins/edit-design/browser.js b/Resources/Plugins/edit-design/browser.js
index 1418293d..fe10cef2 100644
--- a/Resources/Plugins/edit-design/browser.js
+++ b/Resources/Plugins/edit-design/browser.js
@@ -23,6 +23,8 @@ enabled(){
     avatarRadius: 10
   };
   
+  this.firstTimeLoad = null;
+  
   // modal dialog loading
   $TDP.readFileRoot(this.$token, "modal.html").then(contents => {
     this.htmlModal = contents;
@@ -32,30 +34,52 @@ enabled(){
   
   // configuration
   const configFile = "config.json";
+  
   this.tmpConfig = null;
+  this.currentStage = 0;
   
-  var loadConfigObject = obj => {
-    this.tmpConfig = obj || {};
-    
-    if (TD.ready){
-      this.onAppReady();
+  this.onStageReady = () => {
+    if (this.currentStage === 0){
+      this.currentStage = 1;
     }
-    
-    this.injectDeciderReplyHook(this.tmpConfig.revertReplies);
-  };
-  
-  this.onAppReady = () => {
-    if (this.tmpConfig !== null){
+    else if (this.tmpConfig !== null){
       this.config = $.extend(this.defaultConfig, this.tmpConfig);
       this.tmpConfig = null;
       this.reinjectAll();
+      
+      if (this.firstTimeLoad){
+        $TDP.writeFile(this.$token, configFile, JSON.stringify(this.config));
+      }
     }
   };
   
+  var loadConfigObject = obj => {
+    this.tmpConfig = obj || {};
+    this.firstTimeLoad = obj === null;
+    
+    this.onStageReady();
+    this.injectDeciderReplyHook(this.tmpConfig.revertReplies);
+  };
+  
+  $(document).one("dataSettingsValues", () => {
+    switch(TD.settings.getColumnWidth()){
+      case "wide": this.defaultConfig.columnWidth = "350px"; break;
+      case "narrow": this.defaultConfig.columnWidth = "270px"; break;
+    }
+
+    switch(TD.settings.getFontSize()){
+      case "small": this.defaultConfig.fontSize = "13px"; break;
+      case "medium": this.defaultConfig.fontSize = "14px"; break;
+      case "large": this.defaultConfig.fontSize = "15px"; break;
+      case "largest": this.defaultConfig.fontSize = "16px"; break;
+    }
+    
+    this.onStageReady();
+  });
+    
   $TDP.checkFileExists(this.$token, configFile).then(exists => {
     if (!exists){
       loadConfigObject(null);
-      $TDP.writeFile(this.$token, configFile, JSON.stringify(this.defaultConfig));
     }
     else{
       $TDP.readFile(this.$token, configFile, true).then(contents => {
@@ -416,21 +440,6 @@ enabled(){
 }
 
 ready(){
-  // configuration
-  switch(TD.settings.getColumnWidth()){
-    case "wide": this.defaultConfig.columnWidth = "350px"; break;
-    case "narrow": this.defaultConfig.columnWidth = "270px"; break;
-  }
-  
-  switch(TD.settings.getFontSize()){
-    case "small": this.defaultConfig.fontSize = "13px"; break;
-    case "medium": this.defaultConfig.fontSize = "14px"; break;
-    case "large": this.defaultConfig.fontSize = "15px"; break;
-    case "largest": this.defaultConfig.fontSize = "16px"; break;
-  }
-  
-  this.onAppReady();
-  
   // optimization events
   $(window).on("focus", this.onWindowFocusEvent);
   $(window).on("blur", this.onWindowBlurEvent);