restore adblock (rather messy)

phoen
Daniel Barlow 2022-03-14 18:41:34 +00:00
parent b7956d70bb
commit da435b0667
3 changed files with 60 additions and 29 deletions

View File

@ -135,7 +135,7 @@ progress, trough {
container (Gtk.Box { container (Gtk.Box {
:orientation Gtk.Orientation.VERTICAL :orientation Gtk.Orientation.VERTICAL
}) })
viewplex (Viewplex.new) viewplex (Viewplex.new {:content-filter-store content-filter-store})
navbar (Navbar.new viewplex) navbar (Navbar.new viewplex)
progress-bar (Gtk.ProgressBar { progress-bar (Gtk.ProgressBar {
:orientation Gtk.Orientation.HORIZONTAL :orientation Gtk.Orientation.HORIZONTAL
@ -154,11 +154,12 @@ progress, trough {
(if (. arg 1) (if (. arg 1)
(each [_ url (ipairs arg)] (each [_ url (ipairs arg)]
(let [v (Webview.new)] (let [v (Webview.new {:content-filter-store content-filter-store} )]
(v:visit url) (v:visit url)
(viewplex:add-view v))) (viewplex:add-view v)))
(viewplex:add-view (viewplex:add-view
(doto (Webview.new) (: :visit "about:blank")))) (doto (Webview.new {:content-filter-store content-filter-store})
(: :visit "about:blank"))))
(window:add container) (window:add container)
(window:show_all)) (window:show_all))

View File

@ -59,7 +59,8 @@
:height 200 :height 200
:on_clicked (fn [] :on_clicked (fn []
(self:add-view (self:add-view
(doto (Webview.new) (doto (Webview.new
{:content-filter-store self.content-filter-store})
(: :visit "about:blank")))) (: :visit "about:blank"))))
}) })
false false 5) false false 5)
@ -71,7 +72,7 @@
{ {
:new :new
(fn [] (fn [{: content-filter-store}]
(var foreground-view nil) (var foreground-view nil)
(let [listeners (Listeners.new) (let [listeners (Listeners.new)
relay-events [] relay-events []
@ -87,6 +88,7 @@
(listeners:notify event-name $1)))) (listeners:notify event-name $1))))
views {}] views {}]
{ {
:content-filter-store content-filter-store
:listen (fn [_ name fun] :listen (fn [_ name fun]
(if (not (. relay-events name)) (if (not (. relay-events name))
(each [_ v (pairs views)] (each [_ v (pairs views)]

View File

@ -1,7 +1,33 @@
(local { : Gtk : Gdk : WebKit2 : cairo } (require :lgi)) (local { : Gtk : Gdk : WebKit2 : cairo : GLib } (require :lgi))
(local Listeners (require :listeners)) (local Listeners (require :listeners))
(fn load-easylist-json [store cb]
(print "loading easylist from json")
(with-open [f (io.open "easylist_min_content_blocker.json" "r")]
(let [blocks (f:read "*a")]
(store:save "easylist"
(GLib.Bytes blocks)
nil
(fn [self res]
(cb (store:save_finish res)))))))
(fn load-adblocks [content-manager store]
(store:fetch_identifiers
nil
(fn [self res]
(let [ids (store:fetch_identifiers_finish res)
found (icollect [_ id (pairs ids)] (= id "easylist"))]
(if (> (# found) 0)
(store:load "easylist" nil
(fn [self res]
(content-manager:add_filter
(store:load_finish res))))
(load-easylist-json
store
(fn [filter]
(content-manager:add_filter filter))))))))
(fn scale-surface [source image-width image-height] (fn scale-surface [source image-width image-height]
(let [scaled (cairo.ImageSurface.create (let [scaled (cairo.ImageSurface.create
cairo.Format.ARGB32 cairo.Format.ARGB32
@ -34,29 +60,31 @@
{ {
:new :new
#(let [listeners (Listeners.new) (fn [{: content-filter-store}]
props {} (let [listeners (Listeners.new)
widget (WebKit2.WebView { props {}
:on_notify widget (WebKit2.WebView {
(fn [self pspec] :on_notify
(when (not (= pspec.name :parent)) (fn [self pspec]
(let [val (. self pspec.name)] (when (not (= pspec.name :parent))
(tset props pspec.name val) (let [val (. self pspec.name)]
(listeners:notify pspec.name val)))) (tset props pspec.name val)
})] (listeners:notify pspec.name val))))
;;(load-adblocks webview.user_content_manager content-filter-store) })]
{ (when content-filter-store
:listen #(listeners:add $2 $3) (load-adblocks widget.user_content_manager content-filter-store))
:visit (fn [self url] {
(widget:load_uri url)) :listen #(listeners:add $2 $3)
:stop-loading #(widget:stop_loading) :visit (fn [self url]
:refresh #(widget:reload) (widget:load_uri url))
:go-back #(and (widget:can_go_back) (widget:go_back)) :stop-loading #(widget:stop_loading)
:refresh #(widget:reload)
:go-back #(and (widget:can_go_back) (widget:go_back))
:thumbnail-image (fn [self width height fun] :thumbnail-image (fn [self width height fun]
(thumbnail-image widget width height fun)) (thumbnail-image widget width height fun))
:properties props :properties props
:widget widget :widget widget
}) }))
} }