summaryrefslogtreecommitdiff
path: root/src/scm/webid-oidc/client/gui/settings.scm
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/scm/webid-oidc/client/gui/settings.scm
parent56bb47ed6b90d64f77ad8461da14591b07561ecc (diff)
gui: listen for settings changes
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)