Add bookmark tags as RSS categories

This commit is contained in:
Yann Esposito (Yogsototh) 2019-09-29 22:28:14 +02:00
parent fcec9f3074
commit 4aee13abb5
Signed by untrusted user who does not match committer: yogsototh
GPG key ID: 7B19A4C650D59646
4 changed files with 29 additions and 8 deletions

View file

@ -153,6 +153,7 @@ noteToRssEntry usernamep (Entity entryId entry) =
, feedEntryTitle = (noteTitle entry)
, feedEntryContent = (toHtml (noteText entry))
, feedEntryEnclosure = Nothing
, feedEntryCategories = []
}
getNotesFeedR :: UserNameP -> Handler RepRss

View file

@ -7,6 +7,7 @@ import Import
import Text.Blaze.Html (toHtml)
import qualified Text.Blaze.Html5 as H
import Yesod.RssFeed
import qualified Database.Esqueleto as E
getUserR :: UserNameP -> Handler Html
getUserR uname@(UserNameP name) = do
@ -65,15 +66,23 @@ _getUser unamep@(UserNameP uname) sharedp' filterp' (TagsP pathtags) = do
PS['Main'].renderBookmarks('##{rawJS renderEl}')(app.dat.bmarks)();
|]
bookmarkToRssEntry :: Entity Bookmark -> FeedEntry Text
bookmarkToRssEntry (Entity entryId entry) =
bookmarkToRssEntry :: (Entity Bookmark,[Text]) -> FeedEntry Text
bookmarkToRssEntry ((Entity entryId entry), tags) =
FeedEntry { feedEntryLink = (bookmarkHref entry)
, feedEntryUpdated = (bookmarkTime entry)
, feedEntryTitle = (bookmarkDescription entry)
, feedEntryContent = (toHtml (bookmarkExtended entry))
, feedEntryCategories = map (EntryCategory Nothing Nothing) tags
, feedEntryEnclosure = Nothing
}
toBookmarkWithTagsList :: [Entity Bookmark] -> [Entity BookmarkTag] -> [(Entity Bookmark, [Text])]
toBookmarkWithTagsList bs as = do
b <- bs
let bid = E.entityKey b
let btags = filter ((==) bid . bookmarkTagBookmarkId . E.entityVal) as
pure $ (b, map (bookmarkTagTag . E.entityVal) btags)
getUserFeedR :: UserNameP -> Handler RepRss
getUserFeedR unamep@(UserNameP uname) = do
mauthuname <- maybeAuthUsername
@ -83,14 +92,17 @@ getUserFeedR unamep@(UserNameP uname) = do
queryp = "query" :: Text
isowner = maybe False (== uname) mauthuname
mquery <- lookupGetParam queryp
(_, bmarks) <-
(_, bmarks, alltags) <-
runDB $
do Entity userId user <- getBy404 (UniqueUserName uname)
when (not isowner && userPrivacyLock user)
(redirect (AuthR LoginR))
bookmarksQuery userId SharedPublic FilterAll [] mquery limit page
(cnt, bm) <- bookmarksQuery userId SharedPublic FilterAll [] mquery limit page
tg <- tagsQuery bm
pure (cnt, bm, tg)
let (descr :: Html) = toHtml $ H.text ("Bookmarks saved by " <> uname)
entries = map bookmarkToRssEntry bmarks
entriesWithTags = toBookmarkWithTagsList bmarks alltags
entries = map bookmarkToRssEntry entriesWithTags
updated <- case maximumMay (map feedEntryUpdated entries) of
Nothing -> liftIO $ getCurrentTime
Just m -> return m

View file

@ -1,9 +1,10 @@
resolver: lts-14.3
# allow-newer: true
extra-deps:
packages:
- '.'
extra-deps:
- ekg-0.4.0.15
- ekg-json-0.1.0.6
- monad-metrics-0.2.1.4
- wai-middleware-metrics-0.2.4
packages:
- '.'
- yesod-newsfeed-1.7.0.0

View file

@ -32,6 +32,13 @@ packages:
sha256: 99366b831109417cd8e739fb45e9fd214cb79f28a507f8154e5528120042d0ac
original:
hackage: wai-middleware-metrics-0.2.4
- completed:
hackage: yesod-newsfeed-1.7.0.0@sha256:ba49f9af47fe96c521ed889bf041c559b4bddb60a81f385449f7557f8f4aaef2,1345
pantry-tree:
size: 488
sha256: 96027436cc6dc07bca3f691f2d17a5b3993e980f73076c7b1b4d9c5c3ac5cb86
original:
hackage: yesod-newsfeed-1.7.0.0
snapshots:
- completed:
size: 523878