From 0085ce7ab81f910c5c9138ab5a0d22ac2b602a0d Mon Sep 17 00:00:00 2001
From: 0xboobface <0xboobface@gmail.com>
Date: Wed, 24 Oct 2018 20:02:00 +0200
Subject: [PATCH] Add marker interface to mark tabs, which contain followed
 models

---
 .../ctbrec/sites/chaturbate/ChaturbateFollowedTab.java    | 3 ++-
 src/main/java/ctbrec/sites/mfc/MyFreeCamsFriendsTab.java  | 3 ++-
 src/main/java/ctbrec/ui/FollowedTab.java                  | 8 ++++++++
 src/main/java/ctbrec/ui/ThumbOverviewTab.java             | 7 +++----
 4 files changed, 15 insertions(+), 6 deletions(-)
 create mode 100644 src/main/java/ctbrec/ui/FollowedTab.java

diff --git a/src/main/java/ctbrec/sites/chaturbate/ChaturbateFollowedTab.java b/src/main/java/ctbrec/sites/chaturbate/ChaturbateFollowedTab.java
index d5593c6d..16e5220a 100644
--- a/src/main/java/ctbrec/sites/chaturbate/ChaturbateFollowedTab.java
+++ b/src/main/java/ctbrec/sites/chaturbate/ChaturbateFollowedTab.java
@@ -1,5 +1,6 @@
 package ctbrec.sites.chaturbate;
 
+import ctbrec.ui.FollowedTab;
 import ctbrec.ui.ThumbOverviewTab;
 import javafx.concurrent.WorkerStateEvent;
 import javafx.geometry.Insets;
@@ -11,7 +12,7 @@ import javafx.scene.input.KeyCode;
 import javafx.scene.input.KeyEvent;
 import javafx.scene.layout.HBox;
 
-public class ChaturbateFollowedTab extends ThumbOverviewTab {
+public class ChaturbateFollowedTab extends ThumbOverviewTab implements FollowedTab {
     private Label status;
     private String onlineUrl;
     private String offlineUrl;
diff --git a/src/main/java/ctbrec/sites/mfc/MyFreeCamsFriendsTab.java b/src/main/java/ctbrec/sites/mfc/MyFreeCamsFriendsTab.java
index 5a9829d8..eb1f7e31 100644
--- a/src/main/java/ctbrec/sites/mfc/MyFreeCamsFriendsTab.java
+++ b/src/main/java/ctbrec/sites/mfc/MyFreeCamsFriendsTab.java
@@ -3,6 +3,7 @@ import static ctbrec.sites.mfc.FriendsUpdateService.Mode.*;
 
 import java.util.concurrent.TimeUnit;
 
+import ctbrec.ui.FollowedTab;
 import ctbrec.ui.ThumbOverviewTab;
 import javafx.geometry.Insets;
 import javafx.scene.Scene;
@@ -13,7 +14,7 @@ import javafx.scene.input.KeyEvent;
 import javafx.scene.layout.HBox;
 import javafx.util.Duration;
 
-public class MyFreeCamsFriendsTab extends ThumbOverviewTab {
+public class MyFreeCamsFriendsTab extends ThumbOverviewTab implements FollowedTab {
     public MyFreeCamsFriendsTab(MyFreeCams mfc) {
         super("Friends", new FriendsUpdateService(mfc), mfc);
         updateService.setPeriod(new Duration(TimeUnit.SECONDS.toMillis(10)));
diff --git a/src/main/java/ctbrec/ui/FollowedTab.java b/src/main/java/ctbrec/ui/FollowedTab.java
new file mode 100644
index 00000000..d04fbe01
--- /dev/null
+++ b/src/main/java/ctbrec/ui/FollowedTab.java
@@ -0,0 +1,8 @@
+package ctbrec.ui;
+
+/**
+ * Marker interface to mark tabs, which contain followed models
+ */
+public interface FollowedTab {
+
+}
diff --git a/src/main/java/ctbrec/ui/ThumbOverviewTab.java b/src/main/java/ctbrec/ui/ThumbOverviewTab.java
index 0e28a9b3..f2a6fd7f 100644
--- a/src/main/java/ctbrec/ui/ThumbOverviewTab.java
+++ b/src/main/java/ctbrec/ui/ThumbOverviewTab.java
@@ -21,6 +21,7 @@ import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.ReentrantLock;
 
+import org.eclipse.jetty.util.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -30,7 +31,6 @@ import ctbrec.Config;
 import ctbrec.Model;
 import ctbrec.recorder.Recorder;
 import ctbrec.sites.Site;
-import ctbrec.sites.chaturbate.ChaturbateFollowedTab;
 import ctbrec.sites.mfc.MyFreeCamsClient;
 import ctbrec.sites.mfc.MyFreeCamsModel;
 import javafx.collections.ObservableList;
@@ -391,10 +391,9 @@ public class ThumbOverviewTab extends Tab implements TabSelectionListener {
         contextMenu.setAutoHide(true);
         contextMenu.setHideOnEscape(true);
         contextMenu.setAutoFix(true);
-        // TODO get rid of direct reference to Chaturbate
-        MenuItem followOrUnFollow = this instanceof ChaturbateFollowedTab ? unfollow : follow;
         contextMenu.getItems().addAll(openInPlayer, startStop);
-        if(site.supportsFollow()) {
+        if(site.supportsFollow() && StringUtil.isNotBlank(Config.getInstance().getSettings().username)) {
+            MenuItem followOrUnFollow = (this instanceof FollowedTab) ? unfollow : follow;
             contextMenu.getItems().add(followOrUnFollow);
         }
         if(site.supportsTips()) {