UI, Client: Move invite-component form to ProjectComponentsR and use getCapability
This commit is contained in:
parent
6cdd332d1d
commit
d04f161203
5 changed files with 26 additions and 45 deletions
|
@ -38,7 +38,6 @@ module Vervis.Handler.Project
|
|||
, getProjectComponentsR
|
||||
, getProjectCollabLiveR
|
||||
|
||||
, getProjectInviteCompR
|
||||
, postProjectInviteCompR
|
||||
|
||||
, getProjectChildrenR
|
||||
|
@ -484,6 +483,12 @@ getProjectComponentsR projectHash = do
|
|||
return (i E.^. InstanceHost, ro E.^. RemoteObjectIdent)
|
||||
|
||||
getHtml projectID = do
|
||||
mp <- maybeAuthId
|
||||
haveAdmin <- fmap isJust $ handlerToWidget $ runDB $ runMaybeT $ do
|
||||
personID <- MaybeT $ pure mp
|
||||
project <- lift $ get404 projectID
|
||||
MaybeT $ getCapability personID (Left $ projectResource project) AP.RoleAdmin
|
||||
((_, widgetIC), enctypeIC) <- handlerToWidget $ runFormPost projectInviteCompForm
|
||||
(project, actor, comps, drafts) <- handlerToWidget $ runDB $ do
|
||||
project <- get404 projectID
|
||||
actor <- getJust $ projectActor project
|
||||
|
@ -556,12 +561,6 @@ getProjectCollabLiveR projectHash enableHash = do
|
|||
Collab _ resourceID' <- getJust collabID
|
||||
unless (resourceID == resourceID') notFound
|
||||
|
||||
getProjectInviteCompR :: KeyHashid Project -> Handler Html
|
||||
getProjectInviteCompR projectHash = do
|
||||
projectID <- decodeKeyHashid404 projectHash
|
||||
((_result, widget), enctype) <- runFormPost projectInviteCompForm
|
||||
defaultLayout $(widgetFile "project/component-new")
|
||||
|
||||
postProjectInviteCompR :: KeyHashid Project -> Handler Html
|
||||
postProjectInviteCompR projectHash = do
|
||||
projectID <- decodeKeyHashid404 projectHash
|
||||
|
@ -575,27 +574,22 @@ postProjectInviteCompR projectHash = do
|
|||
result <- runExceptT $ do
|
||||
(maybeSummary, audience, invite) <-
|
||||
C.inviteComponent personID projectID uComp
|
||||
grantID <- do
|
||||
cap <- do
|
||||
maybeItem <- lift $ runDB $ do
|
||||
resourceID <- projectResource <$> get404 projectID
|
||||
getGrant resourceID personID
|
||||
fromMaybeE maybeItem "You need to be a collaborator in the Project to invite people"
|
||||
grantHash <- encodeKeyHashid grantID
|
||||
let uCap = encodeRouteHome $ ProjectOutboxItemR projectHash grantHash
|
||||
getCapability personID (Left resourceID) AP.RoleAdmin
|
||||
fromMaybeE maybeItem "You need to be have Admin access to the Project to invite components"
|
||||
uCap <- lift $ renderActivityURI cap
|
||||
(localRecips, remoteRecips, fwdHosts, action) <-
|
||||
C.makeServerInput (Just uCap) maybeSummary audience $ AP.InviteActivity invite
|
||||
let cap =
|
||||
Left (LocalActorProject projectID, LocalActorProject projectHash, grantID)
|
||||
let cap' = first (\ (la, i) -> (la, error "lah", i)) cap
|
||||
handleViaActor
|
||||
personID (Just cap) localRecips remoteRecips fwdHosts action
|
||||
personID (Just cap') localRecips remoteRecips fwdHosts action
|
||||
|
||||
case result of
|
||||
Left e -> do
|
||||
setMessage $ toHtml e
|
||||
redirect $ ProjectInviteCompR projectHash
|
||||
Right inviteID -> do
|
||||
setMessage "Invite sent"
|
||||
redirect $ ProjectComponentsR projectHash
|
||||
Left e -> setMessage $ toHtml e
|
||||
Right inviteID -> setMessage "Invite sent"
|
||||
redirect $ ProjectComponentsR projectHash
|
||||
|
||||
getProjectChildrenR :: KeyHashid Project -> Handler TypedContent
|
||||
getProjectChildrenR projectHash = do
|
||||
|
|
|
@ -130,7 +130,7 @@ followW' (Right actorID) = do
|
|||
[whamlet|
|
||||
<button type="button" disabled>
|
||||
Following
|
||||
^{buttonW POST "Unfollow" (UnfollowRemoteR actorID)}
|
||||
^{buttonW POST "Unfollow" (UnfollowRemoteR actorID)}
|
||||
|]
|
||||
else if alreadyRequest
|
||||
then
|
||||
|
@ -142,7 +142,7 @@ followW' (Right actorID) = do
|
|||
[whamlet|
|
||||
<button type="button" disabled>
|
||||
Not following
|
||||
^{buttonW POST "Follow" (FollowRemoteR actorID)}
|
||||
^{buttonW POST "Follow" (FollowRemoteR actorID)}
|
||||
|]
|
||||
|
||||
personNavW :: Entity Person -> Widget
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
$# This file is part of Vervis.
|
||||
$#
|
||||
$# Written in 2016, 2023 by fr33domlover <fr33domlover@riseup.net>.
|
||||
$#
|
||||
$# ♡ Copying is an act of love. Please copy, reuse and share.
|
||||
$#
|
||||
$# The author(s) have dedicated all copyright and related and neighboring
|
||||
$# rights to this software to the public domain worldwide. This software is
|
||||
$# distributed without any warranty.
|
||||
$#
|
||||
$# You should have received a copy of the CC0 Public Domain Dedication along
|
||||
$# with this software. If not, see
|
||||
$# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||
|
||||
<form method=POST action=@{ProjectInviteCompR projectHash} enctype=#{enctype}>
|
||||
^{widget}
|
||||
<div class="submit">
|
||||
<input type="submit">
|
|
@ -1,6 +1,7 @@
|
|||
$# This file is part of Vervis.
|
||||
$#
|
||||
$# Written in 2016, 2019, 2022, 2023 by fr33domlover <fr33domlover@riseup.net>.
|
||||
$# Written in 2016, 2019, 2022, 2023, 2024
|
||||
$# by fr33domlover <fr33domlover@riseup.net>.
|
||||
$#
|
||||
$# ♡ Copying is an act of love. Please copy, reuse and share.
|
||||
$#
|
||||
|
@ -28,6 +29,12 @@ $# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
|||
<td>#{showDate since}
|
||||
$# <td>^{buttonW POST "Remove" (ProjectRemoveR projectHash ctID)}
|
||||
|
||||
$if haveAdmin
|
||||
<p>Invite a component:
|
||||
<form method=POST action=@{ProjectInviteCompR projectHash} enctype=#{enctypeIC}>
|
||||
^{widgetIC}
|
||||
<input type="submit">
|
||||
|
||||
<h2>Component requests in progress
|
||||
|
||||
<table>
|
||||
|
@ -38,5 +45,3 @@ $# <td>^{buttonW POST "Remove" (ProjectRemoveR projectHash ctID)}
|
|||
<tr>
|
||||
<td>#{show role}
|
||||
<td>^{componentLinkFedW comp}
|
||||
|
||||
<a href=@{ProjectInviteCompR projectHash}>Invite…
|
||||
|
|
|
@ -359,7 +359,7 @@
|
|||
/projects/#ProjectKeyHashid/components ProjectComponentsR GET
|
||||
/projects/#ProjectKeyHashid/collabs/#CollabEnableKeyHashid/live ProjectCollabLiveR GET
|
||||
|
||||
/projects/#ProjectKeyHashid/invite-component ProjectInviteCompR GET POST
|
||||
/projects/#ProjectKeyHashid/invite-component ProjectInviteCompR POST
|
||||
|
||||
/projects/#ProjectKeyHashid/children ProjectChildrenR GET
|
||||
/projects/#ProjectKeyHashid/parents ProjectParentsR GET
|
||||
|
|
Loading…
Reference in a new issue