Skip to content

Commit d43d6f1

Browse files
committed
fix preference error
1 parent 61f209c commit d43d6f1

3 files changed

Lines changed: 27 additions & 2 deletions

File tree

src/lib/preferences.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ export function recordSharedPreferences (subject, context) {
6969
//
7070
export function recordPersonalDefaults (theClass, context) {
7171
return new Promise(function (resolve, reject) {
72+
if (!context.me) {
73+
resolve(context)
74+
return
75+
}
7276
ensureLoadedPreferences(context).then(
7377
context => {
7478
if (!context.preferencesFile) {

src/login/login.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1053,7 +1053,11 @@ export function newAppInstance (
10531053
*/
10541054
export async function getUserRoles (): Promise<Array<NamedNode>> {
10551055
try {
1056-
const { me, preferencesFile, preferencesFileError } = await ensureLoadedPreferences({})
1056+
const me = authn.currentUser()
1057+
if (!me) {
1058+
return []
1059+
}
1060+
const { preferencesFile, preferencesFileError } = await ensureLoadedPreferences({})
10571061
if (!preferencesFile || preferencesFileError) {
10581062
throw new Error(preferencesFileError)
10591063
}

test/unit/preferences.test.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1-
import { describe, expect, it } from 'vitest'
1+
import { describe, expect, it, vi } from 'vitest'
22
import { silenceDebugMessages } from './helpers/debugger'
33
import { JSDOM } from 'jsdom'
4+
vi.mock('../../src/login/login', () => ({
5+
ensureLoadedPreferences: vi.fn()
6+
}))
7+
8+
import * as loginModule from '../../src/login/login'
49
import * as Preferences from '../../src/lib/preferences'
510
import { sym } from 'rdflib'
611

@@ -64,6 +69,18 @@ describe('Preferences.recordSharedPreferences', () => {
6469
})
6570
})
6671

72+
describe('Preferences.recordPersonalDefaults', () => {
73+
it('does not try to load preferences when there is no logged-in user', async () => {
74+
const ensureLoadedPreferencesMock = vi.mocked(loginModule.ensureLoadedPreferences)
75+
76+
const context = { me: null }
77+
const result = await Preferences.recordPersonalDefaults('https://test.example/class', context)
78+
79+
expect(result).toBe(context)
80+
expect(ensureLoadedPreferencesMock).not.toHaveBeenCalled()
81+
})
82+
})
83+
6784
describe('Preferences.getPreferencesForClass', () => {
6885
it('exists', () => {
6986
expect(Preferences.getPreferencesForClass).toBeInstanceOf(Function)

0 commit comments

Comments
 (0)