Skip to content

Commit eda01f0

Browse files
committed
Reuse script setup from PP to avoid loading issues
1 parent 84df545 commit eda01f0

File tree

1 file changed

+52
-10
lines changed

1 file changed

+52
-10
lines changed

src/js/index.tsx

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,64 @@
11
import { Logger, LogLevel, ConsoleListener } from "@pnp/logging";
22
import { sp } from "@pnp/sp";
33
import * as WebParts from "./@WebParts";
4-
4+
import { GetSettings } from "prosjektportalen/lib/Settings";
55
/** If the script was loaded using SP.SOD, we'll set the SOD to loaded */
66
if (window["_v_dictSod"]) {
77
window["_v_dictSod"]["pp.program.js"].loaded = true;
88
}
99

10-
/** Set up pnp logging */
10+
namespace PP.Program {
11+
/**
12+
* Sets up PnP logging
13+
*
14+
* @param {string} logLevelStr Log level string
15+
*/
16+
async function initLogging(logLevelStr: string) {
17+
let logLevel = LogLevel.Off;
18+
switch (logLevelStr.toLowerCase()) {
19+
case "info": {
20+
logLevel = LogLevel.Info;
21+
}
22+
break;
23+
case "warning": {
24+
logLevel = LogLevel.Warning;
25+
}
26+
break;
27+
case "error": {
28+
logLevel = LogLevel.Error;
29+
}
30+
break;
31+
}
32+
Logger.activeLogLevel = logLevel;
33+
Logger.subscribe(new ConsoleListener());
34+
}
1135

12-
Logger.activeLogLevel = LogLevel.Info;
13-
Logger.subscribe(new ConsoleListener());
36+
/**
37+
* Sets up PnP settings
38+
*
39+
* @param {string} defaultCachingTimeoutSecondsStr Default caching timeout (seconds)
40+
*/
41+
function initPnp(defaultCachingTimeoutSecondsStr: string) {
42+
let defaultCachingTimeoutSeconds = 30;
43+
if (defaultCachingTimeoutSecondsStr) {
44+
defaultCachingTimeoutSeconds = parseInt(defaultCachingTimeoutSecondsStr, 10);
45+
}
46+
sp.setup({
47+
sp: { headers: { Accept: "application/json; odata=verbose" } },
48+
defaultCachingStore: "session",
49+
defaultCachingTimeoutSeconds,
50+
});
51+
}
1452

15-
/** PnP setup */
53+
export async function initialize() {
54+
const settings = await GetSettings();
55+
initLogging(settings.LOG_LEVEL);
56+
initPnp(settings.DEFAULT_CACHING_TIMEOUT_SECONDS);
1657

17-
sp.setup({
18-
sp: { headers: { Accept: "application/json; odata=verbose" } },
19-
defaultCachingStore: "session",
20-
});
58+
SP.SOD.executeOrDelayUntilScriptLoaded(() => {
59+
WebParts.Render();
60+
}, "sp.js");
61+
}
62+
}
2163

22-
ExecuteOrDelayUntilBodyLoaded(WebParts.Render);
64+
ExecuteOrDelayUntilBodyLoaded(PP.Program.initialize);

0 commit comments

Comments
 (0)