Skip to content

Commit b372e58

Browse files
authored
Merge pull request #550 from nextcloud-libraries/artonge/debt/access_originl_prop
Use the original property for debug and loglevel
2 parents c8a245e + e89eb01 commit b372e58

File tree

3 files changed

+32
-31
lines changed

3 files changed

+32
-31
lines changed

lib/LoggerBuilder.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
/// <reference types="@nextcloud/typings" />
2-
31
import { getCurrentUser } from '@nextcloud/auth'
42
import { IContext, ILogger, ILoggerFactory, LogLevel } from './contracts'
53

64
declare global {
75
interface Window {
8-
OC: Nextcloud.v23.OC | Nextcloud.v24.OC | Nextcloud.v25.OC;
6+
_oc_config: {
7+
loglevel: LogLevel,
8+
},
9+
_oc_debug: boolean,
910
}
1011
}
1112

@@ -76,11 +77,11 @@ export class LoggerBuilder {
7677

7778
// Use arrow function to prevent undefined `this` within event handler
7879
const onLoaded = () => {
79-
if (document.readyState === 'complete' || (document.readyState === 'interactive' && window.OC !== undefined)) {
80+
if (document.readyState === 'complete' || (document.readyState === 'interactive')) {
8081
// Up to, including, nextcloud 24 the loglevel was not exposed
81-
self.context.level = window.OC?.config?.loglevel !== undefined ? window.OC.config.loglevel : LogLevel.Warn
82+
self.context.level = window._oc_config?.loglevel ?? LogLevel.Warn
8283
// Override loglevel if we are in debug mode
83-
if (window.OC?.debug) {
84+
if (window._oc_debug) {
8485
self.context.level = LogLevel.Debug
8586
}
8687
document.removeEventListener('readystatechange', onLoaded)

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@nextcloud/logger",
3-
"version": "2.5.0",
3+
"version": "2.6.0",
44
"description": "",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",
@@ -55,4 +55,4 @@
5555
"dist/",
5656
"CHANGELOG.md"
5757
]
58-
}
58+
}

tests/LoggerBuilder.spec.ts

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,21 @@ describe('detect logging level', () => {
1111
if (state === 'complete') global.window.dispatchEvent(new Event('load'))
1212
global.window.document.dispatchEvent(new Event('readystatechange'))
1313
}
14-
14+
1515
beforeAll(() => {
1616
state = global.window.document.readyState
17-
17+
1818
Object.defineProperty(global.window.document, "readyState", {
1919
get() { return state }
2020
})
2121
})
2222

23-
describe('without `OC.config.loglevel` (<=NC24)', () => {
23+
describe('without `_oc_config.loglevel` (<=NC24)', () => {
2424
afterEach(() => {
2525
// @ts-expect-error
26-
delete window.OC
26+
delete window._oc_config
2727
})
28-
it ('without `OC.debug`', async () => {
28+
it ('without `_oc_debug`', async () => {
2929
setReadyState('loading')
3030
const builder = getLoggerBuilder()
3131
builder.detectLogLevel()
@@ -40,11 +40,11 @@ describe('detect logging level', () => {
4040
// Level should now be set
4141
expect('level' in builder.getContext()).toBe(true)
4242

43-
// Should default to warn as NC24 has no `OC.config.loglevel`
43+
// Should default to warn as NC24 has no `_oc_config.loglevel`
4444
expect(builder.getContext().level).toBe(LogLevel.Warn)
4545
})
4646

47-
it ('with `OC.debug`', async () => {
47+
it ('with `_oc_debug`', async () => {
4848
setReadyState('loading')
4949
const builder = getLoggerBuilder()
5050
builder.detectLogLevel()
@@ -54,32 +54,32 @@ describe('detect logging level', () => {
5454

5555
// Mock OC and trigger document loaded
5656
// @ts-ignore
57-
window.OC = { debug: true }
57+
window._oc_debug = true
5858
setReadyState('complete')
5959
await new Promise(process.nextTick);
6060

6161
// Level should now be set
6262
expect('level' in builder.getContext()).toBe(true)
6363

64-
// Should default to warn as NC24 has no `OC.config.loglevel`
64+
// Should default to warn as NC24 has no `_oc_config.loglevel`
6565
expect(builder.getContext().level).toBe(LogLevel.Debug)
6666
})
6767
})
6868

6969
/* Since NC25 configuring the loglevel is possible */
70-
describe('with `OC.config.loglevel`', () => {
70+
describe('with `_oc_config.loglevel`', () => {
7171
beforeAll(() => {
7272
// @ts-ignore
73-
window.OC = {
74-
config: {
75-
loglevel: LogLevel.Info,
76-
},
77-
debug: false,
73+
window._oc_config = {
74+
loglevel: LogLevel.Info,
7875
}
76+
window._oc_debug = false
7977
})
8078
afterAll(() => {
8179
// @ts-expect-error
82-
delete window.OC
80+
delete window._oc_config
81+
// @ts-expect-error
82+
delete window._oc_debug
8383
})
8484

8585
it ('already loaded', async () => {
@@ -88,7 +88,7 @@ describe('detect logging level', () => {
8888
builder.detectLogLevel()
8989

9090
expect('level' in builder.getContext()).toBe(true)
91-
expect(builder.getContext().level).toBe(window.OC.config.loglevel)
91+
expect(builder.getContext().level).toBe(window._oc_config.loglevel)
9292
})
9393

9494
it ('stil loading', async () => {
@@ -108,11 +108,11 @@ describe('detect logging level', () => {
108108
// Level should now be set to configured one, also in logger
109109
expect('level' in builder.getContext()).toBe(true)
110110
expect('level' in logger.context).toBe(true)
111-
expect(builder.getContext().level).toBe(window.OC.config.loglevel)
112-
expect(logger.context.level).toBe(window.OC.config.loglevel)
111+
expect(builder.getContext().level).toBe(window._oc_config.loglevel)
112+
expect(logger.context.level).toBe(window._oc_config.loglevel)
113113
})
114114

115-
it ('with `OC.debug` override', async () => {
115+
it ('with `_oc_debug` override', async () => {
116116
setReadyState('loading');
117117
const builder = getLoggerBuilder()
118118
builder.detectLogLevel()
@@ -121,7 +121,7 @@ describe('detect logging level', () => {
121121
expect('level' in builder.getContext()).toBe(false)
122122

123123
// Trigger document loaded
124-
window.OC.debug = true
124+
window._oc_debug = true
125125
setReadyState('complete')
126126
await new Promise(process.nextTick);
127127

@@ -130,7 +130,7 @@ describe('detect logging level', () => {
130130
expect(builder.getContext().level).toBe(LogLevel.Debug)
131131
})
132132

133-
it ('with `OC.debug` override on HTML interactive phase', async () => {
133+
it ('with `_oc_debug` override on HTML interactive phase', async () => {
134134
setReadyState('loading');
135135
const builder = getLoggerBuilder()
136136
builder.detectLogLevel()
@@ -139,7 +139,7 @@ describe('detect logging level', () => {
139139
expect('level' in builder.getContext()).toBe(false)
140140

141141
// Trigger document loaded
142-
window.OC.debug = true
142+
window._oc_debug = true
143143
setReadyState('interactive')
144144
await new Promise(process.nextTick);
145145

0 commit comments

Comments
 (0)