diff --git a/.eslintrc b/.eslintrc
index 9c6627a6..29fd1f83 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -118,15 +118,7 @@
{
"allowHigherOrderFunctions": true
}
- ],
- // "@typescript-eslint/explicit-function-return-type": [
- // "error",
- // {
- // "allowExpressions": true,
- // "allowTypedFunctionExpressions": true,
- // "allowHigherOrderFunctions": true,
- // }
- // ]
+ ]
}
},
{
diff --git a/cypress/e2e/header.cy.ts b/cypress/e2e/header.cy.ts
index e8320a56..c87ae037 100644
--- a/cypress/e2e/header.cy.ts
+++ b/cypress/e2e/header.cy.ts
@@ -1,10 +1,9 @@
import { HOME_PATH } from '../../src/config/paths';
import {
HEADER_MEMBER_MENU_BUTTON_ID,
- HEADER_MEMBER_MENU_SEE_PROFILE_BUTTON_ID, // HEADER_MEMBER_MENU_SIGN_IN_BUTTON_ID,
- HEADER_MEMBER_MENU_SIGN_OUT_BUTTON_ID, // buildMemberMenuItemId,
+ HEADER_MEMBER_MENU_SEE_PROFILE_BUTTON_ID,
+ HEADER_MEMBER_MENU_SIGN_OUT_BUTTON_ID,
} from '../../src/config/selectors';
-// import { MOCK_SESSIONS } from '../fixtures/members';
import { MEMBER_PROFILE_PATH, SIGN_IN_PATH } from '../support/constants';
// catch hook warning from react
diff --git a/cypress/e2e/navigation.cy.ts b/cypress/e2e/navigation.cy.ts
index f9636313..e898f6b5 100644
--- a/cypress/e2e/navigation.cy.ts
+++ b/cypress/e2e/navigation.cy.ts
@@ -27,10 +27,10 @@ describe('Navigation', () => {
cy.setUpApi({
items: [...items, ...sharedItems],
});
- // eslint-disable-next-line no-console
- console.log(items);
cy.visit('/');
+
cy.wait(['@getCurrentMember', '@getOwnItems', '@getSharedItems']);
+
cy.get(`#${MY_ITEMS_ID} #${SHOW_MORE_ITEMS_ID}`).click();
items.forEach((i) =>
cy.get(`.${buildTreeItemClass(i.id)}`, { timeout: 2000 }),
diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts
index 4c62c19e..80d1009c 100644
--- a/cypress/support/commands.ts
+++ b/cypress/support/commands.ts
@@ -53,7 +53,6 @@ Cypress.Commands.add(
);
mockGetItemChat({ chatMessages });
mockGetItemMembershipsForItem(items, currentMember);
- // mockGetPublicItem({ items: cachedItems });
mockGetItemTags(items, currentMember);
@@ -61,7 +60,6 @@ Cypress.Commands.add(
mockGetLoginSchemaType(items, currentMember);
mockGetChildren(items, currentMember);
- // mockGetPublicChildren(cachedItems);
mockGetDescendants(items, currentMember);
@@ -70,7 +68,6 @@ Cypress.Commands.add(
mockGetCurrentMember(currentMember, getCurrentMemberError);
mockDefaultDownloadFile({ items, currentMember });
- // mockPublicDefaultDownloadFile(cachedItems);
mockSignOut();
@@ -140,11 +137,6 @@ declare global {
getIframeDocument(iframeSelector: string): Chainable;
getIframeBody(iframeSelector: string): Chainable;
- // clickElementInIframe(
- // iframeSelector: string,
- // elementSelector: string,
- // ): Chainable;
-
checkContentInElementInIframe(
iframeSelector: string,
elementSelector: string,
diff --git a/cypress/support/server.ts b/cypress/support/server.ts
index 3f29838c..e90ca199 100644
--- a/cypress/support/server.ts
+++ b/cypress/support/server.ts
@@ -118,14 +118,6 @@ const checkMemberHasAccess = ({
return { statusCode: StatusCodes.FORBIDDEN };
};
-// const checkIsPublic = (item: MockItem): { statusCode: number } | undefined => {
-// const isPublic = item?.tags?.find(({ tagId }) => tagId === PUBLIC_TAG_ID);
-// if (!isPublic) {
-// return { statusCode: StatusCodes.UNAUTHORIZED };
-// }
-// return undefined;
-// };
-
export const mockGetOwnItems = ({
items,
currentMember,
@@ -305,39 +297,6 @@ export const mockGetItemMembershipsForItem = (
).as('getItemMemberships');
};
-// export const mockGetPublicItem = (
-// { items }: { items: MockItem[] },
-// shouldThrowError?: boolean,
-// ): void => {
-// cy.intercept(
-// {
-// method: DEFAULT_GET.method,
-// url: new RegExp(`${API_HOST}/${buildGetPublicItemRoute(ID_FORMAT)}$`),
-// },
-// ({ url, reply }) => {
-// const itemId = url.slice(API_HOST.length).split('/')[3];
-// const item = getItemById(items, itemId);
-
-// // item does not exist in db
-// if (!item || shouldThrowError) {
-// return reply({
-// statusCode: StatusCodes.NOT_FOUND,
-// });
-// }
-
-// const error = checkIsPublic(item);
-// if (isError(error)) {
-// return reply(error);
-// }
-
-// return reply({
-// body: item,
-// statusCode: StatusCodes.OK,
-// });
-// },
-// ).as('getPublicItem');
-// };
-
export const mockGetChildren = (items: MockItem[], member: Member): void => {
cy.intercept(
{
@@ -400,35 +359,6 @@ export const mockGetDescendants = (items: MockItem[], member: Member): void => {
).as('getDescendants');
};
-// export const mockGetPublicChildren = (items: MockItem[]): void => {
-// cy.intercept(
-// {
-// method: DEFAULT_GET.method,
-// url: new RegExp(`${API_HOST}/p/items/${ID_FORMAT}/children`),
-// },
-// ({ url, reply }) => {
-// const id = url.slice(API_HOST.length).split('/')[3];
-// const item = items.find(({ id: thisId }) => id === thisId);
-// // item does not exist in db
-// if (!item) {
-// return reply({
-// statusCode: StatusCodes.NOT_FOUND,
-// });
-// }
-
-// const error = checkIsPublic(item);
-// if (isError(error)) {
-// return reply(error);
-// }
-
-// const children = items.filter((testItem) =>
-// isChildOf(testItem.path, item.path),
-// );
-// return reply(children);
-// },
-// ).as('getPublicChildren');
-// };
-
export const mockGetMemberBy = (
members: Member[],
shouldThrowError?: boolean,
@@ -498,49 +428,6 @@ export const mockDefaultDownloadFile = (
).as('downloadFile');
};
-// export const mockPublicDefaultDownloadFile = (
-// items: MockItem[],
-// shouldThrowError?: boolean,
-// ): void => {
-// cy.intercept(
-// {
-// method: DEFAULT_GET.method,
-// url: new RegExp(
-// `${API_HOST}/${buildPublicDownloadFilesRoute(ID_FORMAT)}`,
-// ),
-// },
-// ({ reply, url }) => {
-// if (shouldThrowError) {
-// return reply({ statusCode: StatusCodes.BAD_REQUEST });
-// }
-
-// const id = url.slice(API_HOST.length).split('/')[3];
-// const item = items.find(({ id: thisId }) => id === thisId);
-// const { replyUrl } = qs.parse(url.slice(url.indexOf('?') + 1));
-
-// // item does not exist in db
-// if (!item) {
-// return reply({
-// statusCode: StatusCodes.NOT_FOUND,
-// });
-// }
-
-// const error = checkIsPublic(item);
-// if (isError(error)) {
-// return reply(error);
-// }
-
-// // either return the file url or the fixture data
-// // info: we don't test fixture data anymore since the frontend uses url only
-// if (replyUrl) {
-// return reply({ url: item.filepath });
-// }
-
-// return reply({ fixture: item.filepath });
-// },
-// ).as('publicDownloadFile');
-// };
-
export const mockGetItemTags = (items: MockItem[], member: Member): void => {
cy.intercept(
{
diff --git a/src/config/notifier.ts b/src/config/notifier.ts
index cffabba2..0119f597 100644
--- a/src/config/notifier.ts
+++ b/src/config/notifier.ts
@@ -1,17 +1,10 @@
import { toast } from 'react-toastify';
-import { FAILURE_MESSAGES, SUCCESS_MESSAGES } from '@graasp/translations';
+import { Notifier } from '@graasp/query-client';
-import { useMessagesTranslation } from '@/config/i18n';
+// import { FAILURE_MESSAGES, SUCCESS_MESSAGES } from '@graasp/translations';
-type NotifierType = {
- type: string;
- payload: { error: string };
-};
-
-// todo: check how this works and improve error reporting
-export default ({ type, payload }: NotifierType): void => {
- const { t } = useMessagesTranslation();
+const notifier: Notifier = ({ type, payload }) => {
const message = null;
switch (type) {
// error messages
@@ -22,13 +15,15 @@ export default ({ type, payload }: NotifierType): void => {
// error notification
if (payload?.error && message) {
- const translatedMessage =
- t(message) || t(FAILURE_MESSAGES.UNEXPECTED_ERROR);
- toast.error(translatedMessage);
+ // todo: can't use translation hooks inside this function
+ // const translatedMessage =
+ // t(message) || t(FAILURE_MESSAGES.UNEXPECTED_ERROR);
+ toast.error(message);
}
// success notification
else if (message) {
- const translatedMessage = t(message) || t(SUCCESS_MESSAGES.DEFAULT_SUCCESS);
- toast.success(translatedMessage);
+ // const translatedMessage = t(message) || t(SUCCESS_MESSAGES.DEFAULT_SUCCESS);
+ toast.success(message);
}
};
+export default notifier;
diff --git a/src/config/queryClient.ts b/src/config/queryClient.ts
index 43f3044d..bc5c61a8 100644
--- a/src/config/queryClient.ts
+++ b/src/config/queryClient.ts
@@ -15,9 +15,8 @@ const {
API_HOST,
DOMAIN,
// todo: improve types
- notifier: notifier as (e: unknown) => void,
- // todo: re-enable once websockets work in refactor
- enableWebsocket: false,
+ notifier,
+ enableWebsocket: true,
defaultQueryOptions: {
keepPreviousData: true,
// avoid refetching when same data are closely fetched
diff --git a/src/modules/common/HiddenWrapper.tsx b/src/modules/common/HiddenWrapper.tsx
index 927a7869..22fb6249 100644
--- a/src/modules/common/HiddenWrapper.tsx
+++ b/src/modules/common/HiddenWrapper.tsx
@@ -1,7 +1,9 @@
import { Box, styled } from '@mui/material';
import { ItemRecord } from '@graasp/sdk/frontend';
+import { PLAYER } from '@graasp/translations';
+import { usePlayerTranslation } from '@/config/i18n';
import { buildHiddenWrapperId } from '@/config/selectors';
export const HIDDEN_STYLE = {
@@ -23,18 +25,17 @@ const HiddenWrapper = ({
hidden: boolean;
itemId: ItemRecord['id'];
children: JSX.Element;
-}): JSX.Element => (
-
- {children}
-
-);
+}): JSX.Element => {
+ const { t } = usePlayerTranslation();
+ return (
+
+ {children}
+
+ );
+};
export default HiddenWrapper;
diff --git a/src/modules/item/Item.tsx b/src/modules/item/Item.tsx
index a41d02ac..f0b0a2be 100644
--- a/src/modules/item/Item.tsx
+++ b/src/modules/item/Item.tsx
@@ -266,6 +266,9 @@ const ItemContent = ({ item }: ItemContentProps) => {
);
return folderButton;
+ // todo: check that the folders are displayed as expected.
+ // in case everything is okay, remove the following
+
// // display children shortcut pinned folders
// if (isShortcut && isShortcutPinned) {
// return folderButton;
diff --git a/src/modules/pages/ItemPage.tsx b/src/modules/pages/ItemPage.tsx
index e1540323..0c69cca3 100644
--- a/src/modules/pages/ItemPage.tsx
+++ b/src/modules/pages/ItemPage.tsx
@@ -25,7 +25,7 @@ const ItemScreenWrapper = (rootId: string) => {
const { usePostItemLogin, useSignOut } = mutations;
-const ItemPage = (): JSX.Element => {
+const ItemPage = (): JSX.Element | null => {
const { mutate: signOut } = useSignOut();
const { mutate: itemLoginSignIn } = usePostItemLogin();
const { rootId } = useParams();
@@ -35,8 +35,7 @@ const ItemPage = (): JSX.Element => {
if (!rootId) {
navigate(HOME_PATH);
- // TODO: return not found?
- return ForbiddenContent;
+ return null;
}
const Component = ItemLoginAuthorization({
diff --git a/src/modules/tree/DynamicTreeView.tsx b/src/modules/tree/DynamicTreeView.tsx
index ffaaede1..e61d604e 100644
--- a/src/modules/tree/DynamicTreeView.tsx
+++ b/src/modules/tree/DynamicTreeView.tsx
@@ -41,15 +41,6 @@ const DynamicTreeView = ({
const [expandedItems, setExpandedItems] = useState(initialExpendedItems);
const [showAll, setShowAll] = useState(false);
- // const {
- // data: children,
- // isLoading: isLoadingChildren,
- // isError: isErrorChildren,
- // } = useDescendants(rootId, {
- // enabled: isFolder,
- // getUpdates: isFolder,
- // });
-
if (isLoading) {
return ;
}
@@ -63,11 +54,6 @@ const DynamicTreeView = ({
const onToggle = (_event: unknown, nodeIds: string[]) =>
setExpandedItems(nodeIds);
- // show only folder items in the navigation tree
- // const itemsFiltered = items?.filter((item) =>
- // GRAASP_MENU_ITEMS.includes(item.type),
- // );
-
const itemsToShow = items?.filter((item) =>
onlyShowContainerItems ? GRAASP_MENU_ITEMS.includes(item.type) : true,
);
diff --git a/vite.config.ts b/vite.config.ts
index d8f775e9..fceb2df7 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -13,7 +13,7 @@ export default ({ mode }: { mode: string }): UserConfigExport => {
base: '',
server: {
port: parseInt(process.env.VITE_PORT, 10),
- // open: true,
+ open: true,
watch: {
ignored: ['**/coverage/**'],
},