From 3b151cf5801a508d7b40346f280fed2be8924b4c Mon Sep 17 00:00:00 2001
From: Manuel Raynaud
Date: Wed, 29 Jan 2025 09:46:21 +0100
Subject: [PATCH 1/3] =?UTF-8?q?=F0=9F=8D=B1(readme)=20update=20europe=20<3?=
=?UTF-8?q?=20opensource=20logo=20name?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The name used for the logo europe<3opensource was causing trouble on
windows systems. We have to rename it with a more "normal" name.
---
README.md | 4 ++--
...europe<3opensource.png => europe_opensource.png} | Bin
2 files changed, 2 insertions(+), 2 deletions(-)
rename docs/assets/{europe<3opensource.png => europe_opensource.png} (100%)
diff --git a/README.md b/README.md
index 27b0e59f8..126413319 100644
--- a/README.md
+++ b/README.md
@@ -179,5 +179,5 @@ We are proud sponsors of [BlockNotejs](https://www.blocknotejs.org/) and [Yjs](h
We are always looking for new public partners (we are currently onboarding the Netherlands 🇳🇱🧀), feel free to [reach out](https://matrix.to/#/#docs-official:matrix.org) if you are interested in using or contributing to Docs.
-
-
\ No newline at end of file
+
+
diff --git a/docs/assets/europe<3opensource.png b/docs/assets/europe_opensource.png
similarity index 100%
rename from docs/assets/europe<3opensource.png
rename to docs/assets/europe_opensource.png
From 9b95a9c551c10529eef10504ceaa221807af6f5c Mon Sep 17 00:00:00 2001
From: Nathan Panchout
Date: Wed, 29 Jan 2025 11:20:21 +0100
Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=9A=B8(frontend)=20prevent=20duplicat?=
=?UTF-8?q?e=20invite=20user=20row=20in=20DocShareModal?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Modify the DocShareModal to avoid showing the invite user row when the
email already exists in the search results, preventing redundant invite
options
---
.../doc-share/components/DocShareModal.tsx | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareModal.tsx b/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareModal.tsx
index af8a3a930..c4ed06383 100644
--- a/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareModal.tsx
+++ b/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareModal.tsx
@@ -137,17 +137,20 @@ export const DocShareModal = ({ doc, onClose }: Props) => {
short_name: '',
};
+ const hasEmailInUsers = users.some((user) => user.email === userQuery);
+
return {
groupName: t('Search user result'),
elements: users,
- endActions: isEmail
- ? [
- {
- content: ,
- onSelect: () => void onSelect(newUser),
- },
- ]
- : undefined,
+ endActions:
+ isEmail && !hasEmailInUsers
+ ? [
+ {
+ content: ,
+ onSelect: () => void onSelect(newUser),
+ },
+ ]
+ : undefined,
};
}, [searchUsersQuery.data, t, userQuery]);
From 78803916484d565df50b7d92ba1430f944ece717 Mon Sep 17 00:00:00 2001
From: Nathan Panchout
Date: Wed, 29 Jan 2025 11:22:34 +0100
Subject: [PATCH 3/3] =?UTF-8?q?=E2=8F=AA=EF=B8=8F(frontend)=20rollback=20t?=
=?UTF-8?q?est=20changes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Changes were pushed by mistake. We go back. We reorder the tests
correctly and return the environment variables to their original state.
---
.../__tests__/app-impress/doc-editor.spec.ts | 46 ++++-----
.../app-impress/doc-visibility.spec.ts | 94 +++++++++----------
src/frontend/apps/impress/.env | 2 +
3 files changed, 72 insertions(+), 70 deletions(-)
diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-editor.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-editor.spec.ts
index 02048c7f5..8dba8dab5 100644
--- a/src/frontend/apps/e2e/__tests__/app-impress/doc-editor.spec.ts
+++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-editor.spec.ts
@@ -14,29 +14,6 @@ test.beforeEach(async ({ page }) => {
});
test.describe('Doc Editor', () => {
- test('it saves the doc when we quit pages', async ({ page, browserName }) => {
- // eslint-disable-next-line playwright/no-skipped-test
- test.skip(browserName === 'webkit', 'This test is very flaky with webkit');
-
- // Check the first doc
- const doc = await goToGridDoc(page);
-
- await verifyDocName(page, doc);
-
- const editor = page.locator('.ProseMirror');
- await editor.click();
- await editor.fill('Hello World Doc persisted 2');
- await expect(editor.getByText('Hello World Doc persisted 2')).toBeVisible();
-
- await page.goto('/');
-
- await goToGridDoc(page, {
- title: doc,
- });
-
- await expect(editor.getByText('Hello World Doc persisted 2')).toBeVisible();
- });
-
test('it check translations of the slash menu when changing language', async ({
page,
browserName,
@@ -264,6 +241,29 @@ test.describe('Doc Editor', () => {
await expect(editor.getByText('Hello World Doc persisted 1')).toBeVisible();
});
+ test('it saves the doc when we quit pages', async ({ page, browserName }) => {
+ // eslint-disable-next-line playwright/no-skipped-test
+ test.skip(browserName === 'webkit', 'This test is very flaky with webkit');
+
+ // Check the first doc
+ const doc = await goToGridDoc(page);
+
+ await verifyDocName(page, doc);
+
+ const editor = page.locator('.ProseMirror');
+ await editor.click();
+ await editor.fill('Hello World Doc persisted 2');
+ await expect(editor.getByText('Hello World Doc persisted 2')).toBeVisible();
+
+ await page.goto('/');
+
+ await goToGridDoc(page, {
+ title: doc,
+ });
+
+ await expect(editor.getByText('Hello World Doc persisted 2')).toBeVisible();
+ });
+
test('it cannot edit if viewer', async ({ page }) => {
await mockedDocument(page, {
abilities: {
diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-visibility.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-visibility.spec.ts
index 5e5a9dc29..8414b0c75 100644
--- a/src/frontend/apps/e2e/__tests__/app-impress/doc-visibility.spec.ts
+++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-visibility.spec.ts
@@ -67,53 +67,6 @@ test.describe('Doc Visibility', () => {
test.describe('Doc Visibility: Restricted', () => {
test.use({ storageState: { cookies: [], origins: [] } });
- test('A doc is accessible when member.', async ({ page, browserName }) => {
- test.slow();
- await page.goto('/');
- await keyCloakSignIn(page, browserName);
-
- const [docTitle] = await createDoc(page, 'Restricted auth', browserName, 1);
-
- await verifyDocName(page, docTitle);
-
- await page.getByRole('button', { name: 'Share' }).click();
-
- const inputSearch = page.getByRole('combobox', {
- name: 'Quick search input',
- });
-
- const otherBrowser = browsersName.find((b) => b !== browserName);
- const username = `user@${otherBrowser}.e2e`;
- await inputSearch.fill(username);
- await page.getByRole('option', { name: username }).first().click();
-
- // Choose a role
- const container = page.getByTestId('doc-share-add-member-list');
- await container.getByLabel('doc-role-dropdown').click();
- await page.getByRole('button', { name: 'Administrator' }).click();
-
- await page.getByRole('button', { name: 'Invite' }).click();
-
- await page.locator('.c__modal__backdrop').click({
- position: { x: 0, y: 0 },
- });
-
- const urlDoc = page.url();
-
- await page
- .getByRole('button', {
- name: 'Logout',
- })
- .click();
-
- await keyCloakSignIn(page, otherBrowser!);
-
- await page.goto(urlDoc);
-
- await verifyDocName(page, docTitle);
- await expect(page.getByLabel('Share button')).toBeVisible();
- });
-
test('A doc is not accessible when not authentified.', async ({
page,
browserName,
@@ -174,6 +127,53 @@ test.describe('Doc Visibility: Restricted', () => {
page.getByText('You do not have permission to perform this action.'),
).toBeVisible();
});
+
+ test('A doc is accessible when member.', async ({ page, browserName }) => {
+ test.slow();
+ await page.goto('/');
+ await keyCloakSignIn(page, browserName);
+
+ const [docTitle] = await createDoc(page, 'Restricted auth', browserName, 1);
+
+ await verifyDocName(page, docTitle);
+
+ await page.getByRole('button', { name: 'Share' }).click();
+
+ const inputSearch = page.getByRole('combobox', {
+ name: 'Quick search input',
+ });
+
+ const otherBrowser = browsersName.find((b) => b !== browserName);
+ const username = `user@${otherBrowser}.e2e`;
+ await inputSearch.fill(username);
+ await page.getByRole('option', { name: username }).click();
+
+ // Choose a role
+ const container = page.getByTestId('doc-share-add-member-list');
+ await container.getByLabel('doc-role-dropdown').click();
+ await page.getByRole('button', { name: 'Administrator' }).click();
+
+ await page.getByRole('button', { name: 'Invite' }).click();
+
+ await page.locator('.c__modal__backdrop').click({
+ position: { x: 0, y: 0 },
+ });
+
+ const urlDoc = page.url();
+
+ await page
+ .getByRole('button', {
+ name: 'Logout',
+ })
+ .click();
+
+ await keyCloakSignIn(page, otherBrowser!);
+
+ await page.goto(urlDoc);
+
+ await verifyDocName(page, docTitle);
+ await expect(page.getByLabel('Share button')).toBeVisible();
+ });
});
test.describe('Doc Visibility: Public', () => {
diff --git a/src/frontend/apps/impress/.env b/src/frontend/apps/impress/.env
index e69de29bb..3cf0e897e 100644
--- a/src/frontend/apps/impress/.env
+++ b/src/frontend/apps/impress/.env
@@ -0,0 +1,2 @@
+NEXT_PUBLIC_API_ORIGIN=
+NEXT_PUBLIC_SW_DEACTIVATED=