From 7b0b028a50e788b4c88b127f1ce69a49c25e9c5c Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Sun, 23 May 2021 17:56:25 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Complete=20repository=20share?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nest_frontend/LocalizationStrings.js | 6 ++++++ .../components/interactive/BoxRepositories.js | 7 +++++-- nest_frontend/components/interactive/SummaryUser.js | 6 ++++-- nest_frontend/routes/PageRepositories.js | 1 + nest_frontend/routes/PageShare.js | 12 ++++++++---- 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/nest_frontend/LocalizationStrings.js b/nest_frontend/LocalizationStrings.js index eaf31bb..ab5506a 100644 --- a/nest_frontend/LocalizationStrings.js +++ b/nest_frontend/LocalizationStrings.js @@ -54,11 +54,17 @@ export default { emptyMenu: "Non c'รจ nulla qui.", delete: "Elimina", share: "Condividi", + unshare: "Rimuovi", archive: "Archivia", edit: "Modifica", created: "Creata", archived: "Archiviata", + // TODO: migliorare, maybe? + repoShare: "Condivisioni", + availableUsers: "Utenti disponibili", + sharingWith: "In condivisione con", + alerts: "Allarmi", alertTitle: "I tuoi allarmi", alertCreate: "Crea un allarme", diff --git a/nest_frontend/components/interactive/BoxRepositories.js b/nest_frontend/components/interactive/BoxRepositories.js index 6558b4d..e7da2c3 100644 --- a/nest_frontend/components/interactive/BoxRepositories.js +++ b/nest_frontend/components/interactive/BoxRepositories.js @@ -1,8 +1,9 @@ -import React from "react" +import React, { useContext } from "react" import BoxFullScrollable from "../base/BoxFullScrollable" import Loading from "../base/Loading" import SummaryRepository from "./SummaryRepository" import Empty from "./Empty" +import ContextUser from "../../contexts/ContextUser" /** @@ -34,6 +35,8 @@ export default function BoxRepositories( ...props }) { + const {user} = useContext(ContextUser) + let contents if(loading) { contents = @@ -47,7 +50,7 @@ export default function BoxRepositories( key={repo["id"]} repo={repo} view={view ? () => view(repo["id"]) : null} - share={share ? () => share(repo["id"]) : null} + share={(share && user["email"] === repo["owner"]["email"]) ? () => share(repo["id"]) : null} archive={archive ? () => archive(repo["id"]) : null} edit={edit ? () => edit(repo["id"]) : null} destroy={destroy ? () => destroy(repo["id"]) : null} diff --git a/nest_frontend/components/interactive/SummaryUser.js b/nest_frontend/components/interactive/SummaryUser.js index ebe42eb..3039c84 100644 --- a/nest_frontend/components/interactive/SummaryUser.js +++ b/nest_frontend/components/interactive/SummaryUser.js @@ -7,6 +7,7 @@ import SummaryLabels from "../base/summary/SummaryLabels" import SummaryButton from "../base/summary/SummaryButton" import SummaryRight from "../base/summary/SummaryRight" import {FontAwesomeIcon} from "@fortawesome/react-fontawesome" +import ContextUser from "../../contexts/ContextUser" /** @@ -23,6 +24,7 @@ import {FontAwesomeIcon} from "@fortawesome/react-fontawesome" */ export default function SummaryUser({ user, shareWithUser, unshareWithUser, destroyUser, running, ...props }) { const { strings } = useContext(ContextLanguage) + const {user: loggedUser} = useContext(ContextUser) return ( @@ -36,7 +38,7 @@ export default function SummaryUser({ user, shareWithUser, unshareWithUser, dest upperLabel={strings.type} upperValue={user.isAdmin ? strings.admin : strings.user} /> - {shareWithUser ? + {(shareWithUser && loggedUser["email"] !== user["email"]) ? : null} - {unshareWithUser ? + {(unshareWithUser && loggedUser["email"] !== user["email"]) ? } diff --git a/nest_frontend/routes/PageRepositories.js b/nest_frontend/routes/PageRepositories.js index 14c9804..307c9a0 100644 --- a/nest_frontend/routes/PageRepositories.js +++ b/nest_frontend/routes/PageRepositories.js @@ -5,6 +5,7 @@ import useBackendViewset from "../hooks/useBackendViewset" import BoxRepositories from "../components/interactive/BoxRepositories" import { useHistory } from "react-router" import ContextLanguage from "../contexts/ContextLanguage" +import ContextUser from "../contexts/ContextUser" export default function PageRepositories({ children, className, ...props }) { diff --git a/nest_frontend/routes/PageShare.js b/nest_frontend/routes/PageShare.js index 404f33f..f83efc6 100644 --- a/nest_frontend/routes/PageShare.js +++ b/nest_frontend/routes/PageShare.js @@ -6,12 +6,14 @@ import Style from "./PageShare.module.css" import BoxUserList from "../components/interactive/BoxUserList" import useBackendViewset from "../hooks/useBackendViewset" import { useParams } from "react-router" +import ContextUser from "../contexts/ContextUser" export default function PageShare({ className, ...props }) { const { strings } = useContext(ContextLanguage) + const {user: loggedUser} = useContext(ContextUser) const { id } = useParams() - const {resources: users} = useBackendViewset( + const {resources: users, running: usersBvRunning} = useBackendViewset( "/api/v1/users/", "email", { @@ -24,7 +26,7 @@ export default function PageShare({ className, ...props }) { action: false, } ) - const {resources: authorizations, createResource: createAuthorization, destroyResource: destroyAuthorization} = useBackendViewset( + const {resources: authorizations, createResource: createAuthorization, destroyResource: destroyAuthorization, running: authBvRunning} = useBackendViewset( `/api/v1/repositories/${id}/authorizations/`, "email", { @@ -61,15 +63,17 @@ export default function PageShare({ className, ...props }) { !authorizations.map(a => a.email).includes(user.email))} + users={users.filter(user => user["email"] !== loggedUser["email"] && !authorizations.map(a => a.email).includes(user.email))} shareWithUser={shareWith} header={strings.availableUsers} + running={usersBvRunning && authBvRunning} /> authorizations.map(a => a.email).includes(user.email))} + users={users.filter(user => user["email"] === loggedUser["email"] || authorizations.map(a => a.email).includes(user.email))} unshareWithUser={unshareWith} header={strings.sharingWith} + running={usersBvRunning && authBvRunning} /> )