From 233d6e6fc284ce31186273cf167da834384c7af0 Mon Sep 17 00:00:00 2001
From: Bart Jaskulski <bjaskulski@protonmail.com>
Date: Tue, 19 Mar 2024 08:43:29 +0100
Subject: [PATCH] fix: register tracker ui extensions for each plugin

Tracker UI extension has to be registered for each plugin, and doing it
inside filter triggers limits to only one execution.

Signed-off-by: Bart Jaskulski <bjaskulski@protonmail.com>
---
 .../Simple/SimpleFreeStrategy.php             |  1 +
 .../Simple/SimplePaidStrategy.php             |  1 +
 .../TrackerInstanceAsFilterTrait.php          | 24 ++++++++++---------
 3 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/src/Initialization/Simple/SimpleFreeStrategy.php b/src/Initialization/Simple/SimpleFreeStrategy.php
index 5927a1b..5be4d3d 100644
--- a/src/Initialization/Simple/SimpleFreeStrategy.php
+++ b/src/Initialization/Simple/SimpleFreeStrategy.php
@@ -55,6 +55,7 @@ class SimpleFreeStrategy implements InitializationStrategy {
 		// Flush usage tracker late, to remain backward compatible with plugins which could instantiate
 		// the tracker on their own through `wpdesk_tracker_instance` filter.
 		$this->get_tracker_instance();
+		$this->register_tracker_ui_extensions();
 
 		return $this->plugin;
 	}
diff --git a/src/Initialization/Simple/SimplePaidStrategy.php b/src/Initialization/Simple/SimplePaidStrategy.php
index df7fd1c..8600c4b 100644
--- a/src/Initialization/Simple/SimplePaidStrategy.php
+++ b/src/Initialization/Simple/SimplePaidStrategy.php
@@ -68,6 +68,7 @@ class SimplePaidStrategy implements InitializationStrategy {
 			// Flush usage tracker late, to remain backward compatible with plugins which could instantiate
 			// the tracker on their own through `wpdesk_tracker_instance` filter.
 			$this->get_tracker_instance();
+			$this->register_tracker_ui_extensions();
 		}, $priority_before_flow_2_5_after_2_6 = -45);
 
 		return $this->plugin;
diff --git a/src/Initialization/TrackerInstanceAsFilterTrait.php b/src/Initialization/TrackerInstanceAsFilterTrait.php
index 6e044ee..d9b5191 100644
--- a/src/Initialization/TrackerInstanceAsFilterTrait.php
+++ b/src/Initialization/TrackerInstanceAsFilterTrait.php
@@ -58,21 +58,23 @@ trait TrackerInstanceAsFilterTrait {
 				$tracker_factory        = new \WPDesk_Tracker_Factory_Prefixed();
 				self::$tracker_instance = $tracker_factory->create_tracker( basename( $this->plugin_info->get_plugin_file_name() ) );
 
-				$shops    = $this->plugin_info->get_plugin_shops();
-				$shop_url = $shops[ get_locale() ] ?? ( $shops['default'] ?? 'https://wpdesk.net' );
-				$tracker_ui = new OptInOptOut(
-					$this->plugin_info->get_plugin_file_name(),
-					$this->plugin_info->get_plugin_slug(),
-					$shop_url,
-					$this->plugin_info->get_plugin_name()
-				);
-				$tracker_ui->create_objects();
-				$tracker_ui->hooks();
-
 				do_action( 'wpdesk_tracker_started', self::$tracker_instance, $this->plugin_info );
 
 				return self::$tracker_instance;
 			}
 		}, 10 - $this->get_tracker_version() );
 	}
+
+	private function register_tracker_ui_extensions() {
+		$shops    = $this->plugin_info->get_plugin_shops();
+		$shop_url = $shops[ get_locale() ] ?? ( $shops['default'] ?? 'https://wpdesk.net' );
+		$tracker_ui = new OptInOptOut(
+			$this->plugin_info->get_plugin_file_name(),
+			$this->plugin_info->get_plugin_slug(),
+			$shop_url,
+			$this->plugin_info->get_plugin_name()
+		);
+		$tracker_ui->create_objects();
+		$tracker_ui->hooks();
+  }
 }
\ No newline at end of file
-- 
GitLab