From 8b6c42d832f26bc277e125f876da8d21931550c6 Mon Sep 17 00:00:00 2001 From: stuebinm Date: Thu, 16 Apr 2026 01:55:48 +0200 Subject: Server.Frontend.Tracker: add tracker list overview --- lib/Server/Frontend/Routes.hs | 1 + lib/Server/Frontend/Tracker.hs | 22 +++++++++++++++++++++- lib/Yesod/Auth/Uffd.hs | 2 +- 3 files changed, 23 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/Server/Frontend/Routes.hs b/lib/Server/Frontend/Routes.hs index fa3a9ce..cf6e342 100644 --- a/lib/Server/Frontend/Routes.hs +++ b/lib/Server/Frontend/Routes.hs @@ -45,6 +45,7 @@ mkYesodData "Frontend" [parseRoutes| /ticket/announce/#UUID AnnounceR POST /ticket/del-announce/#UUID DelAnnounceR GET +/trackers TrackersR GET /tracker/#Text TrackerViewR GET /ticker/announce TickerAnnounceR POST diff --git a/lib/Server/Frontend/Tracker.hs b/lib/Server/Frontend/Tracker.hs index 23bbdb9..e3d88ba 100644 --- a/lib/Server/Frontend/Tracker.hs +++ b/lib/Server/Frontend/Tracker.hs @@ -1,9 +1,11 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE QuasiQuotes #-} -module Server.Frontend.Tracker (getTrackerViewR) where +module Server.Frontend.Tracker (getTrackerViewR, getTrackersR) where import Data.Coerce (coerce) +import Data.Function ((&)) import Data.Functor ((<&>)) +import qualified Data.Map as M import Data.Text (Text) import qualified Data.Text as T import Data.Time (getCurrentTime) @@ -16,6 +18,24 @@ import Yesod hiding (update, (=.), (==.)) import OwnTracks.Status + +getTrackersR :: Handler Html +getTrackersR = do + trackers <- runDB $ select do + (t :& p) <- from $ + (table @Tracker) `LeftOuterJoin` (table @Ping) + `on` \(t :& p) -> just (t ^. TrackerId) ==. p ?. PingTrackerId + pure (t, p) + & fmap associateJoin + + defaultLayout [whamlet| +

Trackers +
+