Skip to content
This repository has been archived by the owner on Jan 23, 2025. It is now read-only.

Commit

Permalink
Merge branch '449-duplicate-item' of https://github.com/graasp/graasp…
Browse files Browse the repository at this point in the history
…-builder into 449-duplicate-item
  • Loading branch information
LinaYahya committed Jan 23, 2024
2 parents 0f82be2 + 7914106 commit d6af6b0
Show file tree
Hide file tree
Showing 14 changed files with 83 additions and 53 deletions.
10 changes: 5 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@
"@emotion/react": "11.11.1",
"@emotion/styled": "11.11.0",
"@graasp/chatbox": "3.0.1",
"@graasp/query-client": "2.2.1",
"@graasp/sdk": "3.3.0",
"@graasp/translations": "1.21.1",
"@graasp/ui": "4.3.0",
"@graasp/query-client": "2.3.0",
"@graasp/sdk": "3.4.1",
"@graasp/translations": "1.22.1",
"@graasp/ui": "4.3.1",
"@mui/icons-material": "5.14.19",
"@mui/lab": "5.0.0-alpha.151",
"@mui/material": "5.14.19",
Expand Down Expand Up @@ -145,7 +145,7 @@
"prettier": "3.1.0",
"rollup-plugin-visualizer": "5.11.0",
"typescript": "5.3.2",
"vite": "5.0.5",
"vite": "5.0.12",
"vite-plugin-checker": "0.6.2",
"vite-plugin-istanbul": "5.0.0"
},
Expand Down
2 changes: 1 addition & 1 deletion src/components/common/PlayerViewButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const PlayerViewButton = ({ itemId }: Props): JSX.Element => {
const { t: translateBuilder } = useBuilderTranslation();

const onClick = () => {
redirect(buildGraaspPlayerView(itemId), {
redirect(window, buildGraaspPlayerView(itemId), {
name: buildPlayerTabName(itemId),
openInNewTab: true,
});
Expand Down
2 changes: 1 addition & 1 deletion src/components/item/publish/ItemPublishTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ const ItemPublishTab = ({

const handleClick = () => {
const url = CC_LICENSE_ABOUT_URL;
redirect(url, { openInNewTab: true });
redirect(window, url, { openInNewTab: true });
};

const displayItemValidationMessage = () => {
Expand Down
26 changes: 24 additions & 2 deletions src/components/item/sharing/ItemSharingTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import Typography from '@mui/material/Typography';
import {
DiscriminatedItem,
ItemMembership,
PermissionLevelCompare,
isPseudonymizedMember,
} from '@graasp/sdk';
import { Loader } from '@graasp/ui';
Expand All @@ -32,6 +33,27 @@ type Props = {
item: DiscriminatedItem;
memberships?: ItemMembership[];
};
interface PermissionMap {
[key: string]: ItemMembership;
}

const selectHighestMemberships = (
memberships: ItemMembership[],
): ItemMembership[] => {
const permissionMap = memberships.reduce<PermissionMap>((acc, curr) => {
const { member, permission } = curr;

if (
!acc[member.id] ||
PermissionLevelCompare.gt(permission, acc[member.id].permission)
) {
acc[member.id] = curr;
}
return acc;
}, {});

return Object.values(permissionMap);
};

const ItemSharingTab = ({ item, memberships }: Props): JSX.Element => {
const { t: translateBuilder } = useBuilderTranslation();
Expand Down Expand Up @@ -89,7 +111,7 @@ const ItemSharingTab = ({ item, memberships }: Props): JSX.Element => {
emptyMessage={translateBuilder(
BUILDER.SHARING_AUTHORIZED_MEMBERS_EMPTY_MESSAGE,
)}
memberships={authorizedMemberships}
memberships={selectHighestMemberships(authorizedMemberships)}
readOnly={!canEditSettings}
/>

Expand All @@ -104,7 +126,7 @@ const ItemSharingTab = ({ item, memberships }: Props): JSX.Element => {
</Typography>
<ItemMembershipsTable
item={item}
memberships={authenticatedMemberships}
memberships={selectHighestMemberships(authenticatedMemberships)}
emptyMessage={translateBuilder(
BUILDER.SHARING_AUTHENTICATED_MEMBERS_EMPTY_MESSAGE,
)}
Expand Down
2 changes: 1 addition & 1 deletion src/components/main/Redirect.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { HOME_PATH } from '../../config/paths';

const Redirect = (): JSX.Element => {
useEffect(() => {
redirectToSavedUrl(HOME_PATH);
redirectToSavedUrl(window, HOME_PATH);
}, []);

return <RedirectionContent link={HOME_PATH} />;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import { useState } from 'react';

import { Pagination, Stack } from '@mui/material';

import { PermissionLevel } from '@graasp/sdk';

import { hooks } from '@/config/queryClient';

import RowMenu, { RowMenuProps } from './RowMenu';
Expand All @@ -24,7 +26,10 @@ const AccessibleNavigationTree = ({
// todo: to change with real recent items (most used)
const [page, setPage] = useState(1);
// todo: show only items with admin rights
const { data: accessibleItems } = hooks.useAccessibleItems({}, { page });
const { data: accessibleItems } = hooks.useAccessibleItems(
{ permissions: [PermissionLevel.Write, PermissionLevel.Admin] },
{ page },
);

const nbPages = accessibleItems
? Math.ceil(accessibleItems.totalCount / PAGE_SIZE)
Expand Down
8 changes: 6 additions & 2 deletions src/components/main/itemSelectionModal/RootNavigationTree.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Typography } from '@mui/material';

import { DiscriminatedItem, ItemType } from '@graasp/sdk';
import { DiscriminatedItem, ItemType, PermissionLevel } from '@graasp/sdk';

import { useBuilderTranslation } from '@/config/i18n';
import { hooks } from '@/config/queryClient';
Expand Down Expand Up @@ -29,7 +29,11 @@ const RootNavigationTree = ({
const { t: translateBuilder } = useBuilderTranslation();

// todo: to change with real recent items (most used)
const { data: recentItems } = hooks.useAccessibleItems({}, { pageSize: 5 });
const { data: recentItems } = hooks.useAccessibleItems(
// you can move into an item you have at least write permission
{ permissions: [PermissionLevel.Admin, PermissionLevel.Write] },
{ pageSize: 5 },
);
const recentFolders = recentItems?.data?.filter(
({ type }) => type === ItemType.FOLDER,
);
Expand Down
2 changes: 1 addition & 1 deletion src/langs/ar.json
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_LABEL": "اسم مستعار",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_PSEUDONYM_AND_PASSWORD_LABEL": "الأُسم المستعار وكلمة المرور",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_PSEUDONYM_LABEL": "الأُسم المستعار",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_SELECT_MESSSAGE": "يمكن الوصول إلى هذا العنصر إذا قدم الزائر ملفًا",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_SELECT_MESSAGE": "يمكن الوصول إلى هذا العنصر إذا قدم الزائر ملفًا",
"ITEM_SETTINGS_VISIBILITY_PUBLIC_INFORMATIONS": "هذا العنصر عام. يمكن لأي شخص الوصول إليه.\n ملاحظة: لن يتم نشر العناصر تلقائيًا إذا قمت بتغيير حالة الظهور من عام إلى آخرين.",
"ITEM_SETTINGS_VISIBILITY_PUBLIC_LABEL": "عام",
"ITEM_SETTINGS_VISIBILITY_TITLE": "حالة الظّهور",
Expand Down
2 changes: 1 addition & 1 deletion src/langs/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_LABEL": "Zugriff mit Pseudonym",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_PSEUDONYM_AND_PASSWORD_LABEL": "Pseudonym und Passwort",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_PSEUDONYM_LABEL": "Pseudonym",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_SELECT_MESSSAGE": "Auf dieses Element kann zugegriffen werden, wenn der Besucher eine angibt",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_SELECT_MESSAGE": "Auf dieses Element kann zugegriffen werden, wenn der Besucher eine angibt",
"ITEM_SETTINGS_VISIBILITY_PUBLIC_INFORMATIONS": "Dieser Artikel ist öffentlich. Jeder kann darauf zugreifen.\n Hinweis: Die Veröffentlichung von Elementen wird automatisch aufgehoben, wenn Sie den Sichtbarkeitsstatus von „Öffentlich“ auf „Andere“ ändern.",
"ITEM_SETTINGS_VISIBILITY_PUBLIC_LABEL": "Öffentlich zugänglich",
"ITEM_SETTINGS_VISIBILITY_TITLE": "Sichtbarkeit",
Expand Down
2 changes: 1 addition & 1 deletion src/langs/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_LABEL": "Pseudonymized",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_PSEUDONYM_AND_PASSWORD_LABEL": "Pseudonym and Password",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_PSEUDONYM_LABEL": "Pseudonym",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_SELECT_MESSSAGE": "This item is accessible if the visitor provides a ",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_SELECT_MESSAGE": "This item is accessible if the visitor provides a ",
"ITEM_SETTINGS_VISIBILITY_PUBLIC_INFORMATIONS": "This item is public. Anyone can access it.\n Note: Items will be unpublished automatically if you change the visibility state from public to others.",
"ITEM_SETTINGS_VISIBILITY_PUBLIC_LABEL": "Public",
"ITEM_SETTINGS_VISIBILITY_TITLE": "Visibility",
Expand Down
2 changes: 1 addition & 1 deletion src/langs/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_LABEL": "Seudónimo",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_PSEUDONYM_AND_PASSWORD_LABEL": "Seudónimo y Contraseña",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_PSEUDONYM_LABEL": "Seudónimo",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_SELECT_MESSSAGE": "Este elemento es accesible si el visitante proporciona una",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_SELECT_MESSAGE": "Este elemento es accesible si el visitante proporciona una",
"ITEM_SETTINGS_VISIBILITY_PUBLIC_INFORMATIONS": "Este artículo es público. Cualquiera puede acceder a él.\n Nota: Los elementos dejarán de publicarse automáticamente si cambia el estado de visibilidad de público a otros.",
"ITEM_SETTINGS_VISIBILITY_PUBLIC_LABEL": "Público",
"ITEM_SETTINGS_VISIBILITY_TITLE": "Visibilidad",
Expand Down
2 changes: 1 addition & 1 deletion src/langs/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_LABEL": "Pseudomisé",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_PSEUDONYM_AND_PASSWORD_LABEL": "Pseudonyme et Mot de passe",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_PSEUDONYM_LABEL": "Pseudonyme",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_SELECT_MESSSAGE": "Cet élément est accessible si le visiteur fournit un",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_SELECT_MESSAGE": "Cet élément est accessible si le visiteur fournit un",
"ITEM_SETTINGS_VISIBILITY_PUBLIC_INFORMATIONS": "Cet élément est public. N'importe quel visiteur peut accéder à cet élément.",
"ITEM_SETTINGS_VISIBILITY_PUBLIC_LABEL": "Public",
"ITEM_SETTINGS_VISIBILITY_TITLE": "Visibilité",
Expand Down
2 changes: 1 addition & 1 deletion src/langs/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_LABEL": "Pseudonimizzato",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_PSEUDONYM_AND_PASSWORD_LABEL": "Pseudonimo e password",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_PSEUDONYM_LABEL": "Pseudonimo",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_SELECT_MESSSAGE": "Questo elemento è accessibile se il visitatore fornisce a",
"ITEM_SETTINGS_VISIBILITY_PSEUDONYMIZED_SCHEMA_SELECT_MESSAGE": "Questo elemento è accessibile se il visitatore fornisce a",
"ITEM_SETTINGS_VISIBILITY_PUBLIC_INFORMATIONS": "Questo elemento è pubblico. Chiunque può accedervi.\n Nota: la pubblicazione degli elementi verrà annullata automaticamente se si modifica lo stato di visibilità da pubblico ad altri.",
"ITEM_SETTINGS_VISIBILITY_PUBLIC_LABEL": "Pubblico",
"ITEM_SETTINGS_VISIBILITY_TITLE": "Visibilità",
Expand Down
67 changes: 33 additions & 34 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1233,12 +1233,12 @@ __metadata:
languageName: node
linkType: hard

"@graasp/query-client@npm:2.2.1":
version: 2.2.1
resolution: "@graasp/query-client@npm:2.2.1"
"@graasp/query-client@npm:2.3.0":
version: 2.3.0
resolution: "@graasp/query-client@npm:2.3.0"
dependencies:
"@graasp/sdk": "npm:3.3.0"
"@graasp/translations": "npm:1.21.1"
"@graasp/sdk": "npm:3.4.1"
"@graasp/translations": "npm:1.22.1"
axios: "npm:0.27.2"
crypto-js: "npm:4.2.0"
http-status-codes: "npm:2.3.0"
Expand All @@ -1247,7 +1247,7 @@ __metadata:
uuid: "npm:9.0.1"
peerDependencies:
react: ^17.0.0 || ^18.0.0
checksum: bad1c3a4163f38e45f0f64d8beb28eb6ca6fd4cf123d971be9421a6012d0d2860c71cc0c71b14bf7d46ea3afe73355a32823e037d0216caa8154905d0d408f8f
checksum: 7cbf30cc71c27e19b50d896899b2bed3de924c4d7b0d09346198ee07c0d640261908fdb718cce11b00888f2333b581e175ca2d31bac766163b27ef069a29abfa
languageName: node
linkType: hard

Expand All @@ -1264,25 +1264,24 @@ __metadata:
languageName: node
linkType: hard

"@graasp/sdk@npm:3.4.0":
version: 3.4.0
resolution: "@graasp/sdk@npm:3.4.0"
"@graasp/sdk@npm:3.4.1":
version: 3.4.1
resolution: "@graasp/sdk@npm:3.4.1"
dependencies:
"@graasp/etherpad-api": "npm:2.1.1"
date-fns: "npm:3.2.0"
js-cookie: "npm:3.0.5"
uuid: "npm:9.0.1"
validator: "npm:13.11.0"
checksum: 00bd8d449e8c1bcb4750ddce9dc0eefc23d917d042d5d7db6c1007c7380904de3bc7e9bde43325736df69f3dc584d15717dac01769e06a9f71e1e1133075f7f7
checksum: 6bf2d3fbb28d61a457a534628620982a656258ab2e5c101294da8e7e4327eacff526378983c4e06a85f0115e0547325f9dbece793f7f4bc6129aa8909a42a24b
languageName: node
linkType: hard

"@graasp/translations@npm:1.21.1":
version: 1.21.1
resolution: "@graasp/translations@npm:1.21.1"
"@graasp/translations@npm:1.22.1":
version: 1.22.1
resolution: "@graasp/translations@npm:1.22.1"
dependencies:
i18next: "npm:23.7.7"
checksum: d95ac9cf2f2a587d6779d5b28f9c95f2f5410d3d28235b78cdf4e8ad36acd6b6ca4ac90831a6b28fecd91c6fad080f1230ab72c88295cf7742725bfa8a10c416
i18next: "npm:23.7.16"
checksum: 29043007a9926ff54236101c41ceb92eead09d8ce99edf46943790171f3275fb2cc1acd552bfa605247c42b4866bbf1f83dd889da3f571d388eca5f2dd598e17
languageName: node
linkType: hard

Expand All @@ -1295,11 +1294,11 @@ __metadata:
languageName: node
linkType: hard

"@graasp/ui@npm:4.3.0":
version: 4.3.0
resolution: "@graasp/ui@npm:4.3.0"
"@graasp/ui@npm:4.3.1":
version: 4.3.1
resolution: "@graasp/ui@npm:4.3.1"
dependencies:
"@graasp/sdk": "npm:3.4.0"
"@graasp/sdk": "npm:3.4.1"
http-status-codes: "npm:2.3.0"
katex: "npm:0.16.9"
lodash.truncate: "npm:4.4.2"
Expand Down Expand Up @@ -1332,7 +1331,7 @@ __metadata:
optional: true
ag-grid-react:
optional: true
checksum: 5538861e5d4d58e6105bb0e84d03238eecbc28bf5c2112557ed7ca5725a3025a4c09e06f4f050b9805595256c5227081696c12a90fc0e266fb8801d4c895d28d
checksum: b5cf0290dda520c2bd65c2834c415ac3d376569a2a2765f1b1bd855cb1a8e5d582c94213433383b8b632f598007d96a774cbacf10702f3c14f1def563e677409
languageName: node
linkType: hard

Expand Down Expand Up @@ -6311,10 +6310,10 @@ __metadata:
"@emotion/react": "npm:11.11.1"
"@emotion/styled": "npm:11.11.0"
"@graasp/chatbox": "npm:3.0.1"
"@graasp/query-client": "npm:2.2.1"
"@graasp/sdk": "npm:3.3.0"
"@graasp/translations": "npm:1.21.1"
"@graasp/ui": "npm:4.3.0"
"@graasp/query-client": "npm:2.3.0"
"@graasp/sdk": "npm:3.4.1"
"@graasp/translations": "npm:1.22.1"
"@graasp/ui": "npm:4.3.1"
"@mui/icons-material": "npm:5.14.19"
"@mui/lab": "npm:5.0.0-alpha.151"
"@mui/material": "npm:5.14.19"
Expand Down Expand Up @@ -6398,7 +6397,7 @@ __metadata:
typescript: "npm:5.3.2"
uuid: "npm:9.0.1"
validator: "npm:13.11.0"
vite: "npm:5.0.5"
vite: "npm:5.0.12"
vite-plugin-checker: "npm:0.6.2"
vite-plugin-istanbul: "npm:5.0.0"
languageName: unknown
Expand Down Expand Up @@ -6686,12 +6685,12 @@ __metadata:
languageName: node
linkType: hard

"i18next@npm:23.7.7":
version: 23.7.7
resolution: "i18next@npm:23.7.7"
"i18next@npm:23.7.16":
version: 23.7.16
resolution: "i18next@npm:23.7.16"
dependencies:
"@babel/runtime": "npm:^7.23.2"
checksum: c8d112f5bbe62b3402b0fc47094f85e6ae6f939ff0b3299c5f2b3d30e05125184ae3faa10abfc14e21ea7f8dc78526455c251dc7e5eb40cf1a204257f22e6071
checksum: 77e74c07a73316f6fb6678a5a3e8ce58a6e66be457dd1ccd23941e9fc57ad8e1da55193fa6328c70b86073337b776cd267f3c13c6309f548b3116f27a1e41787
languageName: node
linkType: hard

Expand Down Expand Up @@ -11843,9 +11842,9 @@ __metadata:
languageName: node
linkType: hard

"vite@npm:5.0.5":
version: 5.0.5
resolution: "vite@npm:5.0.5"
"vite@npm:5.0.12":
version: 5.0.12
resolution: "vite@npm:5.0.12"
dependencies:
esbuild: "npm:^0.19.3"
fsevents: "npm:~2.3.3"
Expand Down Expand Up @@ -11879,7 +11878,7 @@ __metadata:
optional: true
bin:
vite: bin/vite.js
checksum: f4cd6e6e38448bdb6dd4dc36c0b34a5c42944d88961b9df246e75a4c3237196b1c64b1afc563524405d1fe3f34e728b9dbfd8cbc5af4e0a03371033d8057fdfe
checksum: ed0bb26a0d0c8e1dae0b70af9e36adffd7e15d80297443fe4da762596dc81570bad7f0291f590a57c1553f5e435338d8c7ffc483bd9431a95c09d9ac90665fad
languageName: node
linkType: hard

Expand Down

0 comments on commit d6af6b0

Please sign in to comment.