Skip to content

Commit dbefabf

Browse files
skjnldsvbackportbot[bot]
authored andcommitted
fix(NcAvatar): redirect to guest avatar if avatar doesnt exist
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
1 parent 4f0eca5 commit dbefabf

3 files changed

Lines changed: 22 additions & 22 deletions

File tree

src/utils/getAvatarUrl.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ interface AvatarUrlOptions {
3333
*/
3434
export function getAvatarUrl(user: string, options?: AvatarUrlOptions): string {
3535
// backend only supports 64 and 512px
36-
// so we only requrest the needed size for better caching of the request.
36+
// so we only request the needed size for better caching of the request.
3737
const size = (options?.size || 64) <= 64
3838
? 64
3939
: 512
@@ -45,7 +45,7 @@ export function getAvatarUrl(user: string, options?: AvatarUrlOptions): string {
4545
? '/dark'
4646
: ''
4747

48-
return generateUrl(`/avatar${guestUrl}/{user}/{size}${themeUrl}`, {
48+
return generateUrl(`/avatar${guestUrl}/{user}/{size}${themeUrl}?guestFallback=true`, {
4949
user,
5050
size,
5151
})

tests/unit/components/NcAvatar/NcAvatar.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ describe('NcAvatar.vue', () => {
150150
await nextTick()
151151

152152
expect(wrapper.find('img').exists()).toBeTruthy()
153-
expect(wrapper.find('img').attributes('src')).toMatch(/avatar\/user1\/64$/)
153+
expect(wrapper.find('img').attributes('src')).toMatch(/avatar\/user1\/64\?guestFallback=true$/)
154154
})
155155

156156
it('should render image with avatar url pointing to a user', async () => {

tests/unit/utils/getAvatarUrl.spec.ts

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,56 +11,56 @@ describe('getAvatarUrl', () => {
1111
})
1212

1313
it('should return correct relative URL for user avatar', () => {
14-
expect(getAvatarUrl('alice')).toBe('//index.php/avatar/alice/64')
15-
expect(getAvatarUrl('john', { size: 64 })).toBe('//index.php/avatar/john/64')
14+
expect(getAvatarUrl('alice')).toBe('//index.php/avatar/alice/64?guestFallback=true')
15+
expect(getAvatarUrl('john', { size: 64 })).toBe('//index.php/avatar/john/64?guestFallback=true')
1616
})
1717

1818
it('should return correct relative URL with fixed sizes', () => {
1919
/// @ts-expect-error testing invalid value
20-
expect(getAvatarUrl('alice', { size: 0 })).toBe('//index.php/avatar/alice/64')
20+
expect(getAvatarUrl('alice', { size: 0 })).toBe('//index.php/avatar/alice/64?guestFallback=true')
2121
/// @ts-expect-error testing invalid value
22-
expect(getAvatarUrl('alice', { size: -1 })).toBe('//index.php/avatar/alice/64')
23-
expect(getAvatarUrl('john', { size: 64 })).toBe('//index.php/avatar/john/64')
22+
expect(getAvatarUrl('alice', { size: -1 })).toBe('//index.php/avatar/alice/64?guestFallback=true')
23+
expect(getAvatarUrl('john', { size: 64 })).toBe('//index.php/avatar/john/64?guestFallback=true')
2424
/// @ts-expect-error testing invalid value
25-
expect(getAvatarUrl('john', { size: 65 })).toBe('//index.php/avatar/john/512')
26-
expect(getAvatarUrl('john', { size: 512 })).toBe('//index.php/avatar/john/512')
25+
expect(getAvatarUrl('john', { size: 65 })).toBe('//index.php/avatar/john/512?guestFallback=true')
26+
expect(getAvatarUrl('john', { size: 512 })).toBe('//index.php/avatar/john/512?guestFallback=true')
2727
})
2828

2929
it('should return correct relative URL for user avatar in dark mode', () => {
3030
document.body.style.setProperty('--background-invert-if-dark', 'invert(100%)')
3131

32-
expect(getAvatarUrl('alice')).toBe('//index.php/avatar/alice/64/dark')
33-
expect(getAvatarUrl('john', { size: 512 })).toBe('//index.php/avatar/john/512/dark')
32+
expect(getAvatarUrl('alice')).toBe('//index.php/avatar/alice/64/dark?guestFallback=true')
33+
expect(getAvatarUrl('john', { size: 512 })).toBe('//index.php/avatar/john/512/dark?guestFallback=true')
3434
})
3535

3636
it('should return correct relative URL for user avatar in dark mode if enforced', () => {
37-
expect(getAvatarUrl('alice', { isDarkTheme: true })).toBe('//index.php/avatar/alice/64/dark')
38-
expect(getAvatarUrl('john', { isDarkTheme: true, size: 512 })).toBe('//index.php/avatar/john/512/dark')
37+
expect(getAvatarUrl('alice', { isDarkTheme: true })).toBe('//index.php/avatar/alice/64/dark?guestFallback=true')
38+
expect(getAvatarUrl('john', { isDarkTheme: true, size: 512 })).toBe('//index.php/avatar/john/512/dark?guestFallback=true')
3939
})
4040

4141
it('should return correct relative URL for user avatar in bright mode if enforced but body is darkmode', () => {
4242
document.body.style.setProperty('--background-invert-if-dark', 'invert(100%)')
4343

44-
expect(getAvatarUrl('alice', { isDarkTheme: false })).toBe('//index.php/avatar/alice/64')
45-
expect(getAvatarUrl('john', { isDarkTheme: false, size: 512 })).toBe('//index.php/avatar/john/512')
44+
expect(getAvatarUrl('alice', { isDarkTheme: false })).toBe('//index.php/avatar/alice/64?guestFallback=true')
45+
expect(getAvatarUrl('john', { isDarkTheme: false, size: 512 })).toBe('//index.php/avatar/john/512?guestFallback=true')
4646
})
4747

4848
it('should return correct relative URL for user avatar in dark mode', () => {
4949
document.body.style.setProperty('--background-invert-if-dark', 'invert(100%)')
5050

51-
expect(getAvatarUrl('alice')).toBe('//index.php/avatar/alice/64/dark')
52-
expect(getAvatarUrl('john', { size: 64 })).toBe('//index.php/avatar/john/64/dark')
51+
expect(getAvatarUrl('alice')).toBe('//index.php/avatar/alice/64/dark?guestFallback=true')
52+
expect(getAvatarUrl('john', { size: 64 })).toBe('//index.php/avatar/john/64/dark?guestFallback=true')
5353
})
5454

5555
it('should return correct relative URL for guest avatar', () => {
56-
expect(getAvatarUrl('alice', { isGuest: true })).toBe('//index.php/avatar/guest/alice/64')
57-
expect(getAvatarUrl('john', { size: 64, isGuest: true })).toBe('//index.php/avatar/guest/john/64')
56+
expect(getAvatarUrl('alice', { isGuest: true })).toBe('//index.php/avatar/guest/alice/64?guestFallback=true')
57+
expect(getAvatarUrl('john', { size: 64, isGuest: true })).toBe('//index.php/avatar/guest/john/64?guestFallback=true')
5858
})
5959

6060
it('should return correct relative URL for guest avatar in dark mode', () => {
6161
document.body.style.setProperty('--background-invert-if-dark', 'invert(100%)')
6262

63-
expect(getAvatarUrl('alice', { isGuest: true })).toBe('//index.php/avatar/guest/alice/64/dark')
64-
expect(getAvatarUrl('john', { size: 64, isGuest: true })).toBe('//index.php/avatar/guest/john/64/dark')
63+
expect(getAvatarUrl('alice', { isGuest: true })).toBe('//index.php/avatar/guest/alice/64/dark?guestFallback=true')
64+
expect(getAvatarUrl('john', { size: 64, isGuest: true })).toBe('//index.php/avatar/guest/john/64/dark?guestFallback=true')
6565
})
6666
})

0 commit comments

Comments
 (0)