From 9250f1907c77d50fa55f87f01a5924786cb64752 Mon Sep 17 00:00:00 2001
From: chylex <contact@chylex.com>
Date: Tue, 24 Apr 2018 18:10:22 +0200
Subject: [PATCH] Quick semi-temporary fix for removed column.isOfType

---
 Resources/Plugins/clear-columns/.meta      |  2 +-
 Resources/Plugins/clear-columns/browser.js |  7 +--
 Resources/Plugins/reply-account/browser.js |  2 +-
 Resources/Scripts/code.js                  | 51 ++++++++++++----------
 4 files changed, 32 insertions(+), 30 deletions(-)

diff --git a/Resources/Plugins/clear-columns/.meta b/Resources/Plugins/clear-columns/.meta
index a65591cd..ff645374 100644
--- a/Resources/Plugins/clear-columns/.meta
+++ b/Resources/Plugins/clear-columns/.meta
@@ -9,7 +9,7 @@ Clear columns
 chylex
 
 [version]
-1.2
+1.2.1
 
 [website]
 https://tweetduck.chylex.com
diff --git a/Resources/Plugins/clear-columns/browser.js b/Resources/Plugins/clear-columns/browser.js
index 2843a5ff..c3eb6571 100644
--- a/Resources/Plugins/clear-columns/browser.js
+++ b/Resources/Plugins/clear-columns/browser.js
@@ -7,17 +7,12 @@ constructor(){
 enabled(){
   // prepare variables and functions
   var clearColumn = (columnName) => {
-    let col = TD.controller.columnManager.get(columnName);
-    return if !col.isClearable();
-    
-    col.clear();
+    TD.controller.columnManager.get(columnName).clear();
     TD.controller.stats.columnActionClick("clear");
   };
   
   var resetColumn = (columnName) => {
     let col = TD.controller.columnManager.get(columnName);
-    return if !col.isClearable();
-    
     col.model.setClearedTimestamp(0);
     col.reloadTweets();
   };
diff --git a/Resources/Plugins/reply-account/browser.js b/Resources/Plugins/reply-account/browser.js
index 8fdff4f5..0f27fa0d 100644
--- a/Resources/Plugins/reply-account/browser.js
+++ b/Resources/Plugins/reply-account/browser.js
@@ -40,7 +40,7 @@ enabled(){
           columnAccount = "";
         }
         
-        try{
+        try{ // TODO isOfType is removed
           query = configuration.customSelector(columnTitle, columnAccount, column, section.hasClass("column-temp"));
         }catch(e){
           $TD.alert("warning", "Plugin reply-account has invalid configuration: customSelector threw an error: "+e.message);
diff --git a/Resources/Scripts/code.js b/Resources/Scripts/code.js
index ad962576..f4c5ac98 100644
--- a/Resources/Scripts/code.js
+++ b/Resources/Scripts/code.js
@@ -25,26 +25,23 @@
   const app = $(document.body).children(".js-app");
   
   //
-  // Constant: Column types mapped to their titles.
+  // Constant: Column icon classes mapped to their titles.
   //
-  const columnTypes = {
-    "col_home": "Home",
-    "col_timeline" : "Home",
-    "col_mentions": "Mentions",
-    "col_me": "Mentions",
-    "col_inbox": "Messages",
-    "col_messages": "Messages",
-    "col_interactions": "Notifications",
-    "col_followers": "Followers",
-    "col_activity": "Activity",
-    "col_favorites": "Likes",
-    "col_usertweets": "User",
-    "col_search": "Search",
-    "col_list": "List",
-    "col_customtimeline": "Timeline",
-    "col_dataminr": "Dataminr",
-    "col_livevideo": "Live video",
-    "col_scheduled": "Scheduled"
+  const columnTitles = {
+    "icon-home": "Home",
+    "icon-mention": "Mentions",
+    "icon-message": "Messages",
+    "icon-notifications": "Notifications",
+    "icon-follow": "Followers",
+    "icon-activity": "Activity",
+    "icon-favorite": "Likes",
+    "icon-user": "User",
+    "icon-search": "Search",
+    "icon-list": "List",
+    "icon-custom-timeline": "Timeline",
+    "icon-dataminr": "Dataminr",
+    "icon-play-video": "Live video",
+    "icon-schedule": "Scheduled"
   };
   
   //
@@ -99,10 +96,20 @@
   };
   
   //
-  // Function: Retrieves column name
+  // Function: Attempts to retrieve the column icon class. Returns undefined on failure.
+  //
+  const getColumnIconClass = function(column){
+    if (ensurePropertyExists(column, "ui", "_$chirpContainer")){
+      return column.ui._$chirpContainer.closest(".js-column").attr("data-td-icon");
+    }
+  };
+  
+  //
+  // Function: Retrieves column name and caches it.
+  //
   const getColumnName = function(column){
-    let cached = column._tduck_type || (column._tduck_type = Object.keys(columnTypes).find(type => column.isOfType(type)));
-    return columnTypes[cached] || "";
+    let cached = column._tduck_icon || (column._tduck_icon = getColumnIconClass(column));
+    return columnTitles[cached] || "";
   };
   
   //