From 0b95071fe628d91238549b062961e724088d3b8b Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Tue, 26 Nov 2024 03:23:31 -0500 Subject: Update :4 --- src/gizmo/wasp-telemetry.el | 59 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/gizmo/wasp-telemetry.el (limited to 'src/gizmo/wasp-telemetry.el') diff --git a/src/gizmo/wasp-telemetry.el b/src/gizmo/wasp-telemetry.el new file mode 100644 index 00000000..6625f38b --- /dev/null +++ b/src/gizmo/wasp-telemetry.el @@ -0,0 +1,59 @@ +;;; wasp-telemetry --- Telemetry and Use Tracking -*- lexical-binding: t; -*- +;;; Commentary: +;;; Code: + +(require 's) +(require 'ht) +(require 'wasp-utils) + +(defvar w/telemetry-stats (ht-create)) +(defvar w/telemetry-current nil) +(defvar w/telemetry-current-duration 0) +(defvar w/telemetry-work-cooldown 0) + +(defun w/telemetry-change (new) + "Update the current telemetry state to NEW." + (message "New status: %s" new) + (when w/telemetry-current + (ht-set! + w/telemetry-stats w/telemetry-current + (+ (ht-get w/telemetry-stats w/telemetry-current 0) + w/telemetry-current-duration))) + (setf w/telemetry-current new) + (setf w/telemetry-current-duration 0)) + +(defun w/telemetry-update () + "Check and possibly update KPIs." + (cl-incf w/telemetry-current-duration) + (when-let* + ((win (w/get-stream-primary-window)) + (b (window-buffer win))) + (cond + ((> w/telemetry-work-cooldown 0) + (cl-decf w/telemetry-work-cooldown)) + ((s-contains? "Wikipedia" (buffer-name b)) + (w/telemetry-change 'wikipedia)) + ((not (eq w/telemetry-current 'yap)) + (w/telemetry-change 'yap)) + ))) + +(defun w/telemetry-change-handler (_ _ _) + "Function for `after-change-functions' to track status." + (setf w/telemetry-work-cooldown 12) + (unless (eq w/telemetry-current 'lockedin) + (w/telemetry-change 'lockedin))) +(add-to-list 'after-change-functions #'w/telemetry-change-handler) + +(defvar w/telemetry-timer nil) +(defun w/run-telemetry-timer () + "Run the telemetry timer." + (when w/telemetry-timer + (cancel-timer w/telemetry-timer)) + (w/telemetry-update) + (setq + w/telemetry-timer + (run-with-timer 10 nil #'w/run-telemetry-timer))) +(w/run-telemetry-timer) + +(provide 'wasp-telemetry) +;;; wasp-telemetry.el ends here -- cgit v1.2.3