diff options
| -rw-r--r-- | l/src/main.lisp | 35 | 
1 files changed, 28 insertions, 7 deletions
| diff --git a/l/src/main.lisp b/l/src/main.lisp index e5688d0..411f3eb 100644 --- a/l/src/main.lisp +++ b/l/src/main.lisp @@ -2,6 +2,8 @@  (defvar *wg* (wait-group:make-wait-group))  (defvar *devtools-root-call-id* (make-instance 'call-id)) +(defvar *reloaded-count* 0) +(defvar *last-session-id* "")  (opts:define-opts    (:name :socket-url @@ -66,16 +68,32 @@                              "sessionId")))      ;; TODO: only if config.reload-current-tab -    (when reload-current-tab -      (let ((current-call-id (json-obj-get response "id"))) -        (when (and current-call-id -                   (= current-call-id -                      (id *devtools-root-call-id*))) +;; If last session ID corresponds, +; Response: (OBJ (id . 2) +;            (result OBJ (sessionId . C24A99CA53CBD76EB68BCBD0D172A4E7))) + +    (when reload-current-tab +      ; (when (and (= (or (json-obj-get response "id") -1) 1) +      (when (and  +                 (= *reloaded-count* +                    ;; TODO: Might not work because there could be multiple instances of a single extension ID I think +                    ;; Yes, extension-ids could be less than *reloaded-count*. But we could use the count of extension-targets +                    (length extension-ids)) + +                 (string= (json-obj-get +                            (json-obj-get response "result") +                            "sessionId") +                          *last-session-id*)) +      ; (let ((current-call-id (json-obj-get response "id"))) +      ;   (when (and current-call-id +      ;              (= current-call-id +      ;                 (id *devtools-root-call-id*))) +      ;            (sleep 1)            (reload-tab (json-obj-get                          (json-obj-get response "result") -                        "sessionId"))))) +                        "sessionId"))))      (format t "Response: ~a~%" response)      (format t "~a~%" *wg*) @@ -113,8 +131,11 @@  (defun reload-extension (session-id)    ;; Use call ID "1" as this is the first message sent to the attached target.    (format t "reloading EXTENSION~%") +  (setf *last-session-id* session-id)    (websocket-send *client* -            (runtime-evaluate-msg 1 session-id "chrome.runtime.reload()"))) +            (runtime-evaluate-msg 1 session-id "chrome.runtime.reload()")) + +  (incf *reloaded-count*))  (defun reload-tab (session-id)    ;; Use call ID "2" as this will always be sent after a `reload-extension` | 
