WIP: Storage dashboard: connected-app card and details modal #258

Draft
raucao wants to merge 1 commits from feature/rs_storage_dashboard into feature/rs_device_tokens
pull from: feature/rs_storage_dashboard
Owner

Third of three PRs for #254. Stacked on #257 and #256 — please review/merge those first.

What

  • RsAuthComponent is now a card showing the app name/icon, its device (parsed from the captured user agent), an access summary (root vs. number of folders) and the permission status (never expires / expires on / expired).
  • Connected apps are grouped by app and device, so repeated authorizations for the same app and device (e.g. after a browser update) appear as one card with a token count.
  • RsAuthDetailsModalComponent (built on the existing ModalComponent) lists the full scopes, the device, and every authorization in the group with its own Revoke access, plus Launch app.
  • Adds RemoteStorageAuthorization#device_name and #expired?.

Notes

  • Grouping is display-only plus manual revoke. The server does not auto-supersede, because a reliable device identity is not available server-side across all runtimes (e.g. Cordova clears the OAuth webview's cookies on every flow).
  • The details modal's scope list reuses OauthHelper (read only / read write).
  • No changes to the "Info"/recommended-apps page.

Tests

bundle exec rspec — 350 examples, 0 failures (feature spec for the card, grouping and modal; model specs for device_name/expired?).

Part of #254.

Third of three PRs for #254. Stacked on #257 and #256 — please review/merge those first. ## What - `RsAuthComponent` is now a card showing the app name/icon, its device (parsed from the captured user agent), an access summary (root vs. number of folders) and the permission status (never expires / expires on / expired). - Connected apps are **grouped by app and device**, so repeated authorizations for the same app and device (e.g. after a browser update) appear as one card with a token count. - `RsAuthDetailsModalComponent` (built on the existing `ModalComponent`) lists the full scopes, the device, and every authorization in the group with its own **Revoke access**, plus **Launch app**. - Adds `RemoteStorageAuthorization#device_name` and `#expired?`. ## Notes - Grouping is display-only plus manual revoke. The server does not auto-supersede, because a reliable device identity is not available server-side across all runtimes (e.g. Cordova clears the OAuth webview's cookies on every flow). - The details modal's scope list reuses `OauthHelper` (read only / read write). - No changes to the "Info"/recommended-apps page. ## Tests `bundle exec rspec` — 350 examples, 0 failures (feature spec for the card, grouping and modal; model specs for `device_name`/`expired?`). Part of #254.
raucao added the ui/ux
integration
remotestorage
labels 2026-11-02 09:04:50 +00:00
raucao force-pushed feature/rs_storage_dashboard from 81f23c1deb to cd87c1f61a 2026-11-02 12:41:27 +00:00 Compare
raucao force-pushed feature/rs_storage_dashboard from cd87c1f61a to 0984d3e4a0 2026-11-02 13:06:57 +00:00 Compare
raucao added the feature label 2026-11-02 13:27:24 +00:00
raucao added 1 commit 2026-11-02 13:44:38 +00:00
Add storage dashboard card and per-app details modal
CI / Test (pull_request) Successful in 42s
5742ae3b97
- Rework RsAuthComponent into a card that shows the app, its device, an
  access summary and the permission status
- Group connected apps by app and device, so repeated authorizations for
  the same app and device (e.g. after a browser update) are shown together,
  each with its own revoke action
- Add RsAuthDetailsModalComponent with the full scope list, device,
  connected tokens and permission expiry, plus Launch and Revoke actions
  (built on the existing ModalComponent)
- Add RemoteStorageAuthorization#device_name (parsed from the user agent)
  and #expired?

Part of #254
raucao force-pushed feature/rs_storage_dashboard from 0984d3e4a0 to 5742ae3b97 2026-11-02 13:44:39 +00:00 Compare
raucao marked the pull request as work in progress 2026-11-02 19:00:05 +00:00
All checks were successful
CI / Test (pull_request) Successful in 42s
You are not authorized to merge this pull request.
This pull request can be merged automatically.
This pull request is marked as a work in progress.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feature/rs_storage_dashboard:feature/rs_storage_dashboard
git checkout feature/rs_storage_dashboard
Sign in to join this conversation.