diff options
| author | Danilo M. <danix@danix.xyz> | 2026-09-15 17:59:35 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-09-15 17:59:35 +0200 |
| commit | 3b8a0e0f4a5c28394ac578e8559bf57ae82d3fd2 (patch) | |
| tree | fafa293256cca4615e4725553a391bf8dfdee99b /internal/notify/service.go | |
| parent | a248608721e813d5e6d19fc79d2505a2a8c2716a (diff) | |
| download | notifyd-3b8a0e0f4a5c28394ac578e8559bf57ae82d3fd2.tar.gz notifyd-3b8a0e0f4a5c28394ac578e8559bf57ae82d3fd2.zip | |
feat(notify): add the image field and its cleanup
Popup gains image, and the store calls an injected removeImage when an
entry is dismissed, evicted, replaced or expired, so a daemon-written
PNG does not outlive its balloon. The service decides what is
daemon-owned; the store only names the path.
NewStore now takes the callback as a third parameter, so the service
wires its removeImage in (unlinking only under ImagesDir) and the
existing call sites pass nil.
Diffstat (limited to 'internal/notify/service.go')
| -rw-r--r-- | internal/notify/service.go | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/internal/notify/service.go b/internal/notify/service.go index 22d7830..d46293f 100644 --- a/internal/notify/service.go +++ b/internal/notify/service.go @@ -13,6 +13,8 @@ package notify import ( "log" + "os" + "strings" "sync" "time" @@ -45,10 +47,22 @@ func NewService(conn *dbus.Conn, dir string) *Service { if err := Publish(s.dir, live, history); err != nil { log.Printf("notifyd: publish: %v", err) } - }) + }, s.removeImage) return s } +// removeImage unlinks only what the daemon wrote, so a client's own image-path +// is never touched. +func (s *Service) removeImage(path string) { + if path == "" { + return + } + if !strings.HasPrefix(path, ImagesDir(s.dir)+string(os.PathSeparator)) { + return + } + os.Remove(path) +} + // Start exports the interfaces and empties the state. Nothing from a previous // run is resurrected. func (s *Service) Start() error { |
