Compare commits
1 commit
master
...
rss-with-c
Author | SHA1 | Date | |
---|---|---|---|
|
4aee13abb5 |
|
@ -153,6 +153,7 @@ noteToRssEntry usernamep (Entity entryId entry) =
|
||||||
, feedEntryTitle = (noteTitle entry)
|
, feedEntryTitle = (noteTitle entry)
|
||||||
, feedEntryContent = (toHtml (noteText entry))
|
, feedEntryContent = (toHtml (noteText entry))
|
||||||
, feedEntryEnclosure = Nothing
|
, feedEntryEnclosure = Nothing
|
||||||
|
, feedEntryCategories = []
|
||||||
}
|
}
|
||||||
|
|
||||||
getNotesFeedR :: UserNameP -> Handler RepRss
|
getNotesFeedR :: UserNameP -> Handler RepRss
|
||||||
|
|
|
@ -7,6 +7,7 @@ import Import
|
||||||
import Text.Blaze.Html (toHtml)
|
import Text.Blaze.Html (toHtml)
|
||||||
import qualified Text.Blaze.Html5 as H
|
import qualified Text.Blaze.Html5 as H
|
||||||
import Yesod.RssFeed
|
import Yesod.RssFeed
|
||||||
|
import qualified Database.Esqueleto as E
|
||||||
|
|
||||||
getUserR :: UserNameP -> Handler Html
|
getUserR :: UserNameP -> Handler Html
|
||||||
getUserR uname@(UserNameP name) = do
|
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)();
|
PS['Main'].renderBookmarks('##{rawJS renderEl}')(app.dat.bmarks)();
|
||||||
|]
|
|]
|
||||||
|
|
||||||
bookmarkToRssEntry :: Entity Bookmark -> FeedEntry Text
|
bookmarkToRssEntry :: (Entity Bookmark,[Text]) -> FeedEntry Text
|
||||||
bookmarkToRssEntry (Entity entryId entry) =
|
bookmarkToRssEntry ((Entity entryId entry), tags) =
|
||||||
FeedEntry { feedEntryLink = (bookmarkHref entry)
|
FeedEntry { feedEntryLink = (bookmarkHref entry)
|
||||||
, feedEntryUpdated = (bookmarkTime entry)
|
, feedEntryUpdated = (bookmarkTime entry)
|
||||||
, feedEntryTitle = (bookmarkDescription entry)
|
, feedEntryTitle = (bookmarkDescription entry)
|
||||||
, feedEntryContent = (toHtml (bookmarkExtended entry))
|
, feedEntryContent = (toHtml (bookmarkExtended entry))
|
||||||
|
, feedEntryCategories = map (EntryCategory Nothing Nothing) tags
|
||||||
, feedEntryEnclosure = Nothing
|
, 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 :: UserNameP -> Handler RepRss
|
||||||
getUserFeedR unamep@(UserNameP uname) = do
|
getUserFeedR unamep@(UserNameP uname) = do
|
||||||
mauthuname <- maybeAuthUsername
|
mauthuname <- maybeAuthUsername
|
||||||
|
@ -83,14 +92,17 @@ getUserFeedR unamep@(UserNameP uname) = do
|
||||||
queryp = "query" :: Text
|
queryp = "query" :: Text
|
||||||
isowner = maybe False (== uname) mauthuname
|
isowner = maybe False (== uname) mauthuname
|
||||||
mquery <- lookupGetParam queryp
|
mquery <- lookupGetParam queryp
|
||||||
(_, bmarks) <-
|
(_, bmarks, alltags) <-
|
||||||
runDB $
|
runDB $
|
||||||
do Entity userId user <- getBy404 (UniqueUserName uname)
|
do Entity userId user <- getBy404 (UniqueUserName uname)
|
||||||
when (not isowner && userPrivacyLock user)
|
when (not isowner && userPrivacyLock user)
|
||||||
(redirect (AuthR LoginR))
|
(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)
|
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
|
updated <- case maximumMay (map feedEntryUpdated entries) of
|
||||||
Nothing -> liftIO $ getCurrentTime
|
Nothing -> liftIO $ getCurrentTime
|
||||||
Just m -> return m
|
Just m -> return m
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
resolver: lts-14.3
|
resolver: lts-14.3
|
||||||
# allow-newer: true
|
# allow-newer: true
|
||||||
extra-deps:
|
packages:
|
||||||
|
- '.'
|
||||||
|
extra-deps:
|
||||||
- ekg-0.4.0.15
|
- ekg-0.4.0.15
|
||||||
- ekg-json-0.1.0.6
|
- ekg-json-0.1.0.6
|
||||||
- monad-metrics-0.2.1.4
|
- monad-metrics-0.2.1.4
|
||||||
- wai-middleware-metrics-0.2.4
|
- wai-middleware-metrics-0.2.4
|
||||||
packages:
|
- yesod-newsfeed-1.7.0.0
|
||||||
- '.'
|
|
||||||
|
|
|
@ -32,6 +32,13 @@ packages:
|
||||||
sha256: 99366b831109417cd8e739fb45e9fd214cb79f28a507f8154e5528120042d0ac
|
sha256: 99366b831109417cd8e739fb45e9fd214cb79f28a507f8154e5528120042d0ac
|
||||||
original:
|
original:
|
||||||
hackage: wai-middleware-metrics-0.2.4
|
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:
|
snapshots:
|
||||||
- completed:
|
- completed:
|
||||||
size: 523878
|
size: 523878
|
||||||
|
|
Loading…
Reference in a new issue