Don't list non-public follows in follower collections
This commit is contained in:
parent
544ebae3fd
commit
3a68a3e7e6
1 changed files with 15 additions and 8 deletions
|
@ -776,10 +776,13 @@ pushCommitsC (eperson, sharer) summary push shrRepo rpRepo = runExceptT $ do
|
|||
getFollowersCollection
|
||||
:: Route App -> AppDB FollowerSetId -> Handler TypedContent
|
||||
getFollowersCollection here getFsid = do
|
||||
(locals, remotes) <- runDB $ do
|
||||
(locals, remotes, l, r) <- runDB $ do
|
||||
fsid <- getFsid
|
||||
(,) <$> do pids <- map (followPerson . entityVal) <$>
|
||||
selectList [FollowTarget ==. fsid] []
|
||||
(,,,) <$> do pids <-
|
||||
map (followPerson . entityVal) <$>
|
||||
selectList
|
||||
[FollowTarget ==. fsid, FollowPublic ==. True]
|
||||
[]
|
||||
sids <-
|
||||
map (personIdent . entityVal) <$>
|
||||
selectList [PersonId <-. pids] []
|
||||
|
@ -788,18 +791,22 @@ getFollowersCollection here getFsid = do
|
|||
<*> do E.select $ E.from $ \ (rf `E.InnerJoin` ra `E.InnerJoin` i) -> do
|
||||
E.on $ ra E.^. RemoteActorInstance E.==. i E.^. InstanceId
|
||||
E.on $ rf E.^. RemoteFollowActor E.==. ra E.^. RemoteActorId
|
||||
E.where_ $ rf E.^. RemoteFollowTarget E.==. E.val fsid
|
||||
E.where_
|
||||
$ rf E.^. RemoteFollowTarget E.==. E.val fsid
|
||||
E.&&. rf E.^. RemoteFollowPublic E.==. E.val True
|
||||
return
|
||||
( i E.^. InstanceHost
|
||||
, ra E.^. RemoteActorIdent
|
||||
)
|
||||
<*> count [FollowTarget ==. fsid]
|
||||
<*> count [RemoteFollowTarget ==. fsid]
|
||||
|
||||
encodeRouteLocal <- getEncodeRouteLocal
|
||||
encodeRouteHome <- getEncodeRouteHome
|
||||
let followersAP = Collection
|
||||
{ collectionId = encodeRouteLocal here
|
||||
, collectionType = CollectionTypeUnordered
|
||||
, collectionTotalItems = Just $ length locals + length remotes
|
||||
, collectionTotalItems = Just $ l + r
|
||||
, collectionCurrent = Nothing
|
||||
, collectionFirst = Nothing
|
||||
, collectionLast = Nothing
|
||||
|
|
Loading…
Reference in a new issue