UI: Repo, Loom: Update collaborators view & buttons, similar to Deck

This commit is contained in:
Pere Lev 2024-05-18 00:46:03 +03:00
parent 5c6e73a3d4
commit 97dee05af8
No known key found for this signature in database
GPG key ID: 5252C5C863E5E57D
6 changed files with 121 additions and 28 deletions

View file

@ -928,8 +928,6 @@ instance YesodBreadcrumbs App where
RepoNewR -> ("New Repo", Just HomeR)
RepoDeleteR r -> ("", Nothing)
RepoEditR r -> ("Edit", Just $ RepoR r)
RepoFollowR r -> ("", Nothing)
RepoUnfollowR r -> ("", Nothing)
PostReceiveR -> ("", Nothing)
@ -938,6 +936,8 @@ instance YesodBreadcrumbs App where
RepoStampR r k -> ("Stamp #" <> keyHashidText k, Just $ RepoR r)
RepoCollabsR r -> ("Collaborators", Just $ RepoR r)
RepoInviteR _ -> ("", Nothing)
RepoRemoveR _ _ -> ("", Nothing)
RepoProjectsR r -> ("Projects", Just $ RepoR r)
RepoTeamsR r -> ("Teams", Just $ RepoR r)
@ -965,7 +965,7 @@ instance YesodBreadcrumbs App where
DeckCollabsR d -> ("Collaborators", Just $ DeckR d)
DeckInviteR d -> ("Invite", Just $ DeckR d)
DeckInviteR _ -> ("", Nothing)
DeckRemoveR _ _ -> ("", Nothing)
DeckProjectsR d -> ("Projects", Just $ DeckR d)
@ -1006,12 +1006,12 @@ instance YesodBreadcrumbs App where
LoomMessageR l m -> ("Message #" <> keyHashidText m, Just $ LoomR l)
LoomNewR -> ("New Patch Tracker", Just HomeR)
LoomFollowR _ -> ("", Nothing)
LoomUnfollowR _ -> ("", Nothing)
LoomStampR l k -> ("Stamp #" <> keyHashidText k, Just $ LoomR l)
LoomCollabsR l -> ("Collaborators", Just $ LoomR l)
LoomInviteR _ -> ("", Nothing)
LoomRemoveR _ _ -> ("", Nothing)
LoomProjectsR l -> ("Projects", Just $ LoomR l)
LoomTeamsR l -> ("Teams", Just $ LoomR l)

View file

@ -27,12 +27,12 @@ module Vervis.Handler.Loom
, getLoomNewR
, postLoomNewR
, postLoomFollowR
, postLoomUnfollowR
, getLoomStampR
, getLoomCollabsR
, postLoomInviteR
, postLoomRemoveR
, getLoomProjectsR
, getLoomTeamsR
@ -366,17 +366,36 @@ postLoomNewR = do
setMessage "New patch tracker created"
redirect $ LoomR loomHash
postLoomFollowR :: KeyHashid Loom -> Handler ()
postLoomFollowR _ = error "Temporarily disabled"
postLoomUnfollowR :: KeyHashid Loom -> Handler ()
postLoomUnfollowR _ = error "Temporarily disabled"
getLoomStampR :: KeyHashid Loom -> KeyHashid SigKey -> Handler TypedContent
getLoomStampR = servePerActorKey loomActor LocalActorLoom
getLoomCollabsR :: KeyHashid Loom -> Handler TypedContent
getLoomCollabsR loomHash = error "TODO"
getLoomCollabsR loomHash = do
loomID <- decodeKeyHashid404 loomHash
(loom, actor) <- runDB $ do
loom <- get404 loomID
actor <- getJust $ loomActor loom
return (loom, actor)
serveCollabs
AP.RelHasCollab
(loomResource loom)
(LoomR loomHash)
(LoomCollabsR loomHash)
(LoomRemoveR loomHash)
(LoomInviteR loomHash)
(loomNavW (Entity loomID loom) actor)
postLoomInviteR :: KeyHashid Loom -> Handler Html
postLoomInviteR loomHash = do
loomID <- decodeKeyHashid404 loomHash
resourceID <- runDB $ loomResource <$> get404 loomID
serveInviteCollab resourceID (LoomCollabsR loomHash)
postLoomRemoveR :: KeyHashid Loom -> CollabId -> Handler Html
postLoomRemoveR loomHash collabID = do
loomID <- decodeKeyHashid404 loomHash
resourceID <- runDB $ loomResource <$> get404 loomID
serveRemoveCollab resourceID (LoomCollabsR loomHash) collabID
getLoomProjectsR :: KeyHashid Loom -> Handler Html
getLoomProjectsR loomHash = do

View file

@ -40,8 +40,6 @@ module Vervis.Handler.Repo
, postRepoDeleteR
, getRepoEditR
, postRepoEditR
, postRepoFollowR
, postRepoUnfollowR
, postPostReceiveR
@ -50,6 +48,8 @@ module Vervis.Handler.Repo
, getRepoStampR
, getRepoCollabsR
, postRepoInviteR
, postRepoRemoveR
, getRepoProjectsR
, getRepoTeamsR
@ -199,6 +199,7 @@ import Vervis.Web.Collab
import Vervis.Web.Darcs
import Vervis.Web.Delivery
import Vervis.Web.Git
import Vervis.Widget.Repo
import Vervis.Widget.Tracker
import qualified Vervis.Client as C
@ -552,12 +553,6 @@ postRepoEditR repoHash = do
defaultLayout $(widgetFile "repo/edit")
-}
postRepoFollowR :: KeyHashid Repo -> Handler ()
postRepoFollowR _ = error "Temporarily disabled"
postRepoUnfollowR :: KeyHashid Repo -> Handler ()
postRepoUnfollowR _ = error "Temporarily disabled"
postPostReceiveR :: Handler Text
postPostReceiveR = do
-- Parse the push object that the hook sent
@ -797,7 +792,32 @@ getRepoStampR :: KeyHashid Repo -> KeyHashid SigKey -> Handler TypedContent
getRepoStampR = servePerActorKey repoActor LocalActorRepo
getRepoCollabsR :: KeyHashid Repo -> Handler TypedContent
getRepoCollabsR repoHash = error "TODO getRepoCollabsR"
getRepoCollabsR repoHash = do
repoID <- decodeKeyHashid404 repoHash
(repo, actor) <- runDB $ do
repo <- get404 repoID
actor <- getJust $ repoActor repo
return (repo, actor)
serveCollabs
AP.RelHasCollab
(repoResource repo)
(RepoR repoHash)
(RepoCollabsR repoHash)
(RepoRemoveR repoHash)
(RepoInviteR repoHash)
(repoNavW (Entity repoID repo) actor)
postRepoInviteR :: KeyHashid Repo -> Handler Html
postRepoInviteR repoHash = do
repoID <- decodeKeyHashid404 repoHash
resourceID <- runDB $ repoResource <$> get404 repoID
serveInviteCollab resourceID (RepoCollabsR repoHash)
postRepoRemoveR :: KeyHashid Repo -> CollabId -> Handler Html
postRepoRemoveR repoHash collabID = do
repoID <- decodeKeyHashid404 repoHash
resourceID <- runDB $ repoResource <$> get404 repoID
serveRemoveCollab resourceID (RepoCollabsR repoHash) collabID
addProjectForm = renderDivs $
areq fedUriField "(URI) Project" Nothing

View file

@ -1,6 +1,6 @@
{- This file is part of Vervis.
-
- Written in 2016, 2018, 2020 by fr33domlover <fr33domlover@riseup.net>.
- Written in 2016, 2018, 2020, 2024 by fr33domlover <fr33domlover@riseup.net>.
-
- Copying is an act of love. Please copy, reuse and share.
-
@ -17,6 +17,7 @@ module Vervis.Widget.Repo
( refSelectW
, changesW
, inlineDiffW
, repoNavW
)
where
@ -25,6 +26,7 @@ import Data.List.NonEmpty (NonEmpty)
import Data.Set (Set)
import Data.Text (Text)
import Data.Vector (Vector)
import Database.Persist
import Yesod.Core.Handler (getsYesod)
import qualified Data.List.NonEmpty as N
@ -131,3 +133,9 @@ inlineDiffW orig hunks = do
ctx <- getsYesod $ appDiffContextLines . appSettings
let diffs = addContext ctx orig $ hunkLines hunks
$(widgetFile "repo/widget/inline-diff")
repoNavW :: Entity Repo -> Actor -> Widget
repoNavW (Entity repoID repo) actor = do
repoHash <- encodeKeyHashid repoID
hashLoom <- getEncodeKeyHashid
$(widgetFile "repo/widget/nav")

View file

@ -0,0 +1,46 @@
$# This file is part of Vervis.
$#
$# Written in 2019, 2022, 2023, 2024 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/>.
<div>
<span>
[[ 🗃
<a href=@{RepoR repoHash}>
=#{keyHashidText repoHash} #{actorName actor}
]] ::
<span>
<a href=@{RepoInboxR repoHash}>
[📥 Inbox]
<span>
<a href=@{RepoOutboxR repoHash}>
[📤 Outbox]
<span>
<a href=@{RepoErrboxR repoHash}>
[💥 Errbox]
<span>
<a href=@{RepoFollowersR repoHash}>
[🐤 Followers]
<span>
<a href=@{RepoCollabsR repoHash}>
[🤝 Collaborators]
<span>
<a href=@{RepoProjectsR repoHash}>
[🏗 Projects]
<a href=@{RepoR repoHash}>
<span>
<a href=@{RepoCommitsR repoHash}>
[🛠 Commits]
$maybe loomID <- repoLoom repo
<span>
<a href=@{LoomClothsR $ hashLoom loomID}>
[🧩 Merge Requests]

View file

@ -222,8 +222,6 @@
/new-repo RepoNewR GET POST
/repos/#RepoKeyHashid/delete RepoDeleteR POST
/repos/#RepoKeyHashid/edit RepoEditR GET POST
/repos/#RepoKeyHashid/follow RepoFollowR POST
/repos/#RepoKeyHashid/unfollow RepoUnfollowR POST
/post-receive PostReceiveR POST
@ -232,6 +230,8 @@
/repos/#RepoKeyHashid/stamps/#SigKeyKeyHashid RepoStampR GET
/repos/#RepoKeyHashid/collabs RepoCollabsR GET
/repos/#RepoKeyHashid/invite RepoInviteR POST
/repos/#RepoKeyHashid/remove/#CollabId RepoRemoveR POST
/repos/#RepoKeyHashid/projects RepoProjectsR GET
/repos/#RepoKeyHashid/teams RepoTeamsR GET
@ -321,12 +321,12 @@
/new-loom LoomNewR GET POST
-- /looms/#LoomKeyHashid/delete LoomDeleteR POST
-- /looms/#LoomKeyHashid/edit LoomEditR GET POST
/looms/#LoomKeyHashid/follow LoomFollowR POST
/looms/#LoomKeyHashid/unfollow LoomUnfollowR POST
/looms/#LoomKeyHashid/stamps/#SigKeyKeyHashid LoomStampR GET
/looms/#LoomKeyHashid/collabs LoomCollabsR GET
/looms/#LoomKeyHashid/invite LoomInviteR POST
/looms/#LoomKeyHashid/remove/#CollabId LoomRemoveR POST
/looms/#LoomKeyHashid/projects LoomProjectsR GET
/looms/#LoomKeyHashid/teams LoomTeamsR GET