1
0
Fork 0

- changed macro with a function.

This commit is contained in:
cage 2021-06-18 17:48:56 +02:00
parent f39e396762
commit 70d9fb5c0c
6 changed files with 26 additions and 27 deletions

View File

@ -663,13 +663,14 @@
(push-url-to-history specials:*message-window* actual-iri)
(gemini-client:request-dispatch url gemini-client::dispatch-table)))))
(gemini-client:gemini-tofu-error (e)
(gemini-client:with-ask-input-on-tofu-error (e)
(request url
:enqueue enqueue
:certificate certificate
:certificate-key certificate-key
:do-nothing-if-exists-in-db
do-nothing-if-exists-in-db)))
(ui:ask-input-on-tofu-error e
(lambda ()
(request url
:enqueue enqueue
:certificate certificate
:certificate-key certificate-key
:do-nothing-if-exists-in-db
do-nothing-if-exists-in-db))))
(conditions:not-implemented-error (e)
(ui:notify (format nil (_ "Error: ~a") e)
:as-error t))

View File

@ -523,18 +523,3 @@ TODO: Add client certificate."
:ignore-warning t)
(request-dispatch url dispatch-table))
(fs:slurp-file url :convert-to-string nil))))
(defmacro with-ask-input-on-tofu-error ((condition) &body body)
(with-gensyms (host)
`(let ((,host (gemini-client:host ,condition)))
(flet ((on-input-complete (maybe-accepted)
(when (ui::boolean-input-accepted-p maybe-accepted)
(db-utils:with-ready-database (:connect nil)
(db:tofu-delete ,host)
,@body))))
(ui:ask-string-input #'on-input-complete
:prompt
(format nil
(_ "Host ~s signature changed! This is a potential security risk! Ignore this warning? [y/N] ")
,host)
:priority program-events:+standard-event-priority+)))))

View File

@ -147,8 +147,7 @@
:with-request-dispatch-table
:fetch-cached-certificate
:build-redirect-iri
:slurp-gemini-url
:with-ask-input-on-tofu-error))
:slurp-gemini-url))
(defpackage :gemini-subscription
(:use

View File

@ -86,5 +86,4 @@ be subscribed before (see: 'gemini-subscription:subcribe'"
date
nil))))))
(gemini-client:gemini-tofu-error (e)
(with-ask-input-on-tofu-error (e)
(refresh url)))))
(ui:ask-input-on-tofu-error e (lambda () (refresh url))))))

View File

@ -2565,7 +2565,8 @@
:pass-focus-on-left
:pass-focus-on-right
:pass-focus-on-bottom
:pass-focus-on-top))
:pass-focus-on-top
:ask-input-on-tofu-error))
(defpackage :scheduled-events
(:use

View File

@ -1985,3 +1985,17 @@ gemini page the program is rendering."
(defun gemini-toc-scroll-up-page ()
(message-window:scroll-up *message-window*))
(defun ask-input-on-tofu-error (condition fn)
(let ((host (gemini-client:host condition)))
(flet ((on-input-complete (maybe-accepted)
(when (ui::boolean-input-accepted-p maybe-accepted)
(db-utils:with-ready-database (:connect nil)
(db:tofu-delete host)
(funcall fn)))))
(ui:ask-string-input #'on-input-complete
:prompt
(format nil
(_ "Host ~s signature changed! This is a potential security risk! Ignore this warning? [y/N] ")
host)
:priority program-events:+standard-event-priority+))))