feat: Add profile images
This commit is contained in:
@@ -87,6 +87,61 @@ describe('users reducer - status', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('avatar updates', () => {
|
||||
it('updates current user avatar metadata', () => {
|
||||
const state = usersReducer(baseState, UsersActions.updateCurrentUserAvatar({
|
||||
avatar: {
|
||||
avatarUrl: 'data:image/webp;base64,abc123',
|
||||
avatarHash: 'hash-1',
|
||||
avatarMime: 'image/webp',
|
||||
avatarUpdatedAt: 1234
|
||||
}
|
||||
}));
|
||||
|
||||
expect(state.entities['user-1']?.avatarUrl).toBe('data:image/webp;base64,abc123');
|
||||
expect(state.entities['user-1']?.avatarHash).toBe('hash-1');
|
||||
expect(state.entities['user-1']?.avatarMime).toBe('image/webp');
|
||||
expect(state.entities['user-1']?.avatarUpdatedAt).toBe(1234);
|
||||
});
|
||||
|
||||
it('keeps newer remote avatar when stale update arrives later', () => {
|
||||
const withRemote = usersReducer(
|
||||
baseState,
|
||||
UsersActions.upsertRemoteUserAvatar({
|
||||
user: {
|
||||
id: 'remote-1',
|
||||
oderId: 'oder-remote-1',
|
||||
username: 'remote',
|
||||
displayName: 'Remote',
|
||||
avatarUrl: 'data:image/webp;base64,newer',
|
||||
avatarHash: 'hash-newer',
|
||||
avatarMime: 'image/webp',
|
||||
avatarUpdatedAt: 200
|
||||
}
|
||||
})
|
||||
);
|
||||
const state = usersReducer(
|
||||
withRemote,
|
||||
UsersActions.upsertRemoteUserAvatar({
|
||||
user: {
|
||||
id: 'remote-1',
|
||||
oderId: 'oder-remote-1',
|
||||
username: 'remote',
|
||||
displayName: 'Remote',
|
||||
avatarUrl: 'data:image/webp;base64,older',
|
||||
avatarHash: 'hash-older',
|
||||
avatarMime: 'image/webp',
|
||||
avatarUpdatedAt: 100
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
expect(state.entities['remote-1']?.avatarUrl).toBe('data:image/webp;base64,newer');
|
||||
expect(state.entities['remote-1']?.avatarHash).toBe('hash-newer');
|
||||
expect(state.entities['remote-1']?.avatarUpdatedAt).toBe(200);
|
||||
});
|
||||
});
|
||||
|
||||
describe('presence-aware user with status', () => {
|
||||
it('preserves incoming status on user join', () => {
|
||||
const user = createUser({ id: 'away-user', oderId: 'oder-away', status: 'away', presenceServerIds: ['server-1'] });
|
||||
|
||||
Reference in New Issue
Block a user