nextcloud / nextcloud/office

getTemplates() failure and zero registered creators are shown as the same "No office suite installed" message

Open Beginner friendly
#113 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
6
Forks
1
Avg merge
1d 3h
Merged PRs (30d)
10

Description

TL;DR

The "No office suite installed" empty state is shown for two completely different situations — zero template creators registered, and the getTemplates() request itself failing — with no way for the user (or an admin debugging it) to tell which one they're looking at. In practice this made a transient, already-recovered document-server outage look like nothing was ever configured. See Euro-Office/eurooffice-nextcloud#133 for the concrete connector-side bug this surfaced.

Mechanism

fetchAll() (src/views/OfficeOverview.vue:192-217) sets creators.value = [] both when getTemplates() throws (caught at :210-216, only error.value is set) and when it legitimately returns an empty array. The template's empty-state check (:248-249) is v-if="creators.length === 0", which fires in both cases and always wins over the separate error state — the "No office suite installed" message is what's shown, not the actual error. This is confirmed as deliberate, tested behavior, not an oversight: src/views/OfficeOverview.spec.ts:153 comments "template shows 'No office suite installed' instead, before the error," and :157-162 asserts exactly that.

Impact

An admin/user has no way to distinguish, from the UI alone:

  • no template-creator app is actually installed/enabled
  • a template-creator app is installed but its own health check is failing (e.g. eurooffice-nextcloud's stale settings_error, Euro-Office/eurooffice-nextcloud#133)
  • the apps/files/api/v1/templates request itself failed transiently (network, auth, server error)

All three collapse to the same message, so the one case that's actually actionable from this screen (case 1) can't be distinguished from two cases that require debugging a different app entirely.

Suggested fix

Surface the error state distinctly from the zero-creators state — e.g. keep the existing empty-state UI for "genuinely zero creators returned" but show the actual error (or a generic "couldn't check for available editors, try again" message) when the request itself failed, rather than always falling through to "no suite installed."


This report was drafted and filed directly by Claude Code (claude-sonnet-5) at the explicit direction of the maintainer, who reviewed the mechanism and takes responsibility for filing it directly rather than via the org's standard human-submission workflow.

🤖 AI (if applicable)

  • The content of this issue was partly or fully generated using AI

Assisted-by: ClaudeCode:claude-sonnet-5

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with fetchAll() in src/views/OfficeOverview.vue:192-217 and the empty-state check at :248-249, then run the relevant tests in src/views/OfficeOverview.spec.ts. Update the behavior and assertions so a failed getTemplates() request is distinguishable from a genuinely empty creators list, while preserving the existing empty state for zero registered creators.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
frontend
Issue type
Bug
Difficulty
2/5
Estimated time
Half a day
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
76/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.