Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
3353c53
Fix accounts restore error (#10955)
ArtyomSavchenko Jul 5, 2026
7f13ca3
Card space type filter (#10956)
BykhovDenis Jul 5, 2026
5c48abd
feat: add viewlet integration and update attribute handling in variou…
BykhovDenis Jul 5, 2026
d2e9213
fix: deduplicate object and document lists in DocTable and RelationEd…
BykhovDenis Jul 6, 2026
184b4ec
Allow to export documents without children (#10909)
ArtyomSavchenko Jul 6, 2026
dfe7d3d
feat: Add ability to schedule notifications (#10789)
ArtyomSavchenko Jul 6, 2026
703f6d4
Fix export visibility (#10960)
ArtyomSavchenko Jul 8, 2026
e884e79
fix: encode filename in datalake url (#10963)
aonnikov Jul 9, 2026
4891c65
fix: do not show notifications in print mode (#10962)
aonnikov Jul 9, 2026
abe0cb9
feat(tracker): Gantt scheduling schema (startDate + IssueRelation) + …
MichaelUray Jul 9, 2026
ee174a8
Merge pull request #3 from Platform-Collective/upstream-9-jul
ArtyomSavchenko Jul 9, 2026
6a03bd5
fix(security): bump dependencies with critical advisories
claude Jul 10, 2026
10cb757
Port controlled document attachment changes
ArtyomSavchenko Jul 10, 2026
7921f1b
Add missing locales
ArtyomSavchenko Jul 10, 2026
8ba43d5
Fix filtered view visibility (#10969)
ArtyomSavchenko Jul 10, 2026
2bcf85b
Fix export issues (#10967)
ArtyomSavchenko Jul 10, 2026
15bdcea
Merge pull request #8 from Platform-Collective/port-controlled-docs
ArtyomSavchenko Jul 10, 2026
643c6d5
Merge pull request #7 from Platform-Collective/claude/critical-depend…
haiodo Jul 10, 2026
2e02593
Merge branch 'develop' of https://github.com/hcengineering/platform i…
ArtyomSavchenko Jul 10, 2026
0e8f8cb
Merge pull request #9 from Platform-Collective/sync-upstream-10-jul
ArtyomSavchenko Jul 11, 2026
ed9a192
Merge with upstream
ArtyomSavchenko Jul 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 31 additions & 31 deletions common/config/rush/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion common/scripts/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
"0.7.422"
"0.7.423"
8 changes: 4 additions & 4 deletions foundations/communication/common/config/rush/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 9 additions & 9 deletions foundations/core/common/config/rush/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,24 @@ describe('DatalakeStorage', () => {
expect(url).toBe(`${baseUrl}/blob/${workspace}/${file}`)
})

it('should handle special characters in parameters', () => {
it('should encode special characters in parameters', () => {
const workspace = 'test workspace'
const file = 'file 123'
const filename = 'my document.pdf'

const url = storage.getFileUrl(workspace, file, filename)

expect(url).toBe(`${baseUrl}/blob/${workspace}/${file}/${filename}`)
expect(url).toBe(`${baseUrl}/blob/test%20workspace/file%20123/my%20document.pdf`)
})

it('should encode slash in filename as a single path segment', () => {
const workspace = 'test-workspace'
const file = 'file-123'
const filename = 'folder/document.pdf'

const url = storage.getFileUrl(workspace, file, filename)

expect(url).toBe(`${baseUrl}/blob/${workspace}/${file}/folder%2Fdocument.pdf`)
})

it('should handle base URL with trailing slash', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,24 @@ describe('FrontStorage', () => {
expect(url).toBe(`${baseUrl}/${workspace}/${filename}?file=${file}&workspace=${workspace}`)
})

it('should handle special characters in workspace and file names', () => {
it('should encode special characters in workspace, file, and filename', () => {
const workspace = 'test workspace'
const file = 'file 123'
const filename = 'my document.pdf'

const url = storage.getFileUrl(workspace, file, filename)

expect(url).toBe(`${baseUrl}/${workspace}/${filename}?file=${file}&workspace=${workspace}`)
expect(url).toBe(`${baseUrl}/test%20workspace/my%20document.pdf?file=file%20123&workspace=test%20workspace`)
})

it('should encode slash in filename as a single path segment', () => {
const workspace = 'test-workspace'
const file = 'file-123'
const filename = 'folder/document.pdf'

const url = storage.getFileUrl(workspace, file, filename)

expect(url).toBe(`${baseUrl}/${workspace}/folder%2Fdocument.pdf?file=${file}&workspace=${workspace}`)
})

it('should handle base URL with trailing slash', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import { concatLink } from '@hcengineering/core'
import { FileStorage, FileStorageUploadOptions } from '../types'
import { uploadMultipart, uploadXhr } from '../upload'
import { encodePathSegment } from './utils'

const getPathname = (url: string): string => {
const base = window?.location?.href !== undefined ? window.location.href : 'http://localhost'
Expand All @@ -27,7 +28,12 @@ export class DatalakeStorage implements FileStorage {
constructor (private readonly baseUrl: string) {}

getFileUrl (workspace: string, file: string, filename?: string): string {
const path = filename !== undefined ? `/blob/${workspace}/${file}/${filename}` : `/blob/${workspace}/${file}`
const encodedWorkspace = encodePathSegment(workspace)
const encodedFile = encodePathSegment(file)
const path =
filename !== undefined
? `/blob/${encodedWorkspace}/${encodedFile}/${encodePathSegment(filename)}`
: `/blob/${encodedWorkspace}/${encodedFile}`
return concatLink(this.baseUrl, path)
}

Expand Down
Loading