Skip to content

feat(files_sharing): import the sharing dialog directly - #64125

Open
skjnldsv wants to merge 1 commit into
masterfrom
feat/sharing-dialog-direct-import
Open

feat(files_sharing): import the sharing dialog directly#64125
skjnldsv wants to merge 1 commit into
masterfrom
feat/sharing-dialog-direct-import

Conversation

@skjnldsv

@skjnldsv skjnldsv commented Sep 8, 2026

Copy link
Copy Markdown
Member
  • Resolves: #

Summary

susnux pointed out on #62593 that a Vue 3 library can run inside a Vue 2 app if it brings its own Vue, so the OCA.Sharing bridge the sidebar used to reach the dialog through is unnecessary. @nextcloud/sharing 1.0.0-beta.3 declares vue and @nextcloud/vue as dependencies instead of peers, and this drops the bridge, its Vue 3 entry point, the app symlink into the Vue 3 frontend, and the script and style that loaded it.

npm nests the library's own Vue in the legacy frontend, and its webpack config sets no vue alias to override that:

build/frontend-legacy/node_modules/vue                                             2.7.16
build/frontend-legacy/node_modules/@nextcloud/sharing                              1.0.0-beta.3
build/frontend-legacy/node_modules/@nextcloud/sharing/node_modules/vue             3.5.42
build/frontend-legacy/node_modules/@nextcloud/sharing/node_modules/@nextcloud/vue  9.11.0

The symlink was also what pulled this Vue 2 app through the Vue 3 lint and Vitest configs, so I reverted the exclusions I added for it — npm run lint is 0 errors without them.

Unit tests and lint pass; the sharing end-to-end suite reached 22 of 35 with no failures before I stopped it, so it still needs a full run.

TODO

  • Full sharing end-to-end run (npx playwright test --project=sharing)
  • Screenshot of the dialog opened from the sidebar

Checklist

AI (if applicable)

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

The dialog is a Vue 3 component and this frontend is Vue 2, which is why it was
reached through a bridge: a separate Vue 3 entry point registered it on
`OCA.Sharing`, and the sidebar called through that global.

@nextcloud/sharing 1.0.0-beta.3 declares Vue as a dependency rather than a peer,
so npm installs its own copy next to it and the dialog runs on that one, the
same way @nextcloud/dialogs already does. The sidebar imports the library
directly and the bridge goes away: its entry point, the app symlink into the
Vue 3 frontend, and the script and style that loaded it.

That symlink was also what pulled this Vue 2 app through the Vue 3 lint and test
configs, so the exclusions added for it are no longer needed.

Signed-off-by: Barthelemy Briand <barthelemy.briand@nextcloud.com>
Assisted-by: ClaudeCode:claude-opus-4-8
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
@skjnldsv
skjnldsv marked this pull request as ready for review September 8, 2026 14:56
@skjnldsv
skjnldsv requested review from a team as code owners September 8, 2026 14:56
@skjnldsv
skjnldsv requested review from Altahrim, kristian-zendato, leftybournes, provokateurin, sorbaugh and susnux and a lite review from Copilot and removed request for a team and Copilot September 8, 2026 14:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants