From eac300627f5bc403fd0a9ca790f13d05ffbbc5df Mon Sep 17 00:00:00 2001
From: chylex <contact@chylex.com>
Date: Sun, 29 Apr 2018 13:17:00 +0200
Subject: [PATCH] Fix broken column names again and make getColumnName
 accessible to plugins

---
 Resources/Scripts/code.js            | 31 ++++++++++++++--------------
 Resources/Scripts/plugins.browser.js |  1 +
 2 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/Resources/Scripts/code.js b/Resources/Scripts/code.js
index a3656f32..25a835b4 100644
--- a/Resources/Scripts/code.js
+++ b/Resources/Scripts/code.js
@@ -96,20 +96,24 @@
   };
   
   //
-  // Function: Attempts to retrieve the column icon class. Returns undefined on failure.
+  // Block: Fix columns missing any identifiable attributes to allow individual styles.
   //
-  const getColumnIconClass = function(column){
-    if (ensurePropertyExists(column, "ui", "_$chirpContainer")){
-      return column.ui._$chirpContainer.closest(".js-column").attr("data-td-icon");
-    }
-  };
+  $(document).on("uiColumnRendered", function(e, data){
+    let icon = data.$column.find(".column-type-icon").first();
+    return if icon.length !== 1;
+    
+    let name = Array.prototype.find.call(icon[0].classList, cls => cls.startsWith("icon-"));
+    return if !name;
+    
+    data.$column.attr("data-td-icon", name);
+    data.column._tduck_icon = name;
+  });
   
   //
-  // Function: Retrieves column name and caches it.
+  // Block: Setup global function to retrieve the column name.
   //
-  const getColumnName = function(column){
-    let cached = column._tduck_icon || (column._tduck_icon = getColumnIconClass(column));
-    return columnTitles[cached] || "";
+  window.TDGF_getColumnName = function(column){
+    return columnTitles[column._tduck_icon] || "";
   };
   
   //
@@ -234,7 +238,7 @@
         let tweetUrl = source ? source.getChirpURL() : "";
         let quoteUrl = source && source.quotedTweet ? source.quotedTweet.getChirpURL() : "";
 
-        $TD.onTweetPopup(column.model.privateState.apiid, chirpId, getColumnName(column), html.html(), duration, tweetUrl, quoteUrl);
+        $TD.onTweetPopup(column.model.privateState.apiid, chirpId, window.TDGF_getColumnName(column), html.html(), duration, tweetUrl, quoteUrl);
       }
 
       if (column.model.getHasSound()){
@@ -1324,11 +1328,6 @@
     };
   }
   
-  //
-  // Block: Fix columns missing any identifiable attributes to allow individual styles.
-  //
-  TD.mustaches["column.mustache"] = TD.mustaches["column.mustache"].replace("{{columnclass}}\"", "{{columnclass}}\" data-td-icon=\"{{columniconclass}}\"");
-  
   //
   // Block: Remove column mouse wheel handler, which allows smooth scrolling inside columns, and horizontally scrolling column container when holding Shift.
   //
diff --git a/Resources/Scripts/plugins.browser.js b/Resources/Scripts/plugins.browser.js
index a164278a..1d48f58d 100644
--- a/Resources/Scripts/plugins.browser.js
+++ b/Resources/Scripts/plugins.browser.js
@@ -117,6 +117,7 @@
   //
   // Block: Setup bridges to global functions.
   //
+  window.TDPF_getColumnName = window.TDGF_getColumnName;
   window.TDPF_playVideo = window.TDGF_playVideo;
   window.TDPF_reloadColumns = window.TDGF_reloadColumns;
   window.TDPF_prioritizeNewestEvent = window.TDGF_prioritizeNewestEvent;