From b237e4bd913dfd81625173176597960aeab5a792 Mon Sep 17 00:00:00 2001 From: cage Date: Sun, 14 May 2023 14:54:28 +0200 Subject: [PATCH] - [GUI] prevented adding the same link to tour more than once. --- src/gui/client/main-window.lisp | 7 ++++++- src/gui/server/main-window-server-side.lisp | 13 +++++++++---- src/gui/server/public-api-gemini-tour-links.lisp | 6 +++--- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/gui/client/main-window.lisp b/src/gui/client/main-window.lisp index bd5634b..c72bc71 100644 --- a/src/gui/client/main-window.lisp +++ b/src/gui/client/main-window.lisp @@ -447,7 +447,12 @@ (comm:make-request :tour-add-link 1 link-value - link-name))) + link-name) + (print-info-message (format nil + (_ "~a added to tour") + (if (string-not-empty-p link-name) + link-name + link-value))))) (download-background-callback () (open-iri link-value main-window nil :status +stream-status-downloading+)) (copy-link-callback () diff --git a/src/gui/server/main-window-server-side.lisp b/src/gui/server/main-window-server-side.lisp index 5ba3582..4b1d1ae 100644 --- a/src/gui/server/main-window-server-side.lisp +++ b/src/gui/server/main-window-server-side.lisp @@ -39,10 +39,15 @@ (defmethod add-tour-link ((object gemini-window) (link gemini-parser:gemini-link)) (with-accessors ((links-tour links-tour)) object - (a:reversef links-tour) - (push link links-tour) - (a:reversef links-tour) - object)) + (when (not (find link + links-tour + :test (lambda (a b) + (string= (gemini-parser:target a) + (gemini-parser:target b))))) + (a:reversef links-tour) + (push link links-tour) + (a:reversef links-tour) + object))) (defmethod pop-tour-link ((object gemini-window)) (with-accessors ((links-tour links-tour)) object diff --git a/src/gui/server/public-api-gemini-tour-links.lisp b/src/gui/server/public-api-gemini-tour-links.lisp index bc0b8e6..c8d80e8 100644 --- a/src/gui/server/public-api-gemini-tour-links.lisp +++ b/src/gui/server/public-api-gemini-tour-links.lisp @@ -25,9 +25,9 @@ (defun tour-add-link (link-value link-label) (progn (add-tour-link *gemini-window* - (make-instance 'gemini-parser:gemini-link - :name link-label - :target link-value)) + (make-instance 'gemini-parser:gemini-link + :name link-label + :target link-value)) t)) (defclass popped-tour-link (box) ())