Commit graph

911 commits

Author SHA1 Message Date
nfebe
a5307ac512 fix(unified-search): Prevent multiple file picker triggers in in-folder search
Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-01-29 12:50:12 +01:00
nfebe
eecda06f1a fix(unified-search): Use appId for searching
Each provider may search from a particular app so we should use that for searching.

Before this commit, we used `provider.id` instead of `provider.appId` the problem with the previous
approach is that it forces the provider id to be a valid search provider (an app that supports search)
limiting the developers ability to use unique IDs to identify the different providers (especially plugin providers)
inside the places filter.

For example the Files search plugin "In folder" (search in folder plugin) was required to have id as `files` while the
files provider itself already has id as `files`.

Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-01-29 12:50:12 +01:00
Pawel Boguslawski
c7bcfbf864 fix: Hide "Create templates folder" option if templates are disabled in configuration
When both `skeletondirectory` and `templatedirectory` are set to empty
strings in configuration, templates folder creation should be disabled
and no Create templates folder option should be present
in new folder menu.

Related: https://github.com/nextcloud/server/issues/39266
Related: https://github.com/nextcloud/server/issues/46455
Author-Change-Id: IB#1156403

Signed-off-by: Pawel Boguslawski <pawel.boguslawski@ib.pl>
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2025-01-27 16:08:53 +01:00
skjnldsv
5dc091aa58 fix(files): jsunit file_conversions
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-01-22 18:12:54 +01:00
skjnldsv
6673c127ec fix(files): better conversion error messages
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-01-22 16:29:36 +00:00
skjnldsv
7d8bb60bfe feat(files): add conversion action
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-01-22 16:29:36 +00:00
Ferdinand Thiessen
344c8a409c
fix(files): Ensure favorites set in sidebar work
When marking a file as favorite from within the sidebar make sure it
really works, this fixes two issues:
1. The source needs to be the plain source not URL encoded, as otherwise
   the source of the node would be encoded twice (and show with encoding
   in the navigation)
2. The store should also listen for the update events as the sidebar has
   no access to the real node to update it, instead the store should -
   as long as we only have the legacy sidebar - update the node when
   added or removed as favorite.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-01-21 17:55:53 +01:00
Ferdinand Thiessen
b5b28fda16
fix(files): Properly reset all file list filters on view change
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-01-21 16:38:06 +01:00
Ferdinand Thiessen
4a9954f5ef
fix(files): File type filter UI sync with filter state
When changing the folder the filter will be re-mounted by the file list,
so we need to pass the current state of the filter to the filter UI.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-01-17 08:59:17 +01:00
Ferdinand Thiessen
24851d930d
chore: Resolve ESLint warnings
- Add default value to non-required Vue props
- Reformat function to async function if needed
- Add some documentation
- Allow `any` in places where it makes sense (tests)
- Order vue component sections as required

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-01-16 22:18:29 +01:00
Richard Steinmetz
835994a811
fix(files): sort not working after changing views
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2025-01-16 08:57:19 +01:00
Maksim Sukharev
b06a8767f0 fix(files): hide move dialog action if destination has no CREATE permission
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
2025-01-15 13:07:12 +01:00
Louis Chemineau
b1bc793940
fix: Remove duplicate propfind call
This also was an XHR call which is not going through the end to end encryption proxy

Signed-off-by: Louis Chemineau <louis@chmn.me>
2025-01-15 11:20:01 +01:00
Julius Knorr
a804ff066b fix: Show full template name
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2025-01-15 08:34:45 +00:00
provokateurin
31c21c7797
feat(files_trashbin): Allow preventing trash to be deleted permanently
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-01-13 15:19:19 +01:00
skjnldsv
f454869332 fix(files): rename actions submenu back entry
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-01-10 11:44:31 +00:00
skjnldsv
11aeefaf04 fix(files): close submenu on main actions state change
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-01-10 11:44:31 +00:00
Louis Chemineau
5d078b3234
fix: Do not duplicate / in davPath
`davRootPath` already contains a leading `/`

Signed-off-by: Louis Chemineau <louis@chmn.me>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-01-09 17:43:12 +01:00
Louis Chemineau
ec778a0039 fix: Use displayname as sidebar title
Keep the fallback with this.fileInfo as this.node could be null

Signed-off-by: Louis Chemineau <louis@chmn.me>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-01-09 15:38:47 +00:00
Christopher Ng
eb902a4975
feat(files): Display meaningful error message on move failure
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2025-01-03 15:36:38 +01:00
provokateurin
d3bd99947d
fix(files): Only register preview service worker once when the instance is hosted at the root path
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-12-18 16:51:44 +01:00
skjnldsv
76e728eb98 feat(systemtags): add systemtag manage keyboard shortcut
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-12-17 10:18:57 +01:00
skjnldsv
f94fbc7d09 feat(files): add keyboard shortcuts helper section
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-12-17 10:18:57 +01:00
skjnldsv
b9ab76414c fix(files): pinia import and usage
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-12-17 09:59:57 +01:00
skjnldsv
2b330c6f34 feat(files): add selection keyboard shortcuts
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-12-17 09:59:57 +01:00
skjnldsv
74b2562e6b feat(files): add hotkey service and unify action handling
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-12-17 09:59:57 +01:00
skjnldsv
376a7bba7b fix(files): virtual scroller item size computation
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-12-17 09:59:56 +01:00
skjnldsv
e7001022c7 feat(files): add opendetails param and file list up/down keyboard shortcut
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-12-17 09:59:56 +01:00
skjnldsv
46573b75a6 feat(files_trashbin): add cypress tests
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-12-12 10:08:38 -08:00
skjnldsv
34299e6a5d fix(files): protect filelist actions with try...catch
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-12-12 10:08:38 -08:00
skjnldsv
9c08d3b0b8 fix(files_trashbin): update @nextcloud/files and adjust api + l10n fix
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-12-12 10:08:38 -08:00
Christopher Ng
0af875d713 feat(files): Right-align list actions
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-12-12 10:08:38 -08:00
skjnldsv
006bee5adf fix(files): throttle favorite with max 5 simultaneous requests
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-12-11 18:07:45 +00:00
John Molakvoæ
94fa2cf79f
Merge pull request #49694 from nextcloud/bugfix/fix-service-worker-scope 2024-12-11 10:26:16 +01:00
skjnldsv
4470dd623c fix(files): failsafe when executing actions methods
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-12-11 08:54:27 +01:00
skjnldsv
232651774e fix(files): cancel renaming on enter if no file name changes
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-12-10 10:31:59 +00:00
Kostiantyn Miakshyn
2e1cd23a7d fix: Fix ServiceWorker scope when Nextcloud installed in subfolder
Signed-off-by: Kostiantyn Miakshyn <molodchick@gmail.com>
2024-12-06 17:33:26 +01:00
Christopher Ng
f149bd0657 chore: Remove unused icon
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-12-03 16:25:34 -08:00
Christopher Ng
5f3bd3e30d feat(files): Update caption for screen readers when uploading is not possible
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-12-03 16:25:34 -08:00
skjnldsv
95e41be597 fix(files): properly update paths and folder children on node move
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-12-03 07:25:18 +00:00
Luka Trovic
a2fcf2f69b feat(templates): make second click as confirmation on templates picker
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2024-12-02 20:19:24 +00:00
Ferdinand Thiessen
ae35983449 fix(files): Restore page title (folder - view - product)
* Folder: Current folder if not root
* View: Name of current view
* Product: Nextcloud

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-11-21 07:48:06 +00:00
Ferdinand Thiessen
675e7a953f
refactor(files): Provide useFileListWidth composable
Replace the mixin with a composable, this is better typed and works in
both: Options- and Composition API.
Also added component tests for it.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-11-20 19:08:21 +01:00
nfebe
383d98c41b feat: add confirmation dialog for file extension changes
- Introduced a dialog to confirm if users want to proceed with changing the file extension.
- Added handling for dialog visibility to prevent recursion. (Since it looks like use must press escape to stop rename???)

Signed-off-by: nfebe <fenn25.fn@gmail.com>
2024-11-19 16:49:18 +01:00
Richard Steinmetz
d9eb29c525 fix(files): improve delete display name when trashbin is disabled
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2024-11-19 11:21:46 +01:00
skjnldsv
dd5a344f5e chore: lint fix
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-11-19 09:56:30 +01:00
Ferdinand Thiessen
f6e6ba4851 refactor(styles): Adjust code style in SCSS sources to match our stylelint config
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-11-19 09:42:13 +01:00
Ferdinand Thiessen
bb26289ef3
refactor(files): Replace deprecated Types enum for share types
Replace with `ShareType` enum.
Also fix some small Typescript issues in `FilesList.vue`.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-11-18 12:25:56 +01:00
Ferdinand Thiessen
c06723c44a
refactor(files): Adjust useNavigation composable to enforce active view
In some cases it is guaranteed that we have a proper active view,
e.g. when the file list is loaded (so within FileEntry* components).
This does not change anything but the Typescript types,
so the `currentView` is typed as `View` instead of `View | null´.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-11-16 22:00:30 +01:00
Ferdinand Thiessen
b1df25af63 fix(files): Make injected actions reactive
Provided values are not reactive by default and by design,
we must need computed to make them reactive.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-11-15 12:17:00 +01:00
skjnldsv
42c245ce37 fix(files): ensure valid mtime and fallback to crtime if defined
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-11-14 13:32:37 +00:00
skjnldsv
d654cf7b5b chore(files): replace @skjnldsv/sanitize-svg with DOMPurify
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-11-14 10:32:12 +01:00
Christopher Ng
dfb2745c8b feat(files): Add support for file list actions
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-11-13 15:28:16 -08:00
Ferdinand Thiessen
cce34c591e
fix(files): Revert CSS causing the file name to have no bounding box
Instead add the direction only to the filename wrapper not the button.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-11-11 19:56:07 +01:00
Faisal Alghamdi
23a23edfa6 fix(files): Fix file names alignment in Files List in UI RTL mode.
Signed-off-by: Faisal Alghamdi <falghamdi125@gmail.com>
2024-11-09 14:00:05 +01:00
skjnldsv
9571e34182 fix(files): check that node is in user root folder for view-in-folder action
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-11-09 11:34:59 +01:00
skjnldsv
33a399fbcf fix(files): edit locally buttons
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-11-08 17:01:16 +01:00
skjnldsv
191e839a5f fix(files): open sidebar on sharing tab by default for files
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-11-08 16:41:25 +01:00
skjnldsv
268e68eb95 fix(files): multiselect and filters store declaration
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-11-07 17:04:08 +01:00
Louis Chemineau
7b27d052ad fix(files): Do not jump to top when fileId is set to currentFolder
Fix https://github.com/nextcloud/server/issues/48545

Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-10-29 11:43:03 +01:00
skjnldsv
d51cf4536c feat(systemtags): add cypress tests and fix a few logic issues
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-10-29 09:08:31 +01:00
Grigorii K. Shartsev
f7498d0069 fix(files): add title for files list table header button
Signed-off-by: Grigorii K. Shartsev <me@shgk.me>
2024-10-25 18:06:33 +02:00
Grigorii K. Shartsev
18d52323dd refactor(files): migrate to @nextcloud/sharing
Signed-off-by: Grigorii K. Shartsev <me@shgk.me>
2024-10-25 13:01:43 +02:00
Grigorii K. Shartsev
080a8c7f1c fix(files): handle empty view with error
Signed-off-by: Grigorii K. Shartsev <me@shgk.me>
2024-10-25 13:01:43 +02:00
Grigorii K. Shartsev
2696715d90 chore(files): migrate davUtils to TS
Signed-off-by: Grigorii K. Shartsev <me@shgk.me>
2024-10-25 13:01:30 +02:00
Ferdinand Thiessen
d0c660a1da
fix(files): Adjust NavigationQuota for Nextcloud 30 design
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-10-21 22:56:11 +02:00
Ferdinand Thiessen
e8c1e2c611
fix(code-style): Adjust JS code to our code style
This resolves 68 ESLint warnings about invalid code style.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-10-16 22:11:59 +02:00
Ferdinand Thiessen
ef5a9cf00d
fix(files): Ensure renaming state is correctly reset
Problem: Is a node is renamed and the new name is out of the current
visible list of nodes the component will be recycled, this means
the props will change, so when the `onRename` functions is about to reset
the state the `this.source` will point to a different node.

To fix this, but also to separate business logic from visual representation,
the logic is moved into the renaming store and the component is only
responsible for rendering.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-10-15 18:20:16 +02:00
fenn-cs
faa29a0feb feat(sidebar): Show node owner in metadata subline
Resolves: https://github.com/nextcloud/server/issues/46178

Signed-off-by: fenn-cs <fenn25.fn@gmail.com>
2024-10-07 15:15:55 +02:00
Christopher Ng
51bb8d07f8 fix(files): Fix folders not being selectable in the smart picker
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-10-01 15:55:14 -07:00
Ferdinand Thiessen
d97e17b920
fix(files): Add more visual move / copy notification
* Resolves: https://github.com/nextcloud/server/issues/46645

This adds loading toast notification while the move operation is running.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-30 13:33:45 +02:00
Ferdinand Thiessen
0f6760c810
feat(files): Make the files download action use WebDAV zip download
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-28 13:18:29 +02:00
Louis Chemineau
d576efbb18
fix: Show storage full warning when storage is actually full
< 0 values for "free" do not mean that the storage is full: 6befdd6dd7/lib/public/Files/FileInfo.php (L31-L42)

Signed-off-by: Louis Chemineau <louis@chmn.me>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-09-25 19:42:35 +02:00
Christopher Ng
e3d0bd47a4 fix(files): Fix having to resolve conflicts twice when dropping files
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-24 16:01:05 -07:00
rakekniven
854caedf43
fix(translations): Changed grammar
Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
2024-09-23 16:18:53 +02:00
Ferdinand Thiessen
3119108654
chore(files): Remove legacy UI scripts now that everything is migrated to Vue
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-20 13:46:39 +02:00
Ferdinand Thiessen
f02bcf3471
test(files): Add tests for path handling
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-20 11:09:17 +02:00
Ferdinand Thiessen
020b3ee25e
fix(files): Ensure children are removed from folder and not duplicated
* Resolves https://github.com/nextcloud/server/issues/47904

We need to make sure that we only add one source (unique!) once as a child,
this is ensured by simply use a native `Set`.
Also we need to remove children on from folders when the `files:node:deleted`
event is emitted.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-20 11:09:17 +02:00
Louis Chemineau
699ce26e42
fix: Restore missing dot in FilesListVirtual.vue
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-09-15 11:09:37 +02:00
Louis Chemineau
2da1c5717e
feat: Reset route if neither the Viewer of the Sidebar is open
When the viewer or the sidebar is opened, we add the fileid to the route.
When both of them are closed, we do not remove the fileid from the route.
This means that, upon reload, the sidebar will be opened even though it was closed previously.

This PR ensure that the fileid is removed from the route when both the Sidebar and the Viewer are closed.

Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-09-14 21:50:23 +02:00
Ferdinand Thiessen
7a345f68dc fix(files): Make openMenu watcher null safe
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-11 13:44:12 +02:00
Ferdinand Thiessen
49c2d1819e
fix(files): Reset context menu position on close
* Resolves https://github.com/nextcloud/server/issues/46934

Ensure that after a right-click the context menu position is resetted,
so that pressing the "actions"-menu button it is displayed on the correct location.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-10 13:19:25 +02:00
Christopher Ng
060783c4f4 fix(files): Render folders in natural sort order
- Nodes are returned from the endpoint in an undefined order

Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-09 16:11:43 -07:00
Christopher Ng
6b079e67a2 fix(files): Sort tree views correctly by natural order
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-09 16:11:43 -07:00
Ferdinand Thiessen
b7e2d5032f
fix(files): Fallback icons should fill the container
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 14:08:51 +02:00
Ferdinand Thiessen
4a90d5328c
test: Add end-to-end tests for new public share Vue UI
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:48 +02:00
Ferdinand Thiessen
be884eeaec
fix(files): "Edit locally" action should not be shown on public shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:48 +02:00
Ferdinand Thiessen
018af2a2fe
fix(files): Do not add click listener if there is no default action on public shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:48 +02:00
Ferdinand Thiessen
c9dc0afcb1
fix(files): "New folder" menu entry requires read permission
This will disable "New folder" menu entry for file-drop shares.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:48 +02:00
Ferdinand Thiessen
80033bde88
fix(files): Disable internal views on public shares
This is needed because some views have side effects, like `favorites` doing requests on registration time.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen
1d16bc47ff
fix(files_sharing): Handle download permission the same way for public and internal shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen
e93ceea804
fix(files): Do not allow copy action on public shares without create permission
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen
a84de3c755
feat(files): Allow to download files on public shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen
ada6a61688
fix(files): Do not allow rename action on single-file-shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen
f0a765ee46
fix(files): Disable copy-move-action of single file shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen
f109c1a044
refactor(files): Make RouterService provide a protected getter for the router to allow injecting the files_sharing router
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen
82a7a3971d
fix(files): Adjust files list for sharing permissions on public shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen
819f5cea9b
fix(files): Fix file previews for public shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen
767e87a466
fix(files): Do not use favorite, sidebar and view-in-folder action for public shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:47 +02:00
Ferdinand Thiessen
96c8275586
feat(files_sharing): Migrate public share to use Vue files list
Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Co-authored-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-06 03:38:42 +02:00
skjnldsv
1ece5b975d fix(files): undefined displayname for outdated @nextcloud/files<3.6.0 apps
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-09-04 18:12:34 +00:00
skjnldsv
62878c5ece fix(files): undefined sidebar
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-09-04 14:10:37 +02:00
Christopher Ng
930a5141ea fix(files): Fix navigating with breadcrumbs not highlighting navigation entry
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-09-03 10:34:03 -07:00
Ferdinand Thiessen
f01c8efa38 fix(files): Node loading information should be accessible
The loading icon visually informs that the node is currently loading,
but there is no non-visual information (accessible information).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-31 18:39:16 +02:00
Ferdinand Thiessen
75a684a8d3
chore(files): Fix remaining TypeScript errors in FileEntryPreview
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-29 23:08:13 +02:00
Louis Chemineau
56e4859201
feat: Use the blurhash in Files
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-08-29 23:08:11 +02:00
Louis Chemineau
c42f010167 fix(files): Remove margin and width to not break layout
In grid view, this was messing with the reported available list width which was breaking the computed layout.

Fix https://github.com/nextcloud/server/issues/47599

Signed-off-by: Louis Chemineau <louis@chmn.me>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-29 11:50:25 +00:00
Ferdinand Thiessen
aea0e8df6a fix: Adjust more places for logical position
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-29 08:32:48 +00:00
Mostafa Ahangarha
723780d184 feat: Add bidi support in core directory
Signed-off-by: Mostafa Ahangarha <ahangarha@riseup.net>
2024-08-29 08:32:47 +00:00
Ferdinand Thiessen
030c209d22 fix: Renaming does not need update but delete permissions
Renaming is basically copy + delete (a move), so no need to update permissions.
Especially if the node is in a invalid directory the node should be moveable but not editable.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-28 17:22:20 +02:00
Christopher Ng
a1f43964dc test(files): Adapt favorite views spec
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-27 15:37:27 -07:00
Christopher Ng
9cc1a020a2 feat(files): Allow more than 50 favorite views
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-27 14:33:39 -07:00
Elizabeth Danzberger
79d005e11f
feat(templates): add support for checkboxes in template filler
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-08-27 14:41:58 -04:00
Ferdinand Thiessen
988ea85f48 fix(files): Correctly check for already used names when creating new folder
Also add Cypress tests for the "new"-menu.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-27 19:40:38 +02:00
Elizabeth Danzberger
99221f2a42 fix(files): fix list gap at bottom
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-27 08:53:57 +00:00
Ferdinand Thiessen
21b997f845
Merge pull request #47490 from nextcloud/chore/adjust-translations
chore(files): Adjust wording for file type filter
2024-08-26 21:40:27 +02:00
Ferdinand Thiessen
3ffdf56c8f
chore(files): Adjust wording for file type filter
* Resolves: https://github.com/nextcloud/server/issues/47440

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 20:42:41 +02:00
Ferdinand Thiessen
f7b7474cd3
fix(files): Reset drop notice on firefox
On firefox there is an old bug where when you move a dragged file outside
the window the `dragleave` event is never emitted.
So we just use a timeout to reset the drag over state.

Also a small change: Use the ID of the main container instead of relying on tag name and class.
(The ID is guranteed as other APIs rely on it, while the class is just used internally).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 20:31:31 +02:00
Ferdinand Thiessen
4fcf4dba02
Merge pull request #47466 from nextcloud/chore/migrate-vitest
test: Migrate from Jest to vitest
2024-08-26 20:30:26 +02:00
Ferdinand Thiessen
a5e58dc45e
test: Migrated all Jest tests to vitest
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 17:27:22 +02:00
Ferdinand Thiessen
b1eecde452
fix(files): Remove huge margin on bottom
Instead make it relative to screen size.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 16:31:25 +02:00
Christopher Ng
fc1edaf4c1 refactor(files): Consolidate node registration
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-22 16:09:10 -07:00
Christopher Ng
3b185b1156 refactor(files): Organize event subscriptions
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-22 16:09:10 -07:00
Christopher Ng
4062883459 fix(files): Respect "Show hidden files" setting in tree
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-22 16:09:10 -07:00
Elizabeth Danzberger
e53684e1d9
fix: use empty template by default when pressing enter
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-08-21 15:00:26 -04:00
Ferdinand Thiessen
1331ce7e7c
fix(files): Move loading icon before grid toggle
This prevents jumping of that toggle button when the view is loading.
Also adjust the design for Nextcloud 30 (prevent jumping of breadcrumbs when loading due to increased height).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 12:47:21 +02:00
Ferdinand Thiessen
132220a89f
fix: Access node owner by top level owner property
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-17 17:59:10 +02:00
Ferdinand Thiessen
ee4fb148b3 perf(files): Cache getContents function used for uploader
Instead of trigger a PROPFIND for every new-menu entry clicks,
or conflict handling of uploads, we can just use the cached content from the file store.
If we do not have any cache entry we fetch new, but otherwise this is not needed.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-14 09:47:56 +02:00
Ferdinand Thiessen
7fec706f68 refactor(files): Drop unneeded initial state
The initial state is no longer used, it was only used in legacy UI and in the f2v rewrite
it was only used for the `id` which can be loaded just from the URL.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-14 09:31:27 +02:00
Christopher Ng
0c0ba5f552 fix(files): Fix non-sticky sticky views in files nav
Signed-off-by: Christopher Ng <chrng8@gmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-14 07:27:49 +00:00
rakekniven
b030449ad1 chore(i18n): Improved grammar
Reported at Transifex.

Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-14 07:18:27 +00:00
Ferdinand Thiessen
ea021df9fa
chore(deps): Update @nextcloud/auth to v2.4.0 and use getCSPNonce where possible
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-13 17:54:47 +02:00
Ferdinand Thiessen
58acf4c608 fix(files): Add messages when "new folder" fails or gets cancelled
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-13 10:31:07 +02:00
Christopher Ng
a3ad8daed6 perf(files): Prevent extraneous requests when tree children are loading
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-09 15:32:17 -07:00
skjnldsv
e4e12a35f5 fix(files): trim names on new node creation
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-09 11:58:37 +00:00
Konstantin Myakshin
81ee1ce8fc fix(files): Disable tags editing for shared files/folders with view only permission
Signed-off-by: Konstantin Myakshin <molodchick@gmail.com>
2024-08-09 11:42:28 +02:00
Christopher Ng
44bc57bc57 feat: Load limited depth tree
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-08 11:15:52 -07:00
Christopher Ng
cfec6fcb1a feat(files): Add getter for all view configs
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-08 10:52:20 -07:00
Christopher Ng
86459aa5da perf(files): Remove redundant call to get navigation
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-08 10:52:20 -07:00
skjnldsv
827c6fdda9 fix(files): file name and header sort buttons alignments
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-07 15:12:32 +00:00
skjnldsv
40d9b42c84 fix(files): use files:config:updated to monitor user config change
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-08-07 10:50:33 +00:00
Ferdinand Thiessen
066bd0a25d
fix(files): openfile is set on the query not as a param
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-03 13:52:12 +02:00
skjnldsv
760c37b52e fix(files): show folder sharing overlay on received shares
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-02 16:52:12 +00:00
julia.kirschenheuter
ff6ba29475 fix(files): Minimize min-height of dialog form
Signed-off-by: julia.kirschenheuter <julia.kirschenheuter@nextcloud.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-02 07:10:00 +00:00
Ferdinand Thiessen
ff795ee527 fix(files): cancel move-copy action should not be handled as an error
Instead we should just show an information message why the file is not moved / copied.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-01 21:04:22 +00:00
Christopher Ng
0def7fa71c feat(files): Allow toggling folder tree
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-01 09:17:56 -07:00
Christopher Ng
5812a3422f fix(files): Fix root crumb not marking navigation entry as active
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-01 09:17:56 -07:00
Christopher Ng
3fabc4f733 feat: Navigate via folder tree
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-01 09:17:56 -07:00
Christopher Ng
855a45650e feat(files): Support setting view config for complex ids
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-01 09:17:36 -07:00
Ferdinand Thiessen
270ec122e0
fix(files): Correctly create Nodes from WebDAV result in "recent"-view
The recent search works on a different remote URL so the source of the files were wrong,
because the remote url was included twice in the source.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-01 14:17:48 +02:00
skjnldsv
57ab6e1180 fix(files): empty folder pending size
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-01 09:29:20 +00:00
Ferdinand Thiessen
1b9d6194f3 refactor(files): Resort imports and fix doc comment
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-01 07:14:04 +02:00
Ferdinand Thiessen
172c43351e
refactor(files): Migrate logger util to Typescript
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-01 03:20:56 +02:00
Ferdinand Thiessen
7ec1a7888e
fix(files): Add missing directory variable to error message
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-01 01:54:47 +02:00
Ferdinand Thiessen
a39f13e94e
fix(files): Provide file actions from list entry to make it reactive
This fixes non reactive default action text of the name component.
Also use download action as default action so that only one place
is needed to define how to download a file.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-01 01:54:42 +02:00
Ferdinand Thiessen
f570507156 fix(files): Add missing emptyView handling
The interface provides this option but it was never implemented.
This feature of being able to render a custom empty view message is needed
for public file drops to properly show the terms of service.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-07-31 20:07:57 +00:00
skjnldsv
e2d49f49a9 fix(files): fix template folder and file request menu order
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-07-31 18:44:50 +00:00
fenn-cs
efcf98d923 fix: Adjust tests for editLocallyAction
Signed-off-by: fenn-cs <fenn25.fn@gmail.com>
2024-07-31 10:28:05 +01:00
fenn-cs
267ae6f97c feat(editLocallyAction): Handle possible no local client scenario
Resolves: https://github.com/nextcloud/server/issues/46438

Signed-off-by: fenn-cs <fenn25.fn@gmail.com>
2024-07-31 10:25:26 +01:00
Ferdinand Thiessen
6bd886ef6e
fix(files): Set container for file list actions
This is needed to ensure the actions are rendered below dialogs which will have the body as the container.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-07-31 10:42:54 +02:00
Elizabeth Danzberger
423730963d
fix: Go back to template picker if template filler closed
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-07-30 15:30:36 -04:00
Elizabeth Danzberger
6c3a4a9f20
fix: Template filler shows only if template has fields
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-07-30 15:18:09 -04:00
Ferdinand Thiessen
77cffcb049
fix(files_sharing): Make account file filter consistent have design
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-07-30 16:40:14 +02:00
skjnldsv
197c35598c chore(files_sharing): refactor Share model to ts
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-07-30 09:50:46 +00:00
Raimund Schlüßler
6be686dc46
fix(files): correctly shrink breadcrumbs bar
Signed-off-by: Raimund Schlüßler <raimund.schluessler@mailbox.org>
2024-07-30 10:26:02 +02:00
withbest
dd08f93202 chore: fix some comments
Signed-off-by: withbest <seekseat@outlook.com>
2024-07-29 14:43:27 +08:00
skjnldsv
e32b335289 fix(files): always ask for confirmation if trashbin app is disabled
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-07-27 07:13:39 +00:00
Ferdinand Thiessen
7abaee813a fix(files): Ensure scrolled file list does not leak through file filters
1. when scrolling the file list should not be visible behind the filters
2. on mobile we need to remove the padding of the filters to ensure they are accessible

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-07-26 15:27:29 +02:00
Ferdinand Thiessen
dd88fa03a4 fix(files): Correctly validate new node name
* Resolves https://github.com/nextcloud/server/issues/45409

This includes two fixes:
1. The name in the "new node" dialog is correctly selected (e.g. `file.txt` only `file` is selected by default), to allow quick naming
2. `@nextcloud/files` functions for filename validation are used, this allows to use new Nextcloud 30 capabilities (e.g. reserved names)

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-07-26 08:46:23 +00:00
Ferdinand Thiessen
2c0e2cc09e
test: Add cypress tests for file list filtering
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-07-25 19:33:28 +02:00
Ferdinand Thiessen
aad09764cd
refactor: Make route parameters accessible using composables to reuse
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-07-25 19:33:28 +02:00
Ferdinand Thiessen
842c21f96b
feat(files): Implement files list filters for name, modified time and type
Co-authored-by: John Molakvoæ <skjnldsv@users.noreply.github.com>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-07-25 19:33:23 +02:00
Ferdinand Thiessen
968d41241b
feat(files): Allow to add file list filters
This adds sticky file list filters above the file list.
Those filters are used to filter the directory content and thus filter the file list.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-07-25 19:15:38 +02:00
Ferdinand Thiessen
523e0d3f2b
fix(files): Use @nextcloud/files filename validation to show more details
This will enable showing more details what exactly is wrong with the filename.
Especially with the new capabilities introduced with Nextcloud 30.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-07-25 15:49:33 +02:00
Elizabeth Danzberger
b749a89a33
fix: PHP formatting
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-07-25 11:11:41 +02:00
Elizabeth Danzberger
6aea44920d
fix: Can close template filler modal
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-07-25 11:11:40 +02:00
Elizabeth Danzberger
3390fc1b94
fix: Add SPDX header to new file
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-07-25 11:11:40 +02:00
Elizabeth Danzberger
1b904f1252
feat: Add frontend components for filling out template
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-07-25 11:11:40 +02:00
Elizabeth Danzberger
a7addcb88f
fix(vue): Begin implementing template filler component
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-07-25 11:11:40 +02:00
Elizabeth Danzberger
e65f318fdf
feat: TemplateFiller component
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-07-25 11:11:38 +02:00
Elizabeth Danzberger
d3bfcec7ea
feat: Add template filler component
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-07-25 11:11:38 +02:00
Ferdinand Thiessen
80d797edf3
fix: Ensure displayname is a string
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-07-25 01:24:26 +02:00
Ferdinand Thiessen
5dc8e06014
fix(files): Do not split filename into base and extension for folders
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-07-25 01:24:26 +02:00
Ferdinand Thiessen
f95d8263f6
chore(deps): Update @nextcloud/files to v3.6.0
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-07-25 01:24:26 +02:00
Maksim Sukharev
5709e54b8d fix(files): validate input when creating file/directory
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
2024-07-24 13:14:56 +02:00
Louis Chemineau
1aeb3f328b
fix(files): Grid view virtual scrolling computations
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-07-24 09:38:51 +02:00
Louis Chemineau
ddad7b48eb
fix(files): Reduce preview size in grid view mode
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-07-24 09:38:51 +02:00
skjnldsv
08af33b5d9 chore: add file request cypress testing
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-07-19 12:20:25 +02:00
Ferdinand Thiessen
5cf0224461
fix(files): Typo in import of ShareType
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-07-16 12:20:55 +02:00
grnd-alt
3ebfe9511b fix: stop file actions when conflict dialog skipped
Signed-off-by: grnd-alt <salimbelakkaf@outlook.de>
2024-07-16 09:41:42 +02:00
Ferdinand Thiessen
841efff3fb
fix(files): Close the sidebar on navigation
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-07-15 11:34:05 +02:00
skjnldsv
df42a10e56 chore(files_sharing): lint & refactor fixes
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-07-12 20:14:30 +02:00
skjnldsv
9b84831c8d fix(files_sharing): adjust IAttributes API and files_versions
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-07-12 20:14:30 +02:00
Louis Chemineau
5fc79e4002
fix(files): Add rounded corners back in grid view
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-07-11 14:35:03 +02:00
Ferdinand Thiessen
d0951b48be
chore(files): Fix ESLint issues with files and files_sharing app
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-07-09 17:25:41 +02:00
Ferdinand Thiessen
24c01695bb
test: Adjust Typescript definitions for OCP and OC
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-07-09 17:13:30 +02:00
Ferdinand Thiessen
691f570237
chore: Enable ESLint for apps and fix all errors
Nevertheless this causes a huge amount of new warnings.
Previously the shell script for directories to lint was wrong it was generating all app names to lint,
but was missing the `apps/` prefix. Causing only `core` to be linted.

Co-authored-by: Grigorii K. Shartsev <me@shgk.me>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-07-09 17:13:30 +02:00
Louis Chemineau
93cb30fc0c
fix(files): Correctly center the checkbox's background in grid view
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-07-08 17:34:15 +02:00
Andy Scherzinger
2c11c6ac23 style: unify copy icon
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-07-07 18:39:10 +02:00
Louis Chemineau
d30d7de56f feat(files): Refresh grid view layout
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-07-04 18:49:37 +02:00