Skip to content

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

Description

@moodyjmz

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:

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions