summaryrefslogtreecommitdiff
path: root/src/scm/webid-oidc/client/gui/settings.scm
diff options
context:
space:
mode:
Diffstat (limited to 'src/scm/webid-oidc/client/gui/settings.scm')
-rw-r--r--src/scm/webid-oidc/client/gui/settings.scm26
1 files changed, 26 insertions, 0 deletions
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)