HEX
Server: Apache
System: Linux dotw660 5.10.0-37-amd64 #1 SMP Debian 5.10.247-1 (2025-12-11) x86_64
User: web350 (1012)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/clients/client125/web350/web/wp-content/plugins/wp-smushit/_src/js/utils/tracker.js
import Fetcher from './fetcher';

class Tracker {
	/* @private */
	#doingEvents = new Set();
	#allowToTrack;

	track( event, properties = {} ) {
		if ( ! this.allowToTrack() || this.inProgressEvent( event ) ) {
			return;
		}

		this.setInProgressEvent( event );

		return Fetcher.common.track( event, properties ).then( ( res ) => {
			setTimeout( () => {
				this.restoreInProgressEvent( event );
			}, 1000 );

			return res;
		} );
	}

	inProgressEvent( event ) {
		return this.#doingEvents.has( event );
	}

	setInProgressEvent( event ) {
		this.#doingEvents.add( event );
	}

	restoreInProgressEvent( event ) {
		this.#doingEvents.delete( event );
	}

	allowToTrack() {
		return this.#allowToTrack || !! ( window.wp_smush_mixpanel?.opt_in );
	}

	setAllowToTrack( allowToTrack ) {
		this.#allowToTrack = allowToTrack;

		return this;
	}
}

const tracker = new Tracker();

export default tracker;