@sapui5/sap.ushell_abap 1.148.1 → 1.149.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/main/js/sap/ushell_abap/.library +2 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/AppStateAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/ClientSideTargetResolutionAdapter.js +3 -3
- package/src/main/js/sap/ushell_abap/adapters/abap/CommonDataModelAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/ConfigurationDefaultsAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/ContainerAdapter.js +4 -2
- package/src/main/js/sap/ushell_abap/adapters/abap/FlpLaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/LaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionInternalAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/PageBuildingAdapter.js +4 -2
- package/src/main/js/sap/ushell_abap/adapters/abap/PagePersistenceAdapter.js +4 -2
- package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationV2Adapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/SearchAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/SupportTicketAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/Ui5ComponentLoaderAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/UserInfoAdapter.js +3 -1
- package/src/main/js/sap/ushell_abap/adapters/hana/ContainerAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/bootstrap/BootTask/MarkPerformance.js +25 -0
- package/src/main/js/sap/ushell_abap/bootstrap/BootTask/PrepareDirectAppStart.js +18 -0
- package/src/main/js/sap/ushell_abap/bootstrap/BootTask/RequestGroups.js +36 -2
- package/src/main/js/sap/ushell_abap/bootstrap/BootTask/RequestTargetMappings.js +11 -0
- package/src/main/js/sap/ushell_abap/bootstrap/BootTask.js +32 -14
- package/src/main/js/sap/ushell_abap/bootstrap/DirectAppStart.js +71 -10
- package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad/CreateRenderer.js +21 -2
- package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad/InitXhrLogon.js +59 -19
- package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad/RequestPages.js +56 -5
- package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad.js +32 -11
- package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpadModule.js +4 -1
- package/src/main/js/sap/ushell_abap/bootstrap/PageSetsRequestHandler.js +54 -42
- package/src/main/js/sap/ushell_abap/bootstrap/PlatformConfig.js +7 -9
- package/src/main/js/sap/ushell_abap/bootstrap/SAPCompanionConditionSetter.js +33 -28
- package/src/main/js/sap/ushell_abap/bootstrap/StartupRequestHandler.js +34 -23
- package/src/main/js/sap/ushell_abap/bootstrap/ThemeHandler.js +90 -2
- package/src/main/js/sap/ushell_abap/bootstrap/XhrFactory.js +23 -13
- package/src/main/js/sap/ushell_abap/bootstrap/XhrLogonEventHandler.js +33 -10
- package/src/main/js/sap/ushell_abap/bootstrap/XhrLogonLibLoader.js +49 -1
- package/src/main/js/sap/ushell_abap/bootstrap/abap-def-dev.js +1 -0
- package/src/main/js/sap/ushell_abap/bootstrap/abap-def-loader.js +4 -0
- package/src/main/js/sap/ushell_abap/bootstrap/abap-def.js +1 -0
- package/src/main/js/sap/ushell_abap/bootstrap/abapConstants.js +3 -0
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.js +2 -0
- package/src/main/js/sap/ushell_abap/components/TCodeNavigation.js +1 -1
- package/src/main/js/sap/ushell_abap/integration/WebSsoBridge.js +57 -0
- package/src/main/js/sap/ushell_abap/library.js +1 -1
- package/src/main/js/sap/ushell_abap/pbServices/ui2/Contracts.js +3 -3
- package/src/main/js/sap/ushell_abap/pbServices/ui2/PageBuildingService.js +4 -16
- package/src/main/js/sap/ushell_abap/pbServices/ui2/Utils.js +3 -2
- package/ui5.yaml +18 -13
|
@@ -1,39 +1,63 @@
|
|
|
1
1
|
// Copyright (c) 2009-2026 SAP SE, All Rights Reserved
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview This module handles the direct start of an application.
|
|
4
|
+
*/
|
|
2
5
|
sap.ui.define([
|
|
3
6
|
"sap/base/Log",
|
|
4
7
|
"sap/base/util/ObjectPath",
|
|
5
8
|
"sap/ushell_abap/bootstrap/StartupRequestHandler",
|
|
6
|
-
"sap/ushell/bootstrap/Config",
|
|
7
9
|
"sap/ushell/base/promisify",
|
|
8
10
|
"sap/ushell/base/requireAsync",
|
|
9
|
-
"sap/ushell/base/UrlParsing"
|
|
11
|
+
"sap/ushell/base/UrlParsing",
|
|
12
|
+
"sap/ushell/bootstrap/Config"
|
|
10
13
|
], (
|
|
11
14
|
Log,
|
|
12
15
|
ObjectPath,
|
|
13
16
|
StartupRequestHandler,
|
|
14
|
-
BootstrapConfig,
|
|
15
17
|
promisify,
|
|
16
18
|
requireAsync,
|
|
17
|
-
UrlParsing
|
|
19
|
+
UrlParsing,
|
|
20
|
+
BootstrapConfig
|
|
18
21
|
) => {
|
|
19
22
|
"use strict";
|
|
20
23
|
|
|
24
|
+
/**
|
|
25
|
+
* @alias sap.ushell_abap.bootstrap.DirectAppStart
|
|
26
|
+
* @namespace
|
|
27
|
+
* @description This module handles the direct start of an application by preloading necessary resources and starting the app.
|
|
28
|
+
*
|
|
29
|
+
* @since 1.147.0
|
|
30
|
+
* @private
|
|
31
|
+
*/
|
|
21
32
|
class DirectAppStart {
|
|
22
33
|
#aInternTargets = [
|
|
23
34
|
"#Shell-home",
|
|
24
35
|
"#Launchpad-openFLPPage",
|
|
25
36
|
"#Shell-appfinder",
|
|
26
|
-
"#Shell-catalog",
|
|
27
|
-
"#shell-catalog",
|
|
28
37
|
"#Action-search"
|
|
29
38
|
];
|
|
30
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Checks whether conditions apply for this module.
|
|
42
|
+
* @returns {boolean} True if this module is relevant and should be executed, false otherwise.
|
|
43
|
+
*
|
|
44
|
+
* @since 1.147.0
|
|
45
|
+
* @private
|
|
46
|
+
*/
|
|
31
47
|
#isRelevant () {
|
|
32
48
|
const sHash = this.#getFullHash();
|
|
33
49
|
|
|
34
50
|
return sHash !== "#" && !this.#aInternTargets.some((sTarget) => sHash.startsWith(sTarget));
|
|
35
51
|
}
|
|
36
52
|
|
|
53
|
+
/**
|
|
54
|
+
* Prepares the direct app start by preloading target mappings and app states for the application to be started directly.
|
|
55
|
+
* This is safe to be called during the boot process.
|
|
56
|
+
* @returns {Promise<undefined>} A promise that resolves when the preparation is complete.
|
|
57
|
+
*
|
|
58
|
+
* @since 1.147.0
|
|
59
|
+
* @private
|
|
60
|
+
*/
|
|
37
61
|
async prepare () {
|
|
38
62
|
const oUshellConfig = BootstrapConfig.get();
|
|
39
63
|
|
|
@@ -113,6 +137,14 @@ sap.ui.define([
|
|
|
113
137
|
]);
|
|
114
138
|
}
|
|
115
139
|
|
|
140
|
+
/**
|
|
141
|
+
* Starts the application directly based on the current hash.
|
|
142
|
+
* This is NOT safe to be called during the boot process.
|
|
143
|
+
* @returns {Promise<undefined>} A promise that resolves when the start is complete.
|
|
144
|
+
*
|
|
145
|
+
* @since 1.147.0
|
|
146
|
+
* @private
|
|
147
|
+
*/
|
|
116
148
|
async startApp () {
|
|
117
149
|
if (!this.#isRelevant()) {
|
|
118
150
|
return;
|
|
@@ -123,6 +155,17 @@ sap.ui.define([
|
|
|
123
155
|
await window["sap-ushell-async-libs-promise-directstart"];
|
|
124
156
|
}
|
|
125
157
|
|
|
158
|
+
/**
|
|
159
|
+
* Starts the application directly based on the current hash.
|
|
160
|
+
* This is NOT safe to be called during the boot process.
|
|
161
|
+
*
|
|
162
|
+
* Handles the dynamic resolution of the ssb evaluation id.
|
|
163
|
+
* It triggers the start of the application as early as possible which should allow for early dependency loading by UI5.
|
|
164
|
+
* @returns {Promise<{resolvedHashFragment: object}>} An object containing the resolved hash fragment for the direct start.
|
|
165
|
+
*
|
|
166
|
+
* @since 1.147.0
|
|
167
|
+
* @private
|
|
168
|
+
*/
|
|
126
169
|
async #startApp () {
|
|
127
170
|
let sHash = this.#getFullHash();
|
|
128
171
|
if (sHash.includes("sap-ssb-eval-id")) {
|
|
@@ -150,15 +193,13 @@ sap.ui.define([
|
|
|
150
193
|
);
|
|
151
194
|
|
|
152
195
|
return {
|
|
153
|
-
resolvedHashFragment: oResolvedHashFragmentWithComponentHandle
|
|
154
|
-
dependenciesLoaded: true
|
|
196
|
+
resolvedHashFragment: oResolvedHashFragmentWithComponentHandle
|
|
155
197
|
};
|
|
156
198
|
}
|
|
157
199
|
|
|
158
200
|
// non-ui5 app
|
|
159
201
|
return {
|
|
160
|
-
resolvedHashFragment: oResolvedHashFragment
|
|
161
|
-
dependenciesLoaded: false
|
|
202
|
+
resolvedHashFragment: oResolvedHashFragment
|
|
162
203
|
};
|
|
163
204
|
}
|
|
164
205
|
|
|
@@ -167,6 +208,9 @@ sap.ui.define([
|
|
|
167
208
|
* resolved by Smart Business early so that the resolved parameters are already
|
|
168
209
|
* passed to the app component during the early component creation.
|
|
169
210
|
* @param {string} sHash the current hash
|
|
211
|
+
*
|
|
212
|
+
* @since 1.147.0
|
|
213
|
+
* @private
|
|
170
214
|
*/
|
|
171
215
|
async #resolveEvalId (sHash) {
|
|
172
216
|
const [SmartBusiness] = await requireAsync(["sap/ushell/utils/SmartBusiness"]);
|
|
@@ -190,6 +234,8 @@ sap.ui.define([
|
|
|
190
234
|
* This method must only be called after the shell bootstrap!
|
|
191
235
|
* @param {sap.ushell.Container} Container The shell container instance
|
|
192
236
|
* @returns {Promise} A promise to chain following steps.
|
|
237
|
+
*
|
|
238
|
+
* @since 1.147.0
|
|
193
239
|
* @private
|
|
194
240
|
*/
|
|
195
241
|
async #createWaitForRendererCreatedPromise (Container) {
|
|
@@ -215,6 +261,13 @@ sap.ui.define([
|
|
|
215
261
|
return oDeferred.promise;
|
|
216
262
|
}
|
|
217
263
|
|
|
264
|
+
/**
|
|
265
|
+
* Prepares the hash to be used for the UrlParsing utilities.
|
|
266
|
+
* @returns {string} The full hash including the "#" prefix.
|
|
267
|
+
*
|
|
268
|
+
* @since 1.147.0
|
|
269
|
+
* @private
|
|
270
|
+
*/
|
|
218
271
|
#getFullHash () {
|
|
219
272
|
const sHash = this.getLocationHash();
|
|
220
273
|
const sSanitizedHash = sHash.startsWith("#") ? sHash : `#${sHash}`;
|
|
@@ -222,6 +275,14 @@ sap.ui.define([
|
|
|
222
275
|
return decodeURI(sSanitizedHash);
|
|
223
276
|
}
|
|
224
277
|
|
|
278
|
+
/**
|
|
279
|
+
* Returns the window.location.hash string.
|
|
280
|
+
* Extracted as a method to allow stubbing in tests.
|
|
281
|
+
* @returns {string} The hash portion of the URL
|
|
282
|
+
*
|
|
283
|
+
* @since 1.147.0
|
|
284
|
+
* @private
|
|
285
|
+
*/
|
|
225
286
|
getLocationHash () {
|
|
226
287
|
return window.location.hash;
|
|
227
288
|
}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
// Copyright (c) 2009-2026 SAP SE, All Rights Reserved
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview This module provides a function for creating and placing the renderer.
|
|
4
|
+
*/
|
|
2
5
|
sap.ui.define([
|
|
3
6
|
"sap/ushell/Container",
|
|
4
|
-
"sap/ushell/state/StateManager",
|
|
5
7
|
"sap/ushell/renderer/ShellLayout",
|
|
8
|
+
"sap/ushell/state/StateManager",
|
|
6
9
|
"sap/ushell/ui/shell/SysInfoBar"
|
|
7
10
|
], (
|
|
8
11
|
Container,
|
|
9
|
-
StateManager,
|
|
10
12
|
ShellLayout,
|
|
13
|
+
StateManager,
|
|
11
14
|
SysInfoBar
|
|
12
15
|
) => {
|
|
13
16
|
"use strict";
|
|
@@ -15,7 +18,23 @@ sap.ui.define([
|
|
|
15
18
|
// shortcut for sap.ushell.state.StateManager.ShellMode
|
|
16
19
|
const ShellMode = StateManager.ShellMode;
|
|
17
20
|
|
|
21
|
+
/**
|
|
22
|
+
* @alias sap.ushell_abap.bootstrap.LoadLaunchpad.CreateRenderer
|
|
23
|
+
* @namespace
|
|
24
|
+
* @description This module is responsible for creating and placing the renderer.
|
|
25
|
+
* It shall only be called AFTER the the bootstrap is done and the core is ready.
|
|
26
|
+
*
|
|
27
|
+
* @since 1.147.0
|
|
28
|
+
* @private
|
|
29
|
+
*/
|
|
18
30
|
class CreateRenderer {
|
|
31
|
+
/**
|
|
32
|
+
* Creates the renderer and places it into the DOM.
|
|
33
|
+
* @returns {Promise<undefined>} Resolves when the renderer is created and placed
|
|
34
|
+
*
|
|
35
|
+
* @since 1.147.0
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
19
38
|
async run () {
|
|
20
39
|
const oRenderer = await Container.createRendererInternal("fiori2");
|
|
21
40
|
oRenderer.placeAt("canvas", "only");
|
|
@@ -1,20 +1,38 @@
|
|
|
1
1
|
// Copyright (c) 2009-2026 SAP SE, All Rights Reserved
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview This module initializes the XHR logon for the ABAP launchpad.
|
|
4
|
+
*/
|
|
2
5
|
sap.ui.define([
|
|
3
|
-
"sap/ushell_abap/bootstrap/XhrLogonLibLoader", // triggers loading of the XHR logon lib, once required
|
|
4
|
-
"sap/ushell_abap/bootstrap/XhrLogonEventHandler",
|
|
5
|
-
"sap/ushell/bootstrap/Config",
|
|
6
6
|
"sap/base/Log",
|
|
7
|
-
"sap/
|
|
7
|
+
"sap/ushell_abap/bootstrap/XhrLogonEventHandler",
|
|
8
|
+
"sap/ushell_abap/bootstrap/XhrLogonLibLoader",
|
|
9
|
+
"sap/ushell/Container",
|
|
10
|
+
"sap/ushell/Config"
|
|
8
11
|
], (
|
|
9
|
-
XhrLogonLibLoader,
|
|
10
|
-
XhrLogonEventHandler,
|
|
11
|
-
BootstrapConfig,
|
|
12
12
|
Log,
|
|
13
|
-
|
|
13
|
+
XhrLogonEventHandler,
|
|
14
|
+
XhrLogonLibLoader,
|
|
15
|
+
Container,
|
|
16
|
+
Config
|
|
14
17
|
) => {
|
|
15
18
|
"use strict";
|
|
16
19
|
|
|
20
|
+
/**
|
|
21
|
+
* @alias sap.ushell_abap.bootstrap.LoadLaunchpad.InitXhrLogon
|
|
22
|
+
* @namespace
|
|
23
|
+
* @description This module initializes the XHR logon for the ABAP launchpad.
|
|
24
|
+
* It is called during the oninit phase as it is not critical for the startup of the FLP.
|
|
25
|
+
*
|
|
26
|
+
* @since 1.147.0
|
|
27
|
+
* @private
|
|
28
|
+
*/
|
|
17
29
|
class InitXhrLogon {
|
|
30
|
+
/**
|
|
31
|
+
* Initializes the XHR logon
|
|
32
|
+
*
|
|
33
|
+
* @since 1.147.0
|
|
34
|
+
* @private
|
|
35
|
+
*/
|
|
18
36
|
async run () {
|
|
19
37
|
await Promise.all([
|
|
20
38
|
this.#initXhrLogon(),
|
|
@@ -26,9 +44,12 @@ sap.ui.define([
|
|
|
26
44
|
* Determines the XHR logon mode based on the bootstrap configuration
|
|
27
45
|
* and the URL parameters sap-ushell-xhrLogon-mode and saml2.
|
|
28
46
|
* @returns {string} the logon mode
|
|
47
|
+
*
|
|
48
|
+
* @since 1.147.0
|
|
49
|
+
* @private
|
|
29
50
|
*/
|
|
30
51
|
#getLogonMode () {
|
|
31
|
-
const oUshellConfig =
|
|
52
|
+
const oUshellConfig = Config.getRawBootstrapConfig();
|
|
32
53
|
const sSearch = this.getWindowLocationSearch();
|
|
33
54
|
const oUrlParameters = new URLSearchParams(sSearch);
|
|
34
55
|
|
|
@@ -40,8 +61,8 @@ sap.ui.define([
|
|
|
40
61
|
|
|
41
62
|
/**
|
|
42
63
|
* Initializes and starts XHR logon lib based on a given configuration.
|
|
43
|
-
* <p>
|
|
44
64
|
*
|
|
65
|
+
* @since 1.147.0
|
|
45
66
|
* @private
|
|
46
67
|
*/
|
|
47
68
|
async #initXhrLogon () {
|
|
@@ -70,6 +91,13 @@ sap.ui.define([
|
|
|
70
91
|
this.#initXhrLogonIgnoreList(oXHRLogonManager);
|
|
71
92
|
}
|
|
72
93
|
|
|
94
|
+
/**
|
|
95
|
+
* Initializes the XHR logon lib by storing the instance of the logon manager in the Container.
|
|
96
|
+
* This is later used to have indirect access to the logon manager.
|
|
97
|
+
*
|
|
98
|
+
* @since 1.147.0
|
|
99
|
+
* @private
|
|
100
|
+
*/
|
|
73
101
|
async #initFrameLogonManager () {
|
|
74
102
|
const oXhrLogonLib = await XhrLogonLibLoader.getLib();
|
|
75
103
|
const oFrameLogonManager = oXhrLogonLib.FrameLogonManager.getInstance();
|
|
@@ -77,12 +105,10 @@ sap.ui.define([
|
|
|
77
105
|
}
|
|
78
106
|
|
|
79
107
|
/**
|
|
80
|
-
* Creates a logger for XMLHttpRequest(s) that logs errors, warnings, info
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
* @returns {object}
|
|
84
|
-
* A logger that can be assigned to XMLHttpRequest.
|
|
108
|
+
* Creates a logger for XMLHttpRequest(s) that logs errors, warnings, info and debug messages via Log.
|
|
109
|
+
* @returns {object} A logger that can be assigned to XMLHttpRequest.
|
|
85
110
|
*
|
|
111
|
+
* @since 1.147.0
|
|
86
112
|
* @private
|
|
87
113
|
*/
|
|
88
114
|
#createUi5ConnectedXhrLogger () {
|
|
@@ -96,15 +122,13 @@ sap.ui.define([
|
|
|
96
122
|
|
|
97
123
|
/**
|
|
98
124
|
* Initializes the ignore list of the XHR logon manager.
|
|
99
|
-
* <p>
|
|
100
125
|
* If the UI5 resources (including the own bootstrap script) are loaded from an absolute URL
|
|
101
126
|
* (in case CDN is activated),
|
|
102
127
|
* this URL is added to the ignore list to prevent CORS preflight requests due to the X headers.
|
|
103
128
|
* We expect that all resources can be loaded without authentication in this case.
|
|
129
|
+
* @param {object} oXHRLogonManager the logon frame manager instance to use
|
|
104
130
|
*
|
|
105
|
-
* @
|
|
106
|
-
* the logon frame manager instance to use
|
|
107
|
-
*
|
|
131
|
+
* @since 1.147.0
|
|
108
132
|
* @private
|
|
109
133
|
*/
|
|
110
134
|
#initXhrLogonIgnoreList (oXHRLogonManager) {
|
|
@@ -135,10 +159,26 @@ sap.ui.define([
|
|
|
135
159
|
return new XhrLogonEventHandler(oWindow, sXhrLogonMode);
|
|
136
160
|
}
|
|
137
161
|
|
|
162
|
+
/**
|
|
163
|
+
* Returns the window.location.search string.
|
|
164
|
+
* Extracted as a method to allow stubbing in tests.
|
|
165
|
+
* @returns {string} The query string portion of the URL
|
|
166
|
+
*
|
|
167
|
+
* @since 1.147.0
|
|
168
|
+
* @private
|
|
169
|
+
*/
|
|
138
170
|
getWindowLocationSearch () {
|
|
139
171
|
return window.location.search;
|
|
140
172
|
}
|
|
141
173
|
|
|
174
|
+
/**
|
|
175
|
+
* Returns the window.location.origin string.
|
|
176
|
+
* Extracted as a method to allow stubbing in tests.
|
|
177
|
+
* @returns {string} The origin portion of the URL
|
|
178
|
+
*
|
|
179
|
+
* @since 1.147.0
|
|
180
|
+
* @private
|
|
181
|
+
*/
|
|
142
182
|
getLocationOrigin () {
|
|
143
183
|
return window.location.origin;
|
|
144
184
|
}
|
|
@@ -1,27 +1,48 @@
|
|
|
1
1
|
// Copyright (c) 2009-2026 SAP SE, All Rights Reserved
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview This module is responsible for requesting the launchpad page content.
|
|
4
|
+
*/
|
|
2
5
|
sap.ui.define([
|
|
3
6
|
"sap/base/util/ObjectPath",
|
|
4
|
-
"sap/ushell/bootstrap/Config",
|
|
5
|
-
"sap/ushell/Container",
|
|
6
7
|
"sap/ushell/components/pages/controller/PagesAndSpaceId",
|
|
8
|
+
"sap/ushell/Config",
|
|
9
|
+
"sap/ushell/Container",
|
|
7
10
|
"sap/ushell/resources"
|
|
8
11
|
], (
|
|
9
12
|
ObjectPath,
|
|
10
|
-
BootstrapConfig,
|
|
11
|
-
Container,
|
|
12
13
|
PagesAndSpaceId,
|
|
14
|
+
Config,
|
|
15
|
+
Container,
|
|
13
16
|
ushellResources
|
|
14
17
|
) => {
|
|
15
18
|
"use strict";
|
|
16
19
|
|
|
20
|
+
/**
|
|
21
|
+
* @alias sap.ushell_abap.bootstrap.LoadLaunchpad.RequestPages
|
|
22
|
+
* @namespace
|
|
23
|
+
* @description This module is responsible for requesting the launchpad page content.
|
|
24
|
+
* It fetches the page data of the current page and the personalization.
|
|
25
|
+
*
|
|
26
|
+
* Shall NOT be called before the bootstrap is done and the core is ready, as it relies on the ushell services.
|
|
27
|
+
*
|
|
28
|
+
* @since 1.147.0
|
|
29
|
+
* @private
|
|
30
|
+
*/
|
|
17
31
|
class RequestPages {
|
|
18
32
|
#aInternTargets = [
|
|
19
33
|
"Shell-home",
|
|
20
34
|
"Launchpad-openFLPPage"
|
|
21
35
|
];
|
|
22
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Checks whether conditions apply for this module.
|
|
39
|
+
* @returns {boolean} True if this module is relevant and should be executed, false otherwise.
|
|
40
|
+
*
|
|
41
|
+
* @since 1.147.0
|
|
42
|
+
* @private
|
|
43
|
+
*/
|
|
23
44
|
#isRelevant () {
|
|
24
|
-
const oUshellConfig =
|
|
45
|
+
const oUshellConfig = Config.getRawBootstrapConfig();
|
|
25
46
|
if (!ObjectPath.get("ushell.spaces.enabled", oUshellConfig)) {
|
|
26
47
|
return false;
|
|
27
48
|
}
|
|
@@ -32,6 +53,14 @@ sap.ui.define([
|
|
|
32
53
|
return !sHash || this.#aInternTargets.some((sTarget) => sHash.startsWith(sTarget));
|
|
33
54
|
}
|
|
34
55
|
|
|
56
|
+
/**
|
|
57
|
+
* Executes the module.
|
|
58
|
+
* It fetches the page data of the current page and the personalization.
|
|
59
|
+
* @returns {Promise<undefined>} A promise that resolves when the requests are done
|
|
60
|
+
*
|
|
61
|
+
* @since 1.147.0
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
35
64
|
async run () {
|
|
36
65
|
if (!this.#isRelevant()) {
|
|
37
66
|
return;
|
|
@@ -43,6 +72,13 @@ sap.ui.define([
|
|
|
43
72
|
]);
|
|
44
73
|
}
|
|
45
74
|
|
|
75
|
+
/**
|
|
76
|
+
* Requests the personalization data for the pages.
|
|
77
|
+
* @returns {Promise<undefined>} A promise that resolves when the personalization data is fetched
|
|
78
|
+
*
|
|
79
|
+
* @since 1.147.0
|
|
80
|
+
* @private
|
|
81
|
+
*/
|
|
46
82
|
async #requestPagesPersonalization () {
|
|
47
83
|
const PersonalizationV2 = await Container.getServiceAsync("PersonalizationV2");
|
|
48
84
|
const oPersId = {
|
|
@@ -60,6 +96,13 @@ sap.ui.define([
|
|
|
60
96
|
return oPersonalizer.getPersData();
|
|
61
97
|
}
|
|
62
98
|
|
|
99
|
+
/**
|
|
100
|
+
* Requests the page content for the current page.
|
|
101
|
+
* @returns {Promise<undefined>} A promise that resolves when the page content is fetched
|
|
102
|
+
*
|
|
103
|
+
* @since 1.147.0
|
|
104
|
+
* @private
|
|
105
|
+
*/
|
|
63
106
|
async #requestPagesContent () {
|
|
64
107
|
await ushellResources.awaitResourceBundle();
|
|
65
108
|
|
|
@@ -77,6 +120,14 @@ sap.ui.define([
|
|
|
77
120
|
await PagePersistence.getPage(oIds.pageId);
|
|
78
121
|
}
|
|
79
122
|
|
|
123
|
+
/**
|
|
124
|
+
* Returns the window.location.hash string.
|
|
125
|
+
* Extracted as a method to allow stubbing in tests.
|
|
126
|
+
* @returns {string} The hash portion of the URL
|
|
127
|
+
*
|
|
128
|
+
* @since 1.147.0
|
|
129
|
+
* @private
|
|
130
|
+
*/
|
|
80
131
|
getLocationHash () {
|
|
81
132
|
return window.location.hash;
|
|
82
133
|
}
|
|
@@ -1,33 +1,52 @@
|
|
|
1
1
|
// Copyright (c) 2009-2026 SAP SE, All Rights Reserved
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview This modules is run during the oninit phase of the bootstrap.
|
|
4
|
+
*/
|
|
3
5
|
sap.ui.define([
|
|
4
6
|
"sap/base/Log",
|
|
5
|
-
"sap/ushell_abap/bootstrap/
|
|
6
|
-
"sap/ushell_abap/bootstrap/ThemeHandler",
|
|
7
|
-
"sap/ushell_abap/bootstrap/SAPCompanionConditionSetter",
|
|
7
|
+
"sap/ushell_abap/bootstrap/DirectAppStart",
|
|
8
8
|
"sap/ushell_abap/bootstrap/LoadLaunchpad/CreateRenderer",
|
|
9
9
|
"sap/ushell_abap/bootstrap/LoadLaunchpad/InitXhrLogon",
|
|
10
10
|
"sap/ushell_abap/bootstrap/LoadLaunchpad/RequestPages",
|
|
11
|
-
"sap/ushell_abap/bootstrap/
|
|
11
|
+
"sap/ushell_abap/bootstrap/PlatformConfig",
|
|
12
|
+
"sap/ushell_abap/bootstrap/SAPCompanionConditionSetter",
|
|
13
|
+
"sap/ushell_abap/bootstrap/ThemeHandler",
|
|
14
|
+
"sap/ushell_abap/pbServices/ui2/Contracts",
|
|
12
15
|
"sap/ushell/Container",
|
|
13
16
|
"sap/ushell/iconfonts",
|
|
14
|
-
"sap/ushell_abap/
|
|
17
|
+
"sap/ushell_abap/integration/WebSsoBridge"
|
|
15
18
|
], (
|
|
16
19
|
Log,
|
|
17
|
-
|
|
18
|
-
ThemeHandler,
|
|
19
|
-
SAPCompanionConditionSetter,
|
|
20
|
+
DirectAppStart,
|
|
20
21
|
CreateRenderer,
|
|
21
22
|
InitXhrLogon,
|
|
22
23
|
RequestPages,
|
|
23
|
-
|
|
24
|
+
PlatformConfig,
|
|
25
|
+
SAPCompanionConditionSetter,
|
|
26
|
+
ThemeHandler,
|
|
27
|
+
Contracts,
|
|
24
28
|
Container,
|
|
25
29
|
IconFonts,
|
|
26
|
-
|
|
30
|
+
WebSsoBridge
|
|
27
31
|
) => {
|
|
28
32
|
"use strict";
|
|
29
33
|
|
|
34
|
+
/**
|
|
35
|
+
* @alias sap.ushell_abap.bootstrap.LoadLaunchpad
|
|
36
|
+
* @namespace
|
|
37
|
+
* @description This module loads the necessary parts of the launchpad after the bootstrap is done.
|
|
38
|
+
*
|
|
39
|
+
* @since 1.147.0
|
|
40
|
+
* @private
|
|
41
|
+
*/
|
|
30
42
|
class LoadLaunchpad {
|
|
43
|
+
/**
|
|
44
|
+
* Loads the necessary parts of the launchpad after the bootstrap is done.
|
|
45
|
+
* @returns {Promise<undefined>} Resolves when the launchpad is loaded
|
|
46
|
+
*
|
|
47
|
+
* @since 1.147.0
|
|
48
|
+
* @private
|
|
49
|
+
*/
|
|
31
50
|
async run () {
|
|
32
51
|
const aParallelPromises = [];
|
|
33
52
|
|
|
@@ -55,6 +74,8 @@ sap.ui.define([
|
|
|
55
74
|
|
|
56
75
|
aParallelPromises.push(InitXhrLogon.run());
|
|
57
76
|
|
|
77
|
+
aParallelPromises.push(WebSsoBridge.init());
|
|
78
|
+
|
|
58
79
|
await Promise.all(aParallelPromises);
|
|
59
80
|
}
|
|
60
81
|
}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
// Copyright (c) 2009-2026 SAP SE, All Rights Reserved
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview This modules is used as reference for the sap-ui-oninit callback in the bootstrap.
|
|
4
|
+
* It ensures testability of the actual LoadLaunchpad module.
|
|
5
|
+
*/
|
|
3
6
|
sap.ui.define([
|
|
4
7
|
"sap/ushell_abap/bootstrap/LoadLaunchpad"
|
|
5
8
|
], (
|