summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2021-09-27 19:20:02 +0200
committerVivien Kraus <vivien@planete-kraus.eu>2021-10-01 12:32:20 +0200
commit6eea60849411643532979d35430ec50f3acb2eae (patch)
treec01f906a4b7314c04075ef5f0e791367badafa49 /src
parent56bb47ed6b90d64f77ad8461da14591b07561ecc (diff)
gui: listen for settings changes
Diffstat (limited to 'src')
-rw-r--r--src/scm/webid-oidc/client/gui.scm14
-rw-r--r--src/scm/webid-oidc/client/gui/settings.scm26
2 files changed, 38 insertions, 2 deletions
diff --git a/src/scm/webid-oidc/client/gui.scm b/src/scm/webid-oidc/client/gui.scm
index c446fc7..45910e3 100644
--- a/src/scm/webid-oidc/client/gui.scm
+++ b/src/scm/webid-oidc/client/gui.scm
@@ -33,8 +33,9 @@
#:use-module ((webid-oidc oidc-id-token) #:prefix id:)
#:use-module ((webid-oidc jwk) #:prefix jwk:)
#:use-module ((webid-oidc dpop-proof) #:prefix dpop:)
- #:use-module ((webid-oidc client client) #:prefix client:)
- #:use-module ((webid-oidc client gui settings) #:prefix settings)
+ #:use-module (webid-oidc client)
+ #:use-module (webid-oidc client accounts)
+ #:use-module ((webid-oidc client gui settings) #:prefix settings:)
#:use-module (web uri)
#:use-module (web response)
#:use-module (rnrs bytevectors)
@@ -54,6 +55,15 @@
(use-typelibs (("Gio" "2.0") #:renamer (protect 'application:new))
("Gtk" "3.0"))
+(add-hook! settings:client-changed-hook
+ (lambda (client)
+ (format #t (G_ "The client changed: it is now ~a.\n") client)))
+
+(add-hook! settings:accounts-changed-hook
+ (lambda (main other)
+ (format #t (G_ "The accounts changed: the main account is ~a, and the others are ~a.\n")
+ main other)))
+
(define (print-hello button)
(format #t (G_ "Hello, world!\n")))
diff --git a/src/scm/webid-oidc/client/gui/settings.scm b/src/scm/webid-oidc/client/gui/settings.scm
index 5ce62b0..57ebbfb 100644
--- a/src/scm/webid-oidc/client/gui/settings.scm
+++ b/src/scm/webid-oidc/client/gui/settings.scm
@@ -45,6 +45,9 @@
client
main-account
other-accounts
+
+ client-changed-hook
+ accounts-changed-hook
))
(push-duplicate-handler! 'merge-generics)
@@ -208,3 +211,26 @@
(match-lambda*
(() (get-other-accounts))
((value) (set-other-accounts! value))))
+
+(define client-changed-hook
+ (make-hook 1))
+
+(define accounts-changed-hook
+ (make-hook 2))
+
+(connect client-settings change-event
+ (lambda _
+ (run-hook client-changed-hook (client))
+ #f))
+
+(define (run-accounts-changed-hook . _)
+ (run-hook accounts-changed-hook
+ (main-account)
+ (other-accounts))
+ #f)
+
+(connect main-account-settings change-event run-accounts-changed-hook)
+(for-each
+ (lambda (settings)
+ (connect settings change-event run-accounts-changed-hook))
+ other-accounts-settings)