feat(teams): in-app Teams page#2561
Conversation
|
So no longer part of contacts app? Will simplify things :) |
jancborchardt
left a comment
There was a problem hiding this comment.
Really really nice! :) Great first step in the right direction, and keeping it simple & contained by just porting over what we have.
|
Small details but no blocker @marcoambrosini :
|
|
@susnux could you have a look at the front-end tooling and wiring and tell me if it's sane? |
@jancborchardt then I would do it same as talk here, with the new button inline |
Add a PageController that renders the SPA shell, a /teams route plus a catch-all so HTML5-history deep links survive a reload, and a Teams entry in the app navigation. Signed-off-by: Marco Ambrosini <marco.ambrosini@nextcloud.com>
Register src/main.ts as the 'main' Vite entry and pull in the runtime deps the ported team-page code needs (vue-router, pinia, vuex, cdav, virtua, cropper, MDI). Allow JS in tsconfig and skip linting the ported src/teams/team-page sources until they are modernized. Signed-off-by: Marco Ambrosini <marco.ambrosini@nextcloud.com>
The app shell (App, router, Pinia store) drives a home view listing teams and a per-team page. The team page and its member/entity-picker components, services and models are ported from the Contacts app and kept under team-page/ (Vuex + Options API) while they are migrated. Signed-off-by: Marco Ambrosini <marco.ambrosini@nextcloud.com>
Generate circle/team links and the dashboard widget's targets against the new circles.Page.index route instead of the Contacts app, and drop the now-unused route_to_circle config and IAppManager 'contacts' checks. The widget no longer requires Contacts to be installed. Signed-off-by: Marco Ambrosini <marco.ambrosini@nextcloud.com>
Raise the max-version to 35. Signed-off-by: Marco Ambrosini <marco.ambrosini@nextcloud.com>
Signed-off-by: Marco Ambrosini <marco.ambrosini@nextcloud.com>
2e6e767 to
6227cc3
Compare
|
hey-hey! Looks really promising. @marcoambrosini Will it work fine with large circles (1000+ members)? See my other PRs related to that nextcloud/collectives#2518, nextcloud/contacts#5330, so maybe you can backport some stuff from them |
stediefan
left a comment
There was a problem hiding this comment.
Looks great! I already built some UI stuff ontop - can't wait to publish after this gets merged. One further task would be to remove the corresponding code from contacts - right?
|
Hi @Koc, yes we'll have to handle those too thanks for sharing! |
- reopen the create-team dialog after cancel/create by emitting close - gate the Teams page and nav entry on frontend_enabled - pluralize the resource count with n() - keep the team list when the dashboard preview call fails Assisted-by: ClaudeCode:claude-fable-5 Signed-off-by: Marco Ambrosini <marco.ambrosini@nextcloud.com>
Resolve conflicts from the upstream repo-wide refactor (constructor property promotion, first-class callable syntax) and the Nextcloud 35 version bump. Drop the contacts-app dependency from the Teams dashboard widget and ModelManager, adapt the Teams SPA to master's updated lint and TypeScript rules, and recompile assets. Assisted-by: ClaudeCode:claude-fable-5 Signed-off-by: Marco Ambrosini <marco.ambrosini@nextcloud.com>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
The Teams SPA bundle pulls in BSD-3-Clause code (cropperjs), but master removed LICENSES/BSD-3-Clause.txt; restore it so REUSE passes. Drop the now-unused DeprecatedMethod baseline entry for ModelManager, whose isInstalled() call went away when generateLinkToCircle() switched to the in-app route. Assisted-by: ClaudeCode:claude-fable-5 Signed-off-by: Marco Ambrosini <marco.ambrosini@nextcloud.com>
Assisted-by: ClaudeCode:claude-fable-5 Signed-off-by: Marco Ambrosini <marco.ambrosini@nextcloud.com>
Teams app front-end first step: mostly moved the functionality from contacts and added an overview page.

