Skip to content

Embed shared resources using the reference widget API - #3055

Open
hefftich wants to merge 1 commit into
masterfrom
feat/embedded-team-deck
Open

hefftich wants to merge 1 commit into
masterfrom
feat/embedded-team-deck

Conversation

@hefftich

@hefftich hefftich commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Display shared resources directly within Teams while preserving the active team context, using Nextcloud's existing Reference/Smart Picker widget API.

Teams resolves the selected resource URL through the reference API and renders its registered widget with interactive: true. Other apps can participate through the same API without a new app-specific Teams adapter.

Resource integration

  • Load enabled apps' widget registrations through RenderReferenceEvent.
  • Add generic, team-scoped resource routes using provider and resource IDs.
  • Only resolve resources confirmed in the current team's shared resources; the providing apps remain responsible for enforcing access permissions.
  • Keep the team navigation visible and highlight the selected pinned board, or “Shared with the team” for other shared resources.
  • Show an explicit unavailable state when no accessible, registered widget exists, with an “Open in app” action instead of switching apps automatically.
  • Cancel pending reference requests and invoke widget cleanup with the original mount element when leaving or replacing a resource.

Deck support

Deck boards use the existing deck-board reference widget.

nextcloud/deck#8575 provides the corresponding Deck-side fixes for embedded operation and cleanup of widget instances, board sessions, and Text editors.
Screenshot 2026-10-15 004619

TODO

  • ...

Checklist

AI (if applicable)

  • The content of this PR was partly or fully generated using AI ( GPT-6.1 Sol)

@hefftich hefftich added this to the Nextcloud 36 milestone Oct 14, 2026
@hefftich
hefftich requested a review from artonge October 14, 2026 22:48
@hefftich hefftich self-assigned this Oct 14, 2026
@github-project-automation github-project-automation Bot moved this to Backlog in 👥 Teams Oct 14, 2026
@codecov

codecov Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 93.84615% with 4 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/teams/views/TeamResourceView.vue 93.10% 2 Missing and 2 partials ⚠️

📢 Thoughts on this report? Let us know!

@hefftich
hefftich force-pushed the feat/embedded-team-deck branch 2 times, most recently from 091cad1 to a52d284 Compare October 14, 2026 23:06

@artonge artonge left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As an overall comment, the solution needs to be application agnostic as we will want more than deck board in the future, and we cannot have a custom handling for each new ressources that we want to dispay.

This means that we need to create a propre API for such thing, where apps can register ressources to be displayed. Then circles would simply consume this API to display an arbitrary number of ressources without needing to know about them. This would be really close to the smart picker widget API, so maybe we can extend it, or inspire ourselves from it for the new API.

Co-authored-by: Copilot <copilot@github.com> GPT-6.1 Sol

Signed-off-by: Stefan Lender <Stefan.Lender@dataport.de>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@hefftich
hefftich force-pushed the feat/embedded-team-deck branch from a52d284 to c43fa09 Compare October 20, 2026 09:38
@hefftich hefftich changed the title Add team deck integration with routing and component support Embed shared resources using the reference widget API Oct 20, 2026
@hefftich

Copy link
Copy Markdown
Contributor Author

Thanks @artonge, that makes sense! I've switched this over to the existing Reference/Smart Picker widget API.

Teams now just resolves the resource URL and renders the registered widget in interactive mode — no Deck-specific rendering anymore, and other apps can use the same path.

The Deck fixes needed for embedding and cleanup are in nextcloud/deck#8575, so we no longer need the separate web component.

One thing we lose with the existing API is card-level URLs and syncing navigation inside the widget with browser history, since the API doesn't expose that state.

Could you have another look and see if this is closer to what you had in mind?

@hefftich
hefftich requested a review from artonge October 20, 2026 14:46
@hefftich hefftich moved this from Backlog to In progress in 👥 Teams Oct 20, 2026
@hefftich
hefftich marked this pull request as ready for review October 20, 2026 20:43
@alimmroth alimmroth moved this from In progress to In review in 👥 Teams Oct 21, 2026
Comment thread src/teams/firstTab.ts
const orderSettled = resources.orderChecked || resources.orderError
const pagesSettled = resources.pagesChecked || resources.pagesError || resources.folderError
return orderSettled && pagesSettled
return orderSettled && pagesSettled && resources.boardsChecked

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

resources.boardsChecked, is an explicit reference to Deck. If we want to link more than Deck boards to teams it needs to be agnostic. I know this is from before this PR, but we should also pave the way toward more resources :).

label: board.title,
iconSvg: deckIcon,
href: board.url,
to: teamResourceRoute(teamId.value, 'deck', board.id),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another explicit reference, let's try to find a way without :)

@artonge artonge moved this from In review to In progress in 👥 Teams Oct 22, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: In progress

Development

Successfully merging this pull request may close these issues.

3 participants