fix: restore build and stabilize E2E cross-signal behavior

Revert the automated member-ordering pass that broke Angular field init
(TS2729) and disable that rule until a safe reorder strategy exists.
Fix modal/confirm dialog i18n defaults via template fallbacks, search all
active endpoints (including offline), register foreign rooms with actor
owner IDs, sync profile display names from avatar summaries, and guard
dm-chat when a private call converts to a group conversation.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-11 12:16:40 +02:00
parent 79c6f91cd6
commit 31962aeb1a
131 changed files with 2483 additions and 3896 deletions

View File

@@ -1,5 +1,11 @@
import { User } from '../../shared-kernel';
import { shouldApplyAvatarTransfer, shouldRequestAvatarData } from './user-avatar.effects';
import {
buildProfileUpsertFromAvatarSummary,
buildUserAvatarSummary,
shouldApplyAvatarTransfer,
shouldRequestAvatarData
} from './user-avatar.effects';
import { UsersActions } from './users.actions';
function createUser(overrides: Partial<User> = {}): User {
return {
@@ -101,6 +107,50 @@ describe('user avatar sync helpers', () => {
})).toBe(false);
});
it('includes profile text in avatar summary broadcasts', () => {
const summary = buildUserAvatarSummary(createUser({
displayName: 'Alice Two',
description: 'Updated bio',
profileUpdatedAt: 300
}));
expect(summary).toMatchObject({
type: 'user-avatar-summary',
displayName: 'Alice Two',
description: 'Updated bio',
profileUpdatedAt: 300
});
});
it('builds a profile upsert action from a newer avatar summary', () => {
const existingUser = createUser({
displayName: 'Alice',
profileUpdatedAt: 100
});
const action = buildProfileUpsertFromAvatarSummary({
oderId: 'oder-1',
displayName: 'Alice Two',
description: 'Updated bio',
profileUpdatedAt: 200,
avatarUpdatedAt: 0
}, existingUser);
expect(action).toEqual(UsersActions.upsertRemoteUserAvatar({
user: {
id: 'user-1',
oderId: 'oder-1',
username: 'alice',
displayName: 'Alice Two',
description: 'Updated bio',
profileUpdatedAt: 200,
avatarHash: undefined,
avatarMime: undefined,
avatarUpdatedAt: undefined,
avatarUrl: undefined
}
}));
});
it('applies profile-only transfers when the remote profile is newer', () => {
const existingUser = createUser({
displayName: 'Alice',