fix(admin-ui): restore FE list→object navigation in headless shell (unblocks Channels Edit) - #2164
Merged
Merged
Conversation
The admin shell installs a minimal fake sap.ushell.Container so the 14 headless Fiori Elements apps render no standalone shell chrome. A side effect is that FE, detecting a launchpad, builds a NavigationService WITHOUT storeInnerAppStateAsync (it expects the real FLP to persist inner app-state). The fake container does not, so the first list-row click threw 'storeInnerAppStateAsync is not a function' and the ObjectPage never opened -- blocking Edit on Channels (and every other FE app). Enhancing the fake CrossApplicationNavigation with app-state factory methods does not help: FE fixes the service shape purely on ushell.Container presence. Instead, after each route match, wrap getNavigationService() on each admin FE component so the returned service always carries a working in-memory storeInnerAppStateAsync (and, defensively, replaceInnerAppStateKey), mirroring FE's standalone mode. Verified live on DEV via runtime patch: channel row -> ObjectPage with an active Edit button; nav service goes undefined -> function on a fresh component load. Refs #2163
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.
Problem
Row-click in the Channels Admin app (and every other headless Fiori Elements app) does not open the ObjectPage, so Edit is unreachable. #2163 added the missing per-app
navigationblock (ObjectPage route), which cleared the first error — but a second, deeper, shell-wide error remained:Root cause (grounded live on DEV, not guessed)
The admin shell installs a minimal fake
sap.ushell.Containerso the 14 FE apps render no standalone shell chrome. FE detects the (fake) launchpad and builds itsNavigationServicewithoutstoreInnerAppStateAsync, expecting the real FLP to persist inner-app state. Our fake container doesn't, so the first list-row click throws and navigation silently fails.Verified via runtime probes in an authenticated DEV session:
storeInnerAppStateAsync === undefined.CrossApplicationNavigationwith app-state factory methods does NOT help — a freshly-loaded component still hadundefined. FE fixes the service shape purely onushell.Containerpresence, before those methods are consulted.storeInnerAppStateAsyncto the returned nav service → channel row click navigates to the ObjectPage, which renders with an active Edit button.Fix
After each route match, wrap
getNavigationService()on every headlesssap.tutorials.admin.*FE component so the returned service always carries a working in-memorystoreInnerAppStateAsync(and, defensively,replaceInnerAppStateKey) — mirroring FE's standalone mode. Idempotent per component; no change to the shell chrome / back-button / title integration.Scope / risk
--skip-build, no-m); Step 3.5 bundle gate applies.Verification plan post-merge
Full deploy to DEV, then in Tom's session: Channels → click a row → ObjectPage opens → Edit button works.