explicit first and last, and no field selectors
This commit is contained in:
parent
a0bdd57e83
commit
931e075067
3 changed files with 14 additions and 5 deletions
|
@ -53,6 +53,7 @@ library
|
|||
DeriveAnyClass
|
||||
DerivingStrategies
|
||||
DuplicateRecordFields
|
||||
NoFieldSelectors
|
||||
|
||||
executable fedi
|
||||
import: warnings
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
module Fedi.Activity where
|
||||
|
||||
import Data.Maybe (listToMaybe)
|
||||
import Data.Aeson qualified as A
|
||||
import Data.Text qualified as T
|
||||
import Fedi.Types
|
||||
|
@ -14,6 +13,10 @@ data Activity
|
|||
, object :: Object
|
||||
}
|
||||
|
||||
activityUrl :: Activity -> ActivityUrl
|
||||
activityUrl = \case
|
||||
create@Create{} -> create.id
|
||||
|
||||
type ActivityUrl = Url
|
||||
|
||||
data Object
|
||||
|
@ -52,6 +55,8 @@ data Collection order a
|
|||
= Collection
|
||||
{ summary :: String
|
||||
, items :: [a]
|
||||
, first :: Maybe Url
|
||||
, last :: Maybe Url
|
||||
}
|
||||
|
||||
instance A.ToJSON Note where
|
||||
|
@ -95,8 +100,8 @@ instance A.ToJSON a => A.ToJSON (Collection Ordered a) where
|
|||
, "summary" A..= collection.summary
|
||||
, "totalItems" A..= length collection.items
|
||||
, "orderedItems" A..= collection.items
|
||||
, "first" A..= listToMaybe (take 1 collection.items)
|
||||
, "last" A..= listToMaybe (take 1 $ reverse collection.items)
|
||||
, "first" A..= collection.first
|
||||
, "last" A..= collection.last
|
||||
]
|
||||
|
||||
instance A.ToJSON a => A.ToJSON (Collection Unordered a) where
|
||||
|
@ -109,8 +114,8 @@ instance A.ToJSON a => A.ToJSON (Collection Unordered a) where
|
|||
, "summary" A..= collection.summary
|
||||
, "totalItems" A..= length collection.items
|
||||
, "items" A..= collection.items
|
||||
, "first" A..= listToMaybe (take 1 collection.items)
|
||||
, "last" A..= listToMaybe (take 1 $ reverse collection.items)
|
||||
, "first" A..= collection.first
|
||||
, "last" A..= collection.last
|
||||
]
|
||||
|
||||
instance A.ToJSON a => A.ToJSON (OrderedCollectionPage a) where
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
module Fedi.Routes where
|
||||
|
||||
import Data.Maybe (listToMaybe)
|
||||
import Web.Twain qualified as Twain
|
||||
import Web.Twain.Types qualified as Twain
|
||||
import Data.String (fromString)
|
||||
|
@ -91,6 +92,8 @@ handleOutbox details items = do
|
|||
Collection
|
||||
{ summary = details.username <> "'s notes"
|
||||
, items = items
|
||||
, first = Just $ outboxUrl <> "?page=true"
|
||||
, last = Nothing
|
||||
}
|
||||
in A.encode content
|
||||
Twain.send $ jsonLD response
|
||||
|
|
Loading…
Add table
Reference in a new issue