From 8aa6989e262ad576e05a7e02249f914804159137 Mon Sep 17 00:00:00 2001 From: Andrey Sobolev Date: Thu, 31 Oct 2024 02:20:10 +0700 Subject: [PATCH 01/13] Fix front service (#7070) Signed-off-by: Andrey Sobolev --- server/front/src/index.ts | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/server/front/src/index.ts b/server/front/src/index.ts index 422bc31d80..493c620dbe 100644 --- a/server/front/src/index.ts +++ b/server/front/src/index.ts @@ -35,7 +35,7 @@ import fs, { createReadStream, mkdtempSync } from 'fs' import { rm, writeFile } from 'fs/promises' import { tmpdir } from 'os' -const cacheControlValue = 'public, max-age=365d' +const cacheControlValue = 'public, no-cache, must-revalidate, max-age=365d' const cacheControlNoCache = 'public, no-store, no-cache, must-revalidate, max-age=0' async function storageUpload ( @@ -385,14 +385,14 @@ export function start ( 'handle-file', {}, async (ctx) => { - let payload: Token = { email: 'guest', workspace: { name: req.query.workspace as string } } try { const cookies = ((req?.headers?.cookie as string) ?? '').split(';').map((it) => it.trim().split('=')) const token = cookies.find((it) => it[0] === 'presentation-metadata-Token')?.[1] ?? - (req.query.token as string | undefined) - payload = token !== undefined ? decodeToken(token) : payload + (req.query.token as string | undefined) ?? + '' + const payload = decodeToken(token) const uuid = req.params.file ?? req.query.file if (uuid === undefined) { @@ -412,20 +412,6 @@ export function start ( return } - // try image and octet streams - const isImage = - blobInfo.contentType.includes('image/') || blobInfo.contentType.includes('application/octet-stream') - - if (token === undefined) { - if (blobInfo !== undefined && !isImage) { - // Do not allow to return non images with no token. - if (token === undefined) { - res.status(403).send() - return - } - } - } - if (req.method === 'HEAD') { res.writeHead(200, { 'accept-ranges': 'bytes', @@ -438,6 +424,9 @@ export function start ( res.end() return } + // try image and octet streams + const isImage = + blobInfo.contentType.includes('image/') || blobInfo.contentType.includes('application/octet-stream') const size = req.query.size !== undefined ? parseInt(req.query.size as string) : undefined const accept = req.headers.accept @@ -475,9 +464,7 @@ export function start ( error?.Code === 'NoSuchKey' ) { ctx.error('No such storage key', { - file: req.query.file, - workspace: payload?.workspace, - email: payload?.email + file: req.query.file }) res.status(404).send() return From e96f377ddef9c424e1178a7c2f867dab4d06de38 Mon Sep 17 00:00:00 2001 From: Anna Khismatullina Date: Thu, 31 Oct 2024 13:18:28 +0700 Subject: [PATCH 02/13] Fix links to readme files (#7071) Signed-off-by: Anna Khismatullina --- dev/import-tool/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/import-tool/README.md b/dev/import-tool/README.md index b73bfe9ae1..cb0df79d5d 100644 --- a/dev/import-tool/README.md +++ b/dev/import-tool/README.md @@ -1,5 +1,5 @@ ### Supported Import Options -1. **Notion**: see [Import from Notion Guide](./notion/README.md) -2. **ClickUp**: see [Import from ClickUp Guide](./clickup/README.md) +1. **Notion**: see [Import from Notion Guide](./src/notion/README.md) +2. **ClickUp**: see [Import from ClickUp Guide](./src/clickup/README.md) From ef496d55cdc959f0030bc50c7fd91be88ffd5206 Mon Sep 17 00:00:00 2001 From: Alexander Onnikov Date: Thu, 31 Oct 2024 15:12:16 +0700 Subject: [PATCH 03/13] fix: get rid of @html usages (#7072) Signed-off-by: Alexander Onnikov --- packages/platform-rig/profiles/ui/eslint.config.json | 5 ++++- packages/ui/src/components/Html.svelte | 5 +++-- packages/ui/src/components/LinkWrapper.svelte | 1 + packages/ui/src/components/internal/LangPopup.svelte | 3 ++- packages/ui/src/components/internal/LangSelector.svelte | 5 ++++- .../src/components/IntegrationConnect.svelte | 4 ++-- .../document/right-panel/DocumentApprovalItem.svelte | 2 +- .../src/components/FileDiffContent.svelte | 8 ++++---- plugins/gmail-resources/src/components/Connect.svelte | 4 ++-- .../src/components/linkPresenters/YoutubePresenter.svelte | 4 ++-- 10 files changed, 25 insertions(+), 16 deletions(-) diff --git a/packages/platform-rig/profiles/ui/eslint.config.json b/packages/platform-rig/profiles/ui/eslint.config.json index 1544c9ce87..538de3db4d 100644 --- a/packages/platform-rig/profiles/ui/eslint.config.json +++ b/packages/platform-rig/profiles/ui/eslint.config.json @@ -58,5 +58,8 @@ "@typescript-eslint/no-floating-promises": "warn" } } - ] + ], + "rules": { + "svelte/no-at-html-tags": "error" + } } diff --git a/packages/ui/src/components/Html.svelte b/packages/ui/src/components/Html.svelte index 679ac0e1a1..3e3983c665 100644 --- a/packages/ui/src/components/Html.svelte +++ b/packages/ui/src/components/Html.svelte @@ -13,11 +13,12 @@ // limitations under the License. --> + {@html sanitized} diff --git a/packages/ui/src/components/LinkWrapper.svelte b/packages/ui/src/components/LinkWrapper.svelte index 5abd9a82a1..1694b4de3d 100644 --- a/packages/ui/src/components/LinkWrapper.svelte +++ b/packages/ui/src/components/LinkWrapper.svelte @@ -30,5 +30,6 @@ {#if text} + {@html replaceURLs(text)} {/if} diff --git a/packages/ui/src/components/internal/LangPopup.svelte b/packages/ui/src/components/internal/LangPopup.svelte index 688d3ce8a0..950a5a5ba6 100644 --- a/packages/ui/src/components/internal/LangPopup.svelte +++ b/packages/ui/src/components/internal/LangPopup.svelte @@ -16,6 +16,7 @@ import { createEventDispatcher } from 'svelte' import Label from '../Label.svelte' import IconCheck from '../icons/Check.svelte' + import Html from '../Html.svelte' export let langs: any export let selected: string @@ -34,7 +35,7 @@ dispatch('close', lang.id) }} > -
{@html lang.logo}
+
{#if lang.id === selected} diff --git a/packages/ui/src/components/internal/LangSelector.svelte b/packages/ui/src/components/internal/LangSelector.svelte index 2d78ed7b48..9906bd98ec 100644 --- a/packages/ui/src/components/internal/LangSelector.svelte +++ b/packages/ui/src/components/internal/LangSelector.svelte @@ -17,6 +17,7 @@ import { getMetadata } from '@hcengineering/platform' import ui, { showPopup, deviceOptionsStore as deviceInfo } from '../..' import LangPopup from './LangPopup.svelte' + import Html from '../Html.svelte' let pressed: boolean = false @@ -70,5 +71,7 @@ class:pressed on:click={selectLanguage} > - {@html selected?.logo} + {#if selected} + + {/if} diff --git a/plugins/calendar-resources/src/components/IntegrationConnect.svelte b/plugins/calendar-resources/src/components/IntegrationConnect.svelte index 6f5b59f394..c729f09749 100644 --- a/plugins/calendar-resources/src/components/IntegrationConnect.svelte +++ b/plugins/calendar-resources/src/components/IntegrationConnect.svelte @@ -14,7 +14,7 @@ --> -
+
+
{#if room._id !== plugin.ids.Reception} {/if} {/if} -
+
{#if $isConnected} {/if}
+
{#if popup && fullScreen} .bar { + overflow-x: auto; position: relative; padding: 1rem; border-top: 1px solid var(--theme-divider-color); @@ -270,5 +292,9 @@ right: 1rem; height: 100%; } + + &.combinePanel .bar__left-panel { + position: static; + } } diff --git a/plugins/love-resources/src/components/Room.svelte b/plugins/love-resources/src/components/Room.svelte index e1d2bd92d4..93f8f6d093 100644 --- a/plugins/love-resources/src/components/Room.svelte +++ b/plugins/love-resources/src/components/Room.svelte @@ -17,7 +17,7 @@ import { personByIdStore } from '@hcengineering/contact-resources' import { Room as TypeRoom } from '@hcengineering/love' import { getMetadata } from '@hcengineering/platform' - import { Label, Loading, resizeObserver } from '@hcengineering/ui' + import { Label, Loading, resizeObserver, deviceOptionsStore as deviceInfo } from '@hcengineering/ui' import { LocalParticipant, LocalTrackPublication, @@ -333,7 +333,7 @@ $: if (((document.fullscreenElement && !$isFullScreen) || $isFullScreen) && roomEl) toggleFullscreen() -
+
{#if $isConnected && !$isCurrentInstanceConnected}