Skip to content

Office Overview Part 1/5 - DAV search service, templates API and category providers#5682

Merged
moodyjmz merged 82 commits into
feat/office-overview-v2from
feat/overview-pr1-categories-imports
May 20, 2026
Merged

Office Overview Part 1/5 - DAV search service, templates API and category providers#5682
moodyjmz merged 82 commits into
feat/office-overview-v2from
feat/overview-pr1-categories-imports

Conversation

@moodyjmz
Copy link
Copy Markdown
Contributor

Part 1 of 5 — see #5678 for the full series. Merge all PRs into feat/office-overview-v2 in order.

  • DAV SEARCH service (officeFiles.js) fetches all office files by MIME type with module-level cache
  • Templates service reads creators and templates from NC Files API
  • Nav categories derived dynamically from template providers (not hardcoded)
  • Files sorted newest-first, favourites first via sortNodes

silverkszlo and others added 30 commits April 27, 2026 16:02
Signed-off-by: silver <s.szmajduch@posteo.de>
…access

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
fix(wopi): properly validate old timestamp
fix(settings): only allow setting auth token types to request config access
Align with the similar error message in in lib/Preview/Office.php

Signed-off-by: Carl Schwan <carlschwan@kde.org>
fix: Make preview timeout an info log instead of error
Uses a new rate limiter service to rate
limit certain WOPI endpoints via the
WOPI token. This attempts to prevent
abuse when a token tries to spam
requests.

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
PUT_RELATIVE is never accessed via this endpoint. It is already handled via postFile()'s else branch.

Signed-off-by: Josh <josh.t.richards@gmail.com>
Bumps [phpseclib/phpseclib](https://github.com/phpseclib/phpseclib) from 3.0.51 to 3.0.52.
- [Release notes](https://github.com/phpseclib/phpseclib/releases)
- [Changelog](https://github.com/phpseclib/phpseclib/blob/master/CHANGELOG.md)
- [Commits](phpseclib/phpseclib@3.0.51...3.0.52)

---
updated-dependencies:
- dependency-name: phpseclib/phpseclib
  dependency-version: 3.0.52
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [cypress](https://github.com/cypress-io/cypress) from 15.14.1 to 15.14.2.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](cypress-io/cypress@v15.14.1...v15.14.2)

---
updated-dependencies:
- dependency-name: cypress
  dependency-version: 15.14.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…/phpseclib-3.0.52

chore(deps): Bump phpseclib/phpseclib from 3.0.51 to 3.0.52
…ss-15.14.2

chore(deps-dev): Bump cypress from 15.14.1 to 15.14.2
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
Signed-off-by: GitHub <noreply@github.com>
…xtcloud-ocp

[main] Update nextcloud/ocp dependency
Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
revert: temporarily revert pdf viewer assertion
Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
Signed-off-by: GitHub <noreply@github.com>
…xtcloud-ocp

[main] Update nextcloud/ocp dependency
…stics, and response handling

Signed-off-by: Josh <josh.t.richards@gmail.com>
Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
…bustness

feat(CachedRequestService): improve isProxyStarting robustness, diagnostics, and response handling
Bumps [fast-xml-builder](https://github.com/NaturalIntelligence/fast-xml-builder) from 1.1.4 to 1.2.0.
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-builder/blob/main/CHANGELOG.md)
- [Commits](NaturalIntelligence/fast-xml-builder@v1.1.4...v1.2.0)

---
updated-dependencies:
- dependency-name: fast-xml-builder
  dependency-version: 1.2.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
elzody and others added 26 commits May 15, 2026 15:08
Fetch files via WebDAV and cache them, and using the entries in the navigation bar to filter them. Unfortunately we cannot use the files entry grid from the Files app, so we have to use a somewhat custom Vue component.

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
Previously, fileid was used, but I learned that it is deprecated and snowflake IDs (node.id) should be used instead

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
In order for the viewer to be initiated and usable for opening documents, we need to dispatch this event. Previously, `LoadAdditionalScripts` was used, but it actually does not do what is necessary. It is unrelated.

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
Switch to using the event dispatcher instead of the service locator pattern. This also fixes a PHP Unit test

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
Turns out CI does not load the viewer app, and even stubs won't work; it keeps throwing errors. So, we don't check that the event is dispatched now. We can test this in other ways, naturally, via E2E tests

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
Seemed like a lot of extra steps to get the viewer loaded in the CI environment for the PHP tests, so we can just check if the class exists and gracefully skip it. The tests don't need it for now, and in a real scenario or E2E tests it will get dispatched just fine.

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
For right now, I want to focus solely on traditional office file types. Later on it will be easy to add other types.

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
Move to a custom Vue component for displaying the document cards.

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
We can get rid of the OfficeFileEntry component because it was just acting as a wrapper around each FileCard. We can just use FileCard directly and move those methods to the OfficeOverview component

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
Inject an initial state that determines whether file previews should be shown or not, based on either core settings (enable_previews) or richdocuments settings.

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
When previews are disabled, swap to using the file type icons instead.

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
Add Cypress assertion to check if the preview exists, and a PHP unit test to make sure the initial state is set correctly.

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
A lot of the logic was redundant, so we can use a setup method to not have to redefine the mocked objects

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
Make them more like file entry grid by removing the center alignment of the text.

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
This was missing and is an office type, so should be added.

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
Adds a search bar so that the current view can be searched to easily find files

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
Adds tests for the search functionality

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
The card should give the impression that it is "clickable"

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
DAV search finds documents that are not only in the root folder but also recursively in subdirectories. It was specified that it should be used in the feature spec anyway.

Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
Uses sortNodes from @nextcloud/files with sortFavoritesFirst and
mtime descending so the most recently edited files appear first with
starred items pinned to the top.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: James Manuel <moodyjmz@users.noreply.github.com>
… list as parameter

Signed-off-by: James Manuel <moodyjmz@users.noreply.github.com>
…rrel imports

Nav items are now driven by whatever TemplateFileCreator objects are
registered with the NC Files API, so installing or removing an office
suite automatically updates the sidebar. Uses a single fetch on mount
for both the category list and the MIME filter for DAV SEARCH.

Shows NcEmptyContent when no providers are installed rather than
displaying an empty nav with no files.

Signed-off-by: James Manuel <moodyjmz@users.noreply.github.com>
@moodyjmz moodyjmz changed the title feat(overview): DAV search service, templates API, categories from providers Office Overview Part 1/5 - DAV search service, templates API and category providers May 20, 2026
@moodyjmz moodyjmz merged commit 54eb244 into feat/office-overview-v2 May 20, 2026
16 of 40 checks passed
@moodyjmz moodyjmz deleted the feat/overview-pr1-categories-imports branch May 20, 2026 16:25
@moodyjmz moodyjmz restored the feat/overview-pr1-categories-imports branch May 20, 2026 16:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants