Repository navigation
Conversation
6 of 7 tasks
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
hiobjan
force-pushed
the
feat/app-registry-for-teams
branch
2 times, most recently
from
October 27, 2026 09:40
ae87ec6 to
42c9c55
Compare
Signed-off-by: Janina Hiob <janina.hiob@dataport.de>
hiobjan
force-pushed
the
feat/app-registry-for-teams
branch
from
October 27, 2026 12:39
42c9c55 to
fed00ea
Compare
This branch has not been deployed
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.
…w of apps from circles to the apps
Summary
With this approach the creation and view of the apps, that belong to a team is shifted from the circles app to the integrated app.
Flow
1. Register the App
Each app registers its ITeamAppProvider implementation through:
$context->registerTeamAppProvider(TeamsProvider::class);TeamAppProviderRegistry discovers enabled providers, checks their identity, and obtains their order, compatibility routes, and optional browser-module URL.
2. Initialize the Teams Page
PageController.php publishes those descriptors as initial state.
The frontend registry creates a host-side adapter for each provider. It also imports and validates the optional mount-only module.
3. Load a Team’s Navigation
After membership loads, TeamPage loads the team’s resources and calls the app store.
For each provider, the host requests:
GET /ocs/v2.php/apps/circles/teams/{teamId}/apps/{providerId}/navigationThe response contains entries, actions, and represented resource keys, not resource content.
4. Build the Sidebar
The app store validates and namespaces entries as providerId:entryId.
TeamNavigation displays them. Resource keys prevent the same resource appearing again in the generic shared-resource list.
5. Open the Resource
Entry has href: navigate to the owning app. Deck and Collectives render and authorize the resource there.
Entry has no href: navigate to /team/{teamId}/app/{providerId}/{entryId}, rendered by TeamAppView.
6. Clean Up
Changing entries destroys the previous view. Leaving the team aborts its context and requests. A late-finishing mount is immediately cleaned up.
Selection Is Separate
/navigation/selection stores the resource IDs chosen for navigation.
Implementations
TODO
Checklist
3. to review, feature component)stable32)AI (if applicable)