@sapui5/sap.ushell_abap 1.146.0 → 1.147.1

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.
Files changed (61) hide show
  1. package/package.json +4 -4
  2. package/src/main/js/sap/ushell_abap/.library +1 -1
  3. package/src/main/js/sap/ushell_abap/adapters/abap/AdapterContainer.js +4 -5
  4. package/src/main/js/sap/ushell_abap/adapters/abap/AppStateAdapter.js +1 -1
  5. package/src/main/js/sap/ushell_abap/adapters/abap/ClientSideTargetResolutionAdapter.js +10 -8
  6. package/src/main/js/sap/ushell_abap/adapters/abap/CommonDataModelAdapter.js +1 -1
  7. package/src/main/js/sap/ushell_abap/adapters/abap/ConfigurationDefaultsAdapter.js +7 -4
  8. package/src/main/js/sap/ushell_abap/adapters/abap/ContainerAdapter.js +8 -10
  9. package/src/main/js/sap/ushell_abap/adapters/abap/FlpLaunchPageAdapter.js +148 -109
  10. package/src/main/js/sap/ushell_abap/adapters/abap/LaunchPageAdapter.js +1 -1
  11. package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionAdapter.js +1 -1
  12. package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionInternalAdapter.js +1 -1
  13. package/src/main/js/sap/ushell_abap/adapters/abap/PageBuildingAdapter.js +1 -1
  14. package/src/main/js/sap/ushell_abap/adapters/abap/PagePersistenceAdapter.js +1 -1
  15. package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationAdapter.js +1 -1
  16. package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationV2Adapter.js +1 -1
  17. package/src/main/js/sap/ushell_abap/adapters/abap/SearchAdapter.js +1 -1
  18. package/src/main/js/sap/ushell_abap/adapters/abap/SupportTicketAdapter.js +1 -1
  19. package/src/main/js/sap/ushell_abap/adapters/abap/Ui5ComponentLoaderAdapter.js +1 -1
  20. package/src/main/js/sap/ushell_abap/adapters/hana/ContainerAdapter.js +1 -1
  21. package/src/main/js/sap/ushell_abap/bootstrap/BootTask/PrepareDirectAppStart.js +20 -0
  22. package/src/main/js/sap/ushell_abap/bootstrap/BootTask/RequestGroups.js +51 -0
  23. package/src/main/js/sap/ushell_abap/bootstrap/BootTask/RequestTargetMappings.js +29 -0
  24. package/src/main/js/sap/ushell_abap/bootstrap/BootTask.js +47 -0
  25. package/src/main/js/sap/ushell_abap/bootstrap/ConfigurationProvider.js +87 -0
  26. package/src/main/js/sap/ushell_abap/bootstrap/DirectAppStart.js +231 -0
  27. package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad/CreateRenderer.js +43 -0
  28. package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad/InitXhrLogon.js +148 -0
  29. package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad/RequestPages.js +86 -0
  30. package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad.js +63 -0
  31. package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpadModule.js +11 -0
  32. package/src/main/js/sap/ushell_abap/bootstrap/PageSetsRequestHandler.js +247 -0
  33. package/src/main/js/sap/ushell_abap/bootstrap/PlatformConfig.js +385 -0
  34. package/src/main/js/sap/ushell_abap/bootstrap/{evo/SAPCompanionConditionSetter.js → SAPCompanionConditionSetter.js} +6 -4
  35. package/src/main/js/sap/ushell_abap/bootstrap/StartupRequestHandler.js +145 -0
  36. package/src/main/js/sap/ushell_abap/bootstrap/ThemeHandler.js +276 -0
  37. package/src/main/js/sap/ushell_abap/bootstrap/XhrFactory.js +69 -0
  38. package/src/main/js/sap/ushell_abap/bootstrap/{evo/XhrLogonEventHandler.js → XhrLogonEventHandler.js} +13 -7
  39. package/src/main/js/sap/ushell_abap/bootstrap/XhrLogonLibLoader.js +51 -0
  40. package/src/main/js/sap/ushell_abap/bootstrap/abap-def-dev.js +20 -0
  41. package/src/main/js/sap/ushell_abap/bootstrap/{evo/abap-def-loader.js → abap-def-loader.js} +2 -2
  42. package/src/main/js/sap/ushell_abap/bootstrap/abap-def.js +22 -0
  43. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.js +1 -1
  44. package/src/main/js/sap/ushell_abap/components/TCodeNavigation.js +3 -3
  45. package/src/main/js/sap/ushell_abap/library.js +1 -1
  46. package/src/main/js/sap/ushell_abap/pbServices/ui2/Contracts.js +33 -0
  47. package/ui5.yaml +7 -6
  48. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap-def-dev.js +0 -42
  49. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap-def.js +0 -45
  50. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.bootstrap.utils.js +0 -172
  51. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.configure.theme.js +0 -28
  52. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.configure.ushell.js +0 -181
  53. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.load.launchpad.js +0 -72
  54. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.request.pageset.js +0 -219
  55. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.request.startup.js +0 -154
  56. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.theme.handler.js +0 -79
  57. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.xhrlogon.LibLoader.js +0 -21
  58. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.xhrlogon.configure.js +0 -62
  59. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.xhrlogon.handler.js +0 -82
  60. package/src/main/js/sap/ushell_abap/bootstrap/evo/boottask.js +0 -944
  61. /package/src/main/js/sap/ushell_abap/bootstrap/{evo/abap.constants.js → abapConstants.js} +0 -0
package/package.json CHANGED
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "name": "@sapui5/sap.ushell_abap",
3
- "version": "1.146.0",
3
+ "version": "1.147.1",
4
4
  "description": "SAPUI5 Library sap.ushell_abap",
5
+ "author": "SAP SE (https://www.sap.com)",
6
+ "license": "SEE LICENSE IN LICENSE.txt",
5
7
  "homepage": "https://sap.github.io/ui5-tooling/pages/SAPUI5/",
6
8
  "keywords": [
7
9
  "sapui5",
8
10
  "ui5"
9
11
  ],
10
- "author": "SAP SE (https://www.sap.com)",
11
- "license": "SEE LICENSE IN LICENSE.txt",
12
12
  "scripts": {
13
13
  "build": "cross-env-shell ui5 build --exclude-task=generateLibraryPreload --framework-version $npm_package_version",
14
14
  "build-all": "cross-env-shell ui5 build --all --framework-version $npm_package_version",
15
15
  "build-themes": "cross-env-shell ui5 build --exclude-task=* --include-task=buildThemes --framework-version $npm_package_version"
16
16
  },
17
17
  "devDependencies": {
18
- "@ui5/cli": "^4.0.24",
18
+ "@ui5/cli": "^4.0.50",
19
19
  "cross-env": "^7.0.3"
20
20
  }
21
21
  }
@@ -2,7 +2,7 @@
2
2
  <library xmlns="http://www.sap.com/sap.ui.library.xsd">
3
3
  <name>sap.ushell_abap</name>
4
4
  <vendor>SAP SE</vendor>
5
- <version>1.146.0</version>
5
+ <version>1.147.1</version>
6
6
  <copyright>Copyright (c) 2009-2026 SAP SE, All Rights Reserved</copyright>
7
7
  <documentation>SAP library: sap.ushell_abap</documentation>
8
8
 
@@ -6,7 +6,7 @@ sap.ui.define([
6
6
  "sap/ui/thirdparty/jquery",
7
7
  "sap/ui/core/format/DateFormat",
8
8
  "sap/ushell_abap/pbServices/ui2/ODataService",
9
- "sap/ushell/services/_Personalization/constants",
9
+ "sap/ushell/services/PersonalizationV2/constants",
10
10
  "sap/ushell/utils/LaunchpadError"
11
11
  ], (
12
12
  ObjectPath,
@@ -14,7 +14,7 @@ sap.ui.define([
14
14
  jQuery,
15
15
  DateFormat,
16
16
  ODataService,
17
- constants,
17
+ PersonalizationV2Constants,
18
18
  LaunchpadError
19
19
  ) => {
20
20
  "use strict";
@@ -368,9 +368,8 @@ sap.ui.define([
368
368
  if (!oScope) {
369
369
  return "U";
370
370
  }
371
- const oConstants = constants;
372
- if (oScope.keyCategory && oScope.keyCategory === oConstants.keyCategory.FIXED_KEY &&
373
- oScope.writeFrequency && oScope.writeFrequency === oConstants.writeFrequency.LOW &&
371
+ if (oScope.keyCategory && oScope.keyCategory === PersonalizationV2Constants.keyCategory.FIXED_KEY &&
372
+ oScope.writeFrequency && oScope.writeFrequency === PersonalizationV2Constants.writeFrequency.LOW &&
374
373
  oScope.clientStorageAllowed && oScope.clientStorageAllowed === true) {
375
374
  return "P";
376
375
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @fileOverview The Unified Shell's AppStateAdapter for the ABAP platform.
5
- * @version 1.146.0
5
+ * @version 1.147.1
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/base/util/ObjectPath",
@@ -9,12 +9,13 @@
9
9
  * <li>provide the resolveHashFragmentFallback function, a fallback method called by ClientSideTargetResolution service.</li>
10
10
  * </ul>
11
11
  *
12
- * @version 1.146.0
12
+ * @version 1.147.1
13
13
  */
14
14
  sap.ui.define([
15
15
  "sap/base/util/ObjectPath",
16
16
  "sap/base/util/isPlainObject",
17
17
  "sap/base/util/deepExtend",
18
+ "sap/ushell/base/SAPBusinessClientEnablement",
18
19
  "sap/ushell/utils",
19
20
  "sap/ushell/utils/UrlParsing",
20
21
  "sap/base/Log",
@@ -26,6 +27,7 @@ sap.ui.define([
26
27
  ObjectPath,
27
28
  isPlainObject,
28
29
  deepExtend,
30
+ SAPBusinessClientEnablement,
29
31
  ushellUtils,
30
32
  UrlParsing,
31
33
  Log,
@@ -723,6 +725,12 @@ sap.ui.define([
723
725
  oTarget.templateContext = that.getUrlTemplateContext(oSrc);
724
726
  }
725
727
 
728
+ if (oSrc.tcode) {
729
+ oTarget.resolutionResult.appInfo = {
730
+ transaction: oSrc.tcode
731
+ };
732
+ }
733
+
726
734
  return oTarget;
727
735
  }
728
736
 
@@ -742,12 +750,6 @@ sap.ui.define([
742
750
  oABAPAttributes.ladiHasTiles = oSrc.ladiHasTiles || false;
743
751
  oABAPAttributes.defaultTileParams =
744
752
  oSrc.defaultTileParams || "";
745
- if (oSrc.tcode) {
746
- oABAPAttributes.resolutionResult = { appInfo: {} };
747
- oABAPAttributes.resolutionResult.appInfo = {
748
- "abap.transaction": oSrc.tcode || ""
749
- };
750
- }
751
753
  return oABAPAttributes;
752
754
  }
753
755
 
@@ -1179,7 +1181,7 @@ sap.ui.define([
1179
1181
  }
1180
1182
 
1181
1183
  return new Promise((fnResolve, fnReject) => {
1182
- this._oODataWrapper.read(`ResolveLink?linkId='${encodeODataQueryParameter(sFragmentNoHash)}'&shellType='${ushellUtils.getShellType()}'${sFormFactor ?
1184
+ this._oODataWrapper.read(`ResolveLink?linkId='${encodeODataQueryParameter(sFragmentNoHash)}'&shellType='${SAPBusinessClientEnablement.getShellType()}'${sFormFactor ?
1183
1185
  `&formFactor='${encodeODataQueryParameter(sFormFactor)}'` : ""}`,
1184
1186
  (oResult) => {
1185
1187
  let i;
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * @fileOverview The Unified Shell's CommonDataModelAdapter for the ABAP platform, it is used to avoid 404 when no adapter is found
4
4
  *
5
- * @version 1.146.0
5
+ * @version 1.147.1
6
6
  */
7
7
  sap.ui.define([
8
8
  ], () => {
@@ -2,12 +2,15 @@
2
2
 
3
3
  /**
4
4
  * @fileOverview The ConfigurationDefaults adapter for the ABAP platform.
5
- * @version 1.146.0
5
+ * @version 1.147.1
6
6
  */
7
7
  sap.ui.define([
8
- "sap/ushell_abap/bootstrap/evo/abap.constants",
8
+ "sap/ushell_abap/bootstrap/abapConstants",
9
9
  "sap/base/util/deepClone"
10
- ], (oAbapConstants, fnDeepClone) => {
10
+ ], (
11
+ abapConstants,
12
+ deepClone
13
+ ) => {
11
14
  "use strict";
12
15
 
13
16
  /**
@@ -18,7 +21,7 @@ sap.ui.define([
18
21
  * @returns {Promise} Resolved promise contains all default configuration for abap platform
19
22
  */
20
23
  this.getDefaultConfig = function () {
21
- return Promise.resolve(fnDeepClone(oAbapConstants.defaultUshellConfig));
24
+ return Promise.resolve(deepClone(abapConstants.defaultUshellConfig));
22
25
  };
23
26
  };
24
27
  });
@@ -2,14 +2,15 @@
2
2
  /**
3
3
  * @fileOverview The Unified Shell's container adapter for the ABAP platform.
4
4
  *
5
- * @version 1.146.0
5
+ * @version 1.147.1
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/ui/thirdparty/jquery",
9
+ "sap/ushell/base/SAPBusinessClientEnablement",
9
10
  "sap/ushell/System",
10
11
  "sap/ushell/User",
11
12
  "sap/ushell/utils",
12
- "sap/ushell_abap/bootstrap/evo/abap.bootstrap.utils",
13
+ "sap/ushell_abap/bootstrap/XhrFactory",
13
14
  "sap/ushell_abap/pbServices/ui2/ODataWrapper",
14
15
  "sap/ui/thirdparty/URI",
15
16
  "sap/ui/thirdparty/datajs",
@@ -19,10 +20,11 @@ sap.ui.define([
19
20
  "sap/ushell/Container"
20
21
  ], (
21
22
  jQuery,
23
+ SAPBusinessClientEnablement,
22
24
  System,
23
25
  User,
24
26
  utils,
25
- abapUtils,
27
+ XhrFactory,
26
28
  ODataWrapper,
27
29
  URI,
28
30
  datajs,
@@ -430,7 +432,7 @@ sap.ui.define([
430
432
  */
431
433
  this.sessionKeepAlive = function () {
432
434
  const sPageSetsUrl = "/sap/opu/odata/UI2/PAGE_BUILDER_PERS";
433
- const oXHR = abapUtils.createAndOpenXHR(sPageSetsUrl, null, "HEAD");
435
+ const oXHR = XhrFactory.createAndOpen(sPageSetsUrl, null, "HEAD");
434
436
  oXHR.onreadystatechange = function () {
435
437
  if (this.readyState === /* DONE */4) {
436
438
  Log.debug("server session was extended");
@@ -449,12 +451,8 @@ sap.ui.define([
449
451
  */
450
452
  this.logout = async function (bLogonSystem) {
451
453
  if (bLogonSystem) {
452
- if (utils.hasNativeLogoutCapability()) {
453
- const sFullLogOffUrl = (new URI(S_LOGOFF_URL))
454
- .absoluteTo(this.getCurrentUrl())
455
- .search("") // NOTE: remove query parameters
456
- .toString();
457
- window.external.getPrivateEpcm().doLogOff(sFullLogOffUrl);
454
+ if (SAPBusinessClientEnablement.hasNativeLogoutCapability()) {
455
+ SAPBusinessClientEnablement.doLogout(S_LOGOFF_URL);
458
456
  } else {
459
457
  this.logoutRedirect();
460
458
  }
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * @fileoverview The Unified Shell's page building adapter for the ABAP platform. Private copy. Classical home page functions are deprecated.
5
5
  * @since 1.121
6
- * @version 1.146.0
6
+ * @version 1.147.1
7
7
  */
8
8
  sap.ui.define([
9
9
  "sap/ui/thirdparty/URI",
@@ -12,6 +12,7 @@ sap.ui.define([
12
12
  "sap/base/util/ObjectPath",
13
13
  "sap/base/util/isEmptyObject",
14
14
  "sap/m/GenericTile",
15
+ "sap/ushell/base/SAPBusinessClientEnablement",
15
16
  "sap/ushell/Config",
16
17
  "sap/base/util/deepExtend",
17
18
  "sap/ushell/utils/chipsUtils",
@@ -20,7 +21,6 @@ sap.ui.define([
20
21
  "sap/base/Log",
21
22
  "sap/m/library",
22
23
  "sap/ushell/ui/tile/StaticTile",
23
- "sap/ushell/utils",
24
24
  "sap/ushell_abap/pbServices/ui2/contracts/preview",
25
25
  "sap/ushell/Container",
26
26
  "sap/ushell/utils/LaunchpadError"
@@ -31,6 +31,7 @@ sap.ui.define([
31
31
  ObjectPath,
32
32
  isEmptyObject,
33
33
  GenericTile,
34
+ SAPBusinessClientEnablement,
34
35
  Config,
35
36
  deepExtend,
36
37
  chipsUtils,
@@ -39,7 +40,6 @@ sap.ui.define([
39
40
  Log,
40
41
  mobileLibrary,
41
42
  StaticTile,
42
- ushellUtils,
43
43
  Preview,
44
44
  Container,
45
45
  LaunchpadError
@@ -643,7 +643,7 @@ sap.ui.define([
643
643
  }
644
644
  const oTargetMappingsConfig = ObjectPath.create("services.targetMappings", oAdapterConfig);
645
645
  const sCacheId = oTargetMappingsConfig.cacheId || "";
646
- let sUrl = `/sap/bc/ui2/start_up?so=%2A&action=%2A&tm-compact=true&shellType=${ushellUtils.getShellType()}&depth=0`;
646
+ let sUrl = `/sap/bc/ui2/start_up?so=%2A&action=%2A&tm-compact=true&shellType=${SAPBusinessClientEnablement.getShellType()}&depth=0`;
647
647
 
648
648
  if (sCacheId) {
649
649
  sUrl += `${sUrl.indexOf("?") < 0 ? "?" : "&"}sap-cache-id=${sCacheId}`;
@@ -727,12 +727,13 @@ sap.ui.define([
727
727
  /**
728
728
  * Wraps the current <code>allCatalogs</code> collection into black box objects.
729
729
  *
730
- * @returns {object[]} A list of catalog objects.
731
730
  * @param {sap.ushell_abap.pbServices.ui2.Factory} oFactory The factory to create new chip instances.
731
+ * @param {sap.ushell_abap.pbServices.ui2.PageSet} oPageSet The page set containing the default page with allCatalogs.
732
+ * @returns {object[]} A list of catalog objects.
732
733
  * TODO cache result?!
733
734
  */
734
- function wrapCatalogs (oFactory) {
735
- const oAllCatalogs = that._oCurrentPageSet.getDefaultPage().getAllCatalogs();
735
+ function wrapCatalogs (oFactory, oPageSet) {
736
+ const oAllCatalogs = oPageSet.getDefaultPage().getAllCatalogs();
736
737
  const aCatalogs = oAllCatalogs.getCatalogs();
737
738
  const aWrappedCatalogs = [];
738
739
 
@@ -1231,6 +1232,96 @@ sap.ui.define([
1231
1232
  }
1232
1233
  };
1233
1234
 
1235
+ /**
1236
+ * Lazily initializes <code>_oCurrentPageSet</code> and returns a jQuery promise resolving with it.
1237
+ * Parallel calls are deduplicated. Subsequent calls return the already-resolved promise.
1238
+ *
1239
+ * @returns {jQuery.Promise<sap.ushell_abap.pbServices.ui2.PageSet>} Resolves with the current page set object.
1240
+ * @private
1241
+ */
1242
+ this._getPageSet = function () {
1243
+ if (this._oGetPageSetDeferred) {
1244
+ return this._oGetPageSetDeferred.promise();
1245
+ }
1246
+
1247
+ this._oGetPageSetDeferred = new jQuery.Deferred();
1248
+
1249
+ Container.getServiceAsync("PageBuilding")
1250
+ .then((PageBuildingService) => {
1251
+ const fnReadPageSet = PageBuildingService.getFactory().getPageBuildingService().readPageSet;
1252
+
1253
+ if (oLaunchPageServiceConfig && oLaunchPageServiceConfig.cacheId) {
1254
+ // add PageSet cache buster token if configured
1255
+ fnReadPageSet.cacheBusterTokens
1256
+ .put(sDEFAULT_PAGE_ID, oLaunchPageServiceConfig.cacheId);
1257
+ }
1258
+ if (oLaunchPageServiceConfig && oLaunchPageServiceConfig["sap-ui2-cache-disable"] && fnReadPageSet) {
1259
+ const oAppendedParameters = fnReadPageSet.appendedParameters || {};
1260
+ oAppendedParameters["sap-ui2-cache-disable"] = oLaunchPageServiceConfig["sap-ui2-cache-disable"];
1261
+ fnReadPageSet.appendedParameters = oAppendedParameters;
1262
+ }
1263
+
1264
+ /*
1265
+ * In spaces mode we will create an empty page inside an empty pageSet.
1266
+ * This is needed because the appfinder and search integration request the classic homepage content
1267
+ * which is not available in spaces mode.
1268
+ * For consistency reasons it should then also not be available from the search results.
1269
+ * The empty pageSet has all needed functions the real pageSet has.
1270
+ * Functions which should not be used in spaces mode throw an error
1271
+ */
1272
+ if (Config.last("/core/spaces/enabled")) {
1273
+ const oFactory = PageBuildingService.getFactory();
1274
+
1275
+ const oFakeDefaultPage = new Page(oFactory, {
1276
+ id: PAGE_ID_WITHOUT_TM
1277
+ });
1278
+
1279
+ this._oCurrentPageSet = {
1280
+ getDefaultPage: function () {
1281
+ return oFakeDefaultPage;
1282
+ },
1283
+ getPages: function () {
1284
+ return [oFakeDefaultPage];
1285
+ },
1286
+ appendPage: function () {
1287
+ throw new Error("Not implemented in Pages Runtime");
1288
+ },
1289
+ isPageRemovable: function () {
1290
+ return false;
1291
+ },
1292
+ removePage: function () {
1293
+ throw new Error("Not implemented in Pages Runtime");
1294
+ },
1295
+ isPageResettable: function () {
1296
+ return true;
1297
+ },
1298
+ resetPage: function () {
1299
+ },
1300
+ getConfiguration: function () {
1301
+ return "{}";
1302
+ },
1303
+ setConfiguration: function () {
1304
+ },
1305
+ filter: function () {
1306
+ }
1307
+ };
1308
+
1309
+ this._oGetPageSetDeferred.resolve(this._oCurrentPageSet);
1310
+ } else {
1311
+ PageBuildingService.getPageSet(sDEFAULT_PAGE_ID)
1312
+ .fail(this._oGetPageSetDeferred.reject.bind(this._oGetPageSetDeferred))
1313
+ .done((oPageSet) => {
1314
+ this._oCurrentPageSet = oPageSet;
1315
+ // remove unsupported pages before loading their chip instances
1316
+ this._oCurrentPageSet.filter([sDEFAULT_PAGE_ID], [sDEFAULT_CATALOG_ID]);
1317
+ this._oGetPageSetDeferred.resolve(oPageSet);
1318
+ });
1319
+ }
1320
+ });
1321
+
1322
+ return this._oGetPageSetDeferred.promise();
1323
+ };
1324
+
1234
1325
  /**
1235
1326
  * Returns the groups of the user.
1236
1327
  * These page objects can be passed in to all functions expecting a group.
@@ -1249,86 +1340,25 @@ sap.ui.define([
1249
1340
  if (!oGetGroupsDeferred) {
1250
1341
  // start a new request and remember it in oGetGroupsDeferred, so that parallel calls don't start another one
1251
1342
  oGetGroupsDeferred = new jQuery.Deferred();
1252
- const oDeferred = new jQuery.Deferred();
1253
1343
 
1254
- Container.getServiceAsync("PageBuilding")
1255
- .then((PageBuildingService) => {
1256
- const fnReadPageSet = PageBuildingService.getFactory().getPageBuildingService().readPageSet;
1344
+ // The target mappings are used in the classic homepage and in spaces mode.
1345
+ const oMappingPromise = this._loadTargetMappings();
1257
1346
 
1258
- if (oLaunchPageServiceConfig && oLaunchPageServiceConfig.cacheId) {
1259
- // add PageSet cache buster token if configured
1260
- fnReadPageSet.cacheBusterTokens
1261
- .put(sDEFAULT_PAGE_ID, oLaunchPageServiceConfig.cacheId);
1262
- }
1263
- if (oLaunchPageServiceConfig && oLaunchPageServiceConfig["sap-ui2-cache-disable"] && fnReadPageSet) {
1264
- const oAppendedParameters = fnReadPageSet.appendedParameters || {};
1265
- oAppendedParameters["sap-ui2-cache-disable"] = oLaunchPageServiceConfig["sap-ui2-cache-disable"];
1266
- fnReadPageSet.appendedParameters = oAppendedParameters;
1267
- }
1268
-
1269
- // The target mappings are used in the classic homepage and in spaces mode.
1270
- const oMappingPromise = this._loadTargetMappings();
1271
-
1272
- /*
1273
- * In spaces mode we will create an empty page inside an empty pageSet.
1274
- * This is needed because the appfinder and search integration request the classic homepage content which is not available in spaces mode.
1275
- * For consistency reasons it should then also not be available from the search results.
1276
- * The empty pageSet has all needed functions the real pageSet has.
1277
- * Functions which should not be used in spaces mode throw an error
1278
- */
1347
+ this._getPageSet()
1348
+ .done((oPageSet) => {
1279
1349
  if (Config.last("/core/spaces/enabled")) {
1280
- const oFactory = PageBuildingService.getFactory();
1281
-
1282
- const oFakeDefaultPage = new Page(oFactory, {
1283
- id: PAGE_ID_WITHOUT_TM
1284
- });
1285
-
1286
- that._oCurrentPageSet = {
1287
- getDefaultPage: function () {
1288
- return oFakeDefaultPage;
1289
- },
1290
- getPages: function () {
1291
- return [oFakeDefaultPage];
1292
- },
1293
- appendPage: function () {
1294
- throw new Error("Not implemented in Pages Runtime");
1295
- },
1296
- isPageRemovable: function () {
1297
- return false;
1298
- },
1299
- removePage: function () {
1300
- throw new Error("Not implemented in Pages Runtime");
1301
- },
1302
- isPageResettable: function () {
1303
- return true;
1304
- },
1305
- resetPage: function () {
1306
- },
1307
- getConfiguration: function () {
1308
- return "{}";
1309
- },
1310
- setConfiguration: function () {
1311
- },
1312
- filter: function () {
1313
- }
1314
- };
1315
-
1316
1350
  oGetGroupsDeferred.resolve([]);
1317
1351
  } else {
1318
- const oPageSetsPromise = PageBuildingService.getPageSet(sDEFAULT_PAGE_ID);
1319
-
1320
- oPageSetsPromise
1321
- .fail(oDeferred.reject.bind(oDeferred))
1322
- .done((oPageSet) => {
1323
- this._oCurrentPageSet = oPageSet;
1324
- // remove unsupported pages before loading their chip instances
1325
- this._oCurrentPageSet.filter([sDEFAULT_PAGE_ID], [sDEFAULT_CATALOG_ID]);
1326
- // Trigger load of all CHIP instances, but wait for the locals only
1327
- this._loadApplaunchersAndDelayLoadingOfOtherChips(oPageSet.getPages(), oDeferred.resolve.bind(oDeferred, oPageSet));
1328
- });
1352
+ const oChipsLoadedDeferred = new jQuery.Deferred();
1329
1353
 
1330
- jQuery.when(oMappingPromise, oDeferred)
1331
- .done((oTargetMappings, oPageSet) => {
1354
+ // Trigger load of all CHIP instances, but wait for the locals only
1355
+ this._loadApplaunchersAndDelayLoadingOfOtherChips(
1356
+ oPageSet.getPages(),
1357
+ oChipsLoadedDeferred.resolve.bind(oChipsLoadedDeferred)
1358
+ );
1359
+
1360
+ jQuery.when(oMappingPromise, oChipsLoadedDeferred)
1361
+ .done(() => {
1332
1362
  this._bPageSetFullyLoaded = true;
1333
1363
 
1334
1364
  if (Log.getLevel() >= Log.Level.DEBUG) { // sap-ui-debug = true
@@ -1339,7 +1369,8 @@ sap.ui.define([
1339
1369
  })
1340
1370
  .fail(oGetGroupsDeferred.reject.bind(oGetGroupsDeferred));
1341
1371
  }
1342
- });
1372
+ })
1373
+ .fail(oGetGroupsDeferred.reject.bind(oGetGroupsDeferred));
1343
1374
  }
1344
1375
 
1345
1376
  return oGetGroupsDeferred.promise();
@@ -2253,7 +2284,7 @@ sap.ui.define([
2253
2284
 
2254
2285
  if (oTile.isStub() && oTile.$loadingPromise) {
2255
2286
  // the tile is currently loaded
2256
- const sTileId = this.getTileId(oTile);
2287
+ const sTileId = oTile.getId();
2257
2288
  const bOldVisibility = mEarlyTileVisibilities[sTileId];
2258
2289
  // update cached visibility also if handler was already attached
2259
2290
  mEarlyTileVisibilities[sTileId] = bNewVisible;
@@ -2405,15 +2436,16 @@ sap.ui.define([
2405
2436
  * Resolves the promise to return the user's catalogs by refreshing the first remote catalog found, failing gracefully.
2406
2437
  *
2407
2438
  * @param {jQuery.Deferred} oDeferred A jQuery.Deferred to be resolved, rejected or notified.
2439
+ * @param {sap.ushell_abap.pbServices.ui2.PageSet} oPageSet The page set containing the default page with allCatalogs.
2408
2440
  * @returns {Promise<sap.ushell.services.PageBuilding>} A promise that is resolved once the PageBuilding service is retrieved.
2409
2441
  * @private
2410
2442
  */
2411
- this._refreshRemoteCatalogs = function (oDeferred) {
2443
+ this._refreshRemoteCatalogs = function (oDeferred, oPageSet) {
2412
2444
  return Container.getServiceAsync("PageBuilding")
2413
2445
  .then((PageBuildingService) => {
2414
2446
  let iPendingRequests = 0;
2415
2447
  const oFactory = PageBuildingService.getFactory();
2416
- const aWrappedCatalogs = wrapCatalogs(oFactory);
2448
+ const aWrappedCatalogs = wrapCatalogs(oFactory, oPageSet);
2417
2449
 
2418
2450
  aWrappedCatalogs.forEach((oWrappedCatalog) => {
2419
2451
  const oCatalog = oWrappedCatalog.ui2catalog;
@@ -2460,13 +2492,14 @@ sap.ui.define([
2460
2492
  * Resolves the promise to return the user's catalogs...by just knowing them already.
2461
2493
  *
2462
2494
  * @param {jQuery.Deferred} oDeferred A jQuery.Deferred to be resolved, rejected or notified.
2495
+ * @param {sap.ushell_abap.pbServices.ui2.PageSet} oPageSet The page set containing the default page with allCatalogs.
2463
2496
  * @returns {Promise<sap.ushell.services.PageBuilding>} A promise that is resolved once the PageBuilding service is retrieved.
2464
2497
  * @private
2465
2498
  */
2466
- this._useKnownCatalogs = function (oDeferred) {
2499
+ this._useKnownCatalogs = function (oDeferred, oPageSet) {
2467
2500
  return Container.getServiceAsync("PageBuilding")
2468
2501
  .then((PageBuildingService) => {
2469
- const aWrappedCatalogs = wrapCatalogs(PageBuildingService.getFactory());
2502
+ const aWrappedCatalogs = wrapCatalogs(PageBuildingService.getFactory(), oPageSet);
2470
2503
 
2471
2504
  aWrappedCatalogs.forEach((oWrappedCatalog) => {
2472
2505
  oDeferred.notify(oWrappedCatalog);
@@ -2484,18 +2517,24 @@ sap.ui.define([
2484
2517
  * @private
2485
2518
  */
2486
2519
  this._doGetCatalogs = function (oDeferred, bRefreshRequired) {
2487
- const oAllCatalogs = this._oCurrentPageSet.getDefaultPage().getAllCatalogs();
2488
- if (oAllCatalogs.isStub()) {
2489
- oAllCatalogs.load(() => {
2490
- this._refreshRemoteCatalogs(oDeferred);
2491
- }, (sErrorMessage) => {
2492
- oDeferred.reject(new Error(sErrorMessage));
2493
- }, "type eq 'CATALOG_PAGE' or type eq 'H' or type eq 'SM_CATALOG' or type eq 'REMOTE'", true, "title", true);
2494
- } else if (bRefreshRequired) {
2495
- this._refreshRemoteCatalogs(oDeferred);
2496
- } else {
2497
- this._useKnownCatalogs(oDeferred);
2498
- }
2520
+ this._getPageSet()
2521
+ .done((oPageSet) => {
2522
+ const oAllCatalogs = oPageSet.getDefaultPage().getAllCatalogs();
2523
+ if (oAllCatalogs.isStub()) {
2524
+ oAllCatalogs.load(() => {
2525
+ this._refreshRemoteCatalogs(oDeferred, oPageSet);
2526
+ }, (sErrorMessage) => {
2527
+ oDeferred.reject(new Error(sErrorMessage));
2528
+ }, "type eq 'CATALOG_PAGE' or type eq 'H' or type eq 'SM_CATALOG' or type eq 'REMOTE'", true, "title", true);
2529
+ } else if (bRefreshRequired) {
2530
+ this._refreshRemoteCatalogs(oDeferred, oPageSet);
2531
+ } else {
2532
+ this._useKnownCatalogs(oDeferred, oPageSet);
2533
+ }
2534
+ })
2535
+ .fail((oError) => {
2536
+ oDeferred.reject(oError);
2537
+ });
2499
2538
  };
2500
2539
 
2501
2540
  /**
@@ -2529,15 +2568,19 @@ sap.ui.define([
2529
2568
 
2530
2569
  oPromise
2531
2570
  .then(() => {
2532
- if (that._bPageSetFullyLoaded) {
2533
- this._doGetCatalogs(oDeferred, bRefreshRequired);
2534
- } else {
2571
+ /**
2572
+ * @deprecated since 1.120
2573
+ */
2574
+ if (!that._bPageSetFullyLoaded) {
2535
2575
  this.getGroups()
2536
2576
  .done(() => {
2537
2577
  this._doGetCatalogs(oDeferred, bRefreshRequired);
2538
2578
  })
2539
2579
  .fail(oDeferred.reject);
2580
+ return;
2540
2581
  }
2582
+
2583
+ this._doGetCatalogs(oDeferred, bRefreshRequired);
2541
2584
  })
2542
2585
  .catch(oDeferred.reject);
2543
2586
  };
@@ -2832,19 +2875,15 @@ sap.ui.define([
2832
2875
  /**
2833
2876
  * Returns a Tile for preview purposes
2834
2877
  * @param {string} sTitle The title
2835
- * @returns {sap.ushell.ui.tile.StaticTile} a Preview Tile
2878
+ * @returns {sap.m.GenericTile} a Preview Tile
2836
2879
  *
2837
2880
  * @private
2838
2881
  * @since 1.97.0
2839
2882
  */
2840
2883
  this._createPreviewTile = function (sTitle) {
2841
2884
  // TODO remove as soon as RT has an own // TODO: pending dependency migration
2842
- return new StaticTile({
2843
- title: sTitle,
2844
- subtitle: "",
2845
- info: "",
2846
- infoState: "Neutral",
2847
- icon: "sap-icon://folder-full"
2885
+ return new GenericTile({
2886
+ header: sTitle
2848
2887
  });
2849
2888
  };
2850
2889
 
@@ -4,7 +4,7 @@
4
4
  * @fileOverview The Unified Shell's page building adapter for the ABAP platform.
5
5
  *
6
6
  * @deprecated since 1.100
7
- * @version 1.146.0
7
+ * @version 1.147.1
8
8
  */
9
9
  sap.ui.define([
10
10
  "sap/ushell_abap/adapters/abap/FlpLaunchPageAdapter"
@@ -8,7 +8,7 @@
8
8
  * service now calls the ClientSideTargetResolution service in the ABAP
9
9
  * platform.
10
10
  *
11
- * @version 1.146.0
11
+ * @version 1.147.1
12
12
  */
13
13
  sap.ui.define([], () => {
14
14
  "use strict";
@@ -8,7 +8,7 @@
8
8
  * service now calls the ClientSideTargetResolution service in the ABAP
9
9
  * platform.
10
10
  *
11
- * @version 1.146.0
11
+ * @version 1.147.1
12
12
  * @since 1.121
13
13
  */
14
14
  sap.ui.define([], () => {