From 8679518ca3434f7353490a75dfbd0eeccf547cc2 Mon Sep 17 00:00:00 2001 From: Daniel Barlow Date: Fri, 4 Mar 2022 00:01:48 +0000 Subject: [PATCH] extract notify-listeners and listen to functions --- just/just.fnl | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/just/just.fnl b/just/just.fnl index 28aae5a..b77f027 100644 --- a/just/just.fnl +++ b/just/just.fnl @@ -17,27 +17,31 @@ (.. cache-dir "/cookies.db") WebKit2.CookiePersistentStorage.SQLITE)) +(fn notify-listeners [listeners name value] + (let [funs (. listeners name)] + (when funs + (each [_ f (ipairs funs)] + (f value))))) + +(fn add-listener [listeners event-name fun] + (let [funs (or (. listeners event-name) [])] + (table.insert funs fun) + (tset listeners event-name funs))) + (local Webview { :new #(let [listeners {} - notify-listeners (fn [self pspec] - (let [n pspec.name - funs (. listeners n)] - (when funs - (each [_ f (ipairs funs)] - (f (. self n)))))) widget (WebKit2.WebView { :on_notify - #(notify-listeners $1 $2) + (fn [self pspec] + (when (not (= pspec.name :parent)) + (notify-listeners listeners pspec.name (. self pspec.name)))) })] ;;(load-adblocks webview.user_content_manager content-filter-store) { - :listen (fn [self event-name fun] - (let [funs (or (. listeners event-name) [])] - (table.insert funs fun) - (tset listeners event-name funs))) + :listen #(add-listener listeners $2 $3) :visit (fn [self url] (widget:load_uri url)) :stop-loading #(widget:stop_loading)