feat(dialog): experimental sharing dialog for the unified sharing API - #239
Merged
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #239 +/- ##
===========================================
- Coverage 95.77% 73.93% -21.84%
===========================================
Files 4 23 +19
Lines 71 564 +493
Branches 25 168 +143
===========================================
+ Hits 68 417 +349
- Misses 3 126 +123
- Partials 0 21 +21 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
skjnldsv
commented
Jul 22, 2026
skjnldsv
commented
Jul 22, 2026
skjnldsv
commented
Jul 22, 2026
skjnldsv
commented
Jul 22, 2026
skjnldsv
commented
Jul 22, 2026
skjnldsv
commented
Jul 22, 2026
susnux
reviewed
Jul 23, 2026
skjnldsv
force-pushed
the
feature/vite-lib-build
branch
2 times, most recently
from
July 23, 2026 20:50
d41a57b to
640c934
Compare
Add the vite lib-mode build (multi-entry: index, public, ui and the experimental dialog, with inlined CSS and generated type declarations), the vitest configuration, the SVG `?raw` asset typings, and the dependencies the dialog entry point relies on. Assisted-by: ClaudeCode:claude-opus-4-8 Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
Add an experimental `@nextcloud/sharing/dialog` entry point targeting the Nextcloud 35 unified sharing API: - A Share class (obtained via createShare()/getShare()) wrapping the reactive share schema, with chainable mutation helpers and showDialog(). - SharingDialog + SharePanel: invite people or share via public link, permission presets with a custom fine-grained toggle view, and editable share properties with debounced persistence and native-validity errors. - Per-type recipient rendering, property hint notes, a plain-language expiration/password summary and a folder upload hint; datetime-local expiration using the backend's full UTC support. Callable unconditionally: it shows an error toast and no-ops when the server does not provide the unified sharing API. Assisted-by: ClaudeCode:claude-opus-4-8 Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
Cover the Share client and its mutation delegation, the property field (rendering, debounced persistence, native validity, datetime), the inline toggle field, recipient-to-model mapping, the outcome summary helper and the share panel behavior (presets, permission toggles, recipient sync, summary and folder-upload notes). Assisted-by: ClaudeCode:claude-opus-4-8 Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
Wire the Send button to the backend submit (activate the share, which validates it and notifies mail recipients), then swap the form for a confirmation view showing a success message, the share link in a readonly copy field and, for public links, a QR code. Also fixes token generation: crypto.randomUUID() is unavailable in insecure contexts, so use the uuid package instead. The clipboard helper moves to a shared util. Assisted-by: ClaudeCode:claude-opus-4-8 Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
SharePanel had grown to ~700 lines mixing several concerns. Extract them so the component is thin glue and each concern is independently testable: - utils/property.ts: isLongTextProperty, isOptionalProperty, defaultPropertyValue (pure). - utils/link.ts: resolveShareLink and generateShareToken (shared with the confirmation view). - composables: useShareProperties, usePermissionPresets, useRecipientSearch and useLinkShare hold the stateful logic. SharePanel now uses defineModel for the active tab. Behaviour is unchanged; adds unit tests for the new utils. Assisted-by: ClaudeCode:claude-opus-4-8 Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
The Clipboard API is unavailable on plain http, so copying fell through to a window.prompt that never actually copied while the UI still showed "Copied". Use a textarea + execCommand fallback there and throw on failure so callers only report a successful copy. Assisted-by: ClaudeCode:claude-opus-4-8 Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
… switch Disable the Send button until the share has at least one recipient, and clear a stale submit error when switching between the invited and anyone tabs. Assisted-by: ClaudeCode:claude-opus-4-8 Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
… icon Render the QR behind a Show/Hide toggle instead of always, force it to a dark-on-white card (with a quiet-zone margin) so it stays scannable in dark mode, and use NcEmptyContent for the success state so the checkmark reads as a proper large confirmation icon. Assisted-by: ClaudeCode:claude-opus-4-8 Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
Put the confirmation copy button inside the link field via NcInputField's trailing button. Use each field's native helperText for hints (text/textarea/password/date and the boolean's description); keep the custom note only for NcSelect, which has no helperText. Assisted-by: ClaudeCode:claude-opus-4-8 Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
skjnldsv
force-pushed
the
feature/vite-lib-build
branch
from
August 26, 2026 14:13
640c934 to
a2f96e7
Compare
skjnldsv
marked this pull request as ready for review
August 26, 2026 14:18
Point @nextcloud/vue at the published ^9.10.0 (peer ^9.0.0) instead of a local file link so the package installs in CI; the dialog degrades gracefully on released nc-vue. Regenerate the lockfile after rebasing onto main (eslint 10, vite 7, updated dev deps) and add sass-embedded, which vite 7 requires for scss. Assisted-by: ClaudeCode:claude-opus-4-8 Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
skjnldsv
force-pushed
the
feature/vite-lib-build
branch
from
August 26, 2026 14:23
a2f96e7 to
577ce1a
Compare
susnux
approved these changes
Aug 26, 2026
typedoc cannot resolve `.vue` single-file component imports and does not need a full type check to extract API documentation (real type checking runs as a separate step). Pass --skipErrorChecking so doc generation no longer fails on the dialog's component imports. Assisted-by: ClaudeCode:claude-opus-4-8 Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
skjnldsv
force-pushed
the
feature/vite-lib-build
branch
from
August 27, 2026 06:40
dec9efb to
47b9e8b
Compare
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Needs