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:
@@ -8,15 +8,14 @@ import { MobileSqliteConnectionService } from '../../services/mobile-sqlite-conn
|
||||
* Domain persistence routes through {@link CapacitorDatabaseService} on Capacitor shells.
|
||||
*/
|
||||
export class CapacitorMobilePersistenceAdapter implements MobilePersistenceAdapter {
|
||||
private initialized = false;
|
||||
|
||||
constructor(private readonly connection: MobileSqliteConnectionService) {}
|
||||
|
||||
get isNativeSqlite(): boolean {
|
||||
return this.connection.isAvailable;
|
||||
}
|
||||
|
||||
private initialized = false;
|
||||
|
||||
constructor(private readonly connection: MobileSqliteConnectionService) {}
|
||||
|
||||
async initialize(): Promise<void> {
|
||||
if (this.initialized) {
|
||||
return;
|
||||
@@ -33,5 +32,4 @@ export class CapacitorMobilePersistenceAdapter implements MobilePersistenceAdapt
|
||||
this.initialized = true;
|
||||
console.info('[mobile] native SQLite persistence initialized');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -22,22 +22,17 @@ const DEFAULT_POLL_INTERVAL_MS = 30 * 60_000;
|
||||
export class MobileAppUpdateService {
|
||||
readonly state = signal<MobileUpdateState>(createInitialMobileUpdateState());
|
||||
|
||||
private readonly appI18n = inject(AppI18nService);
|
||||
private readonly mobilePlatform = inject(MobilePlatformService);
|
||||
private adapter: MobileAppUpdateAdapter = new WebMobileAppUpdateAdapter();
|
||||
private adapterReady: Promise<MobileAppUpdateAdapter> | null = null;
|
||||
private initialized = false;
|
||||
private pollTimerId: number | null = null;
|
||||
|
||||
get isCapacitor(): boolean {
|
||||
return this.mobilePlatform.isCapacitor();
|
||||
}
|
||||
|
||||
private readonly appI18n = inject(AppI18nService);
|
||||
|
||||
private readonly mobilePlatform = inject(MobilePlatformService);
|
||||
|
||||
private adapter: MobileAppUpdateAdapter = new WebMobileAppUpdateAdapter();
|
||||
|
||||
private adapterReady: Promise<MobileAppUpdateAdapter> | null = null;
|
||||
|
||||
private initialized = false;
|
||||
|
||||
private pollTimerId: number | null = null;
|
||||
|
||||
async initialize(): Promise<void> {
|
||||
if (this.initialized) {
|
||||
return;
|
||||
@@ -175,5 +170,4 @@ export class MobileAppUpdateService {
|
||||
void this.checkForUpdates();
|
||||
}, DEFAULT_POLL_INTERVAL_MS);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -9,19 +9,15 @@ import { MobileSqliteConnectionService } from './mobile-sqlite-connection.servic
|
||||
/** Facade for native SQLite persistence on mobile shells. */
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class MobilePersistenceService {
|
||||
private readonly mobilePlatform = inject(MobilePlatformService);
|
||||
private readonly sqliteConnection = inject(MobileSqliteConnectionService);
|
||||
private adapter: MobilePersistenceAdapter = new WebMobilePersistenceAdapter();
|
||||
private adapterReady: Promise<MobilePersistenceAdapter> | null = null;
|
||||
|
||||
get isNativeSqlite(): boolean {
|
||||
return this.adapter.isNativeSqlite;
|
||||
}
|
||||
|
||||
private readonly mobilePlatform = inject(MobilePlatformService);
|
||||
|
||||
private readonly sqliteConnection = inject(MobileSqliteConnectionService);
|
||||
|
||||
private adapter: MobilePersistenceAdapter = new WebMobilePersistenceAdapter();
|
||||
|
||||
private adapterReady: Promise<MobilePersistenceAdapter> | null = null;
|
||||
|
||||
initialize(): Promise<void> {
|
||||
return this.ensureAdapter().then((adapter) => adapter.initialize());
|
||||
}
|
||||
@@ -44,5 +40,4 @@ export class MobilePersistenceService {
|
||||
|
||||
return this.adapterReady;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -7,19 +7,15 @@ import { getStoredCurrentUserId } from '../../../core/storage/current-user-stora
|
||||
/** Shared native SQLite connection used by mobile persistence and DatabaseService. */
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class MobileSqliteConnectionService {
|
||||
private store: MobileSqliteStore | null = null;
|
||||
private activeDatabaseName: string | null = null;
|
||||
private initializationPromise: Promise<MobileSqliteStore | null> | null = null;
|
||||
private initializationFailed = false;
|
||||
|
||||
get isAvailable(): boolean {
|
||||
return this.store?.isAvailable === true;
|
||||
}
|
||||
|
||||
private store: MobileSqliteStore | null = null;
|
||||
|
||||
private activeDatabaseName: string | null = null;
|
||||
|
||||
private initializationPromise: Promise<MobileSqliteStore | null> | null = null;
|
||||
|
||||
private initializationFailed = false;
|
||||
|
||||
async initialize(): Promise<MobileSqliteStore | null> {
|
||||
if (this.initializationFailed) {
|
||||
return null;
|
||||
@@ -70,5 +66,4 @@ export class MobileSqliteConnectionService {
|
||||
|
||||
return this.store;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user