fix: multiple bug fixes
isolated users, db backup, weird disconnect issues for long voice sessions,
This commit is contained in:
@@ -44,7 +44,11 @@ import { NativeContextMenuComponent } from './features/shell/native-context-menu
|
||||
import { UsersActions } from './store/users/users.actions';
|
||||
import { RoomsActions } from './store/rooms/rooms.actions';
|
||||
import { selectCurrentRoom } from './store/rooms/rooms.selectors';
|
||||
import { ROOM_URL_PATTERN, STORAGE_KEY_CURRENT_USER_ID } from './core/constants';
|
||||
import { ROOM_URL_PATTERN } from './core/constants';
|
||||
import {
|
||||
clearStoredCurrentUserId,
|
||||
getStoredCurrentUserId
|
||||
} from './core/storage/current-user-storage';
|
||||
import {
|
||||
ThemeNodeDirective,
|
||||
ThemePickerOverlayComponent,
|
||||
@@ -219,8 +223,19 @@ export class App implements OnInit, OnDestroy {
|
||||
|
||||
void this.desktopUpdates.initialize();
|
||||
|
||||
let currentUserId = getStoredCurrentUserId();
|
||||
|
||||
await this.databaseService.initialize();
|
||||
|
||||
if (currentUserId) {
|
||||
const persistedUserId = await this.databaseService.getCurrentUserId();
|
||||
|
||||
if (persistedUserId !== currentUserId) {
|
||||
clearStoredCurrentUserId();
|
||||
currentUserId = null;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
const apiBase = this.servers.getApiBaseUrl();
|
||||
|
||||
@@ -231,31 +246,28 @@ export class App implements OnInit, OnDestroy {
|
||||
|
||||
await this.setupDesktopDeepLinks();
|
||||
|
||||
this.store.dispatch(UsersActions.loadCurrentUser());
|
||||
|
||||
this.userStatus.start();
|
||||
|
||||
this.store.dispatch(RoomsActions.loadRooms());
|
||||
|
||||
const currentUserId = localStorage.getItem(STORAGE_KEY_CURRENT_USER_ID);
|
||||
const currentUrl = this.getCurrentRouteUrl();
|
||||
|
||||
if (!currentUserId) {
|
||||
if (!this.isPublicRoute(this.router.url)) {
|
||||
if (!this.isPublicRoute(currentUrl)) {
|
||||
this.router.navigate(['/login'], {
|
||||
queryParams: {
|
||||
returnUrl: this.router.url
|
||||
returnUrl: currentUrl
|
||||
}
|
||||
}).catch(() => {});
|
||||
}
|
||||
} else {
|
||||
const current = this.router.url;
|
||||
this.store.dispatch(UsersActions.loadCurrentUser());
|
||||
this.store.dispatch(RoomsActions.loadRooms());
|
||||
|
||||
const generalSettings = loadGeneralSettingsFromStorage();
|
||||
const lastViewedChat = loadLastViewedChatFromStorage(currentUserId);
|
||||
|
||||
if (
|
||||
generalSettings.reopenLastViewedChat
|
||||
&& lastViewedChat
|
||||
&& (current === '/' || current === '/search')
|
||||
&& (currentUrl === '/' || currentUrl === '/search')
|
||||
) {
|
||||
this.router.navigate(['/room', lastViewedChat.roomId], { replaceUrl: true }).catch(() => {});
|
||||
}
|
||||
@@ -388,9 +400,31 @@ export class App implements OnInit, OnDestroy {
|
||||
}
|
||||
|
||||
private isPublicRoute(url: string): boolean {
|
||||
return url === '/login' ||
|
||||
url === '/register' ||
|
||||
url.startsWith('/invite/');
|
||||
const path = this.getRoutePath(url);
|
||||
|
||||
return path === '/login' ||
|
||||
path === '/register' ||
|
||||
path.startsWith('/invite/');
|
||||
}
|
||||
|
||||
private getCurrentRouteUrl(): string {
|
||||
if (typeof window === 'undefined') {
|
||||
return this.router.url;
|
||||
}
|
||||
|
||||
const currentUrl = `${window.location.pathname}${window.location.search}${window.location.hash}`;
|
||||
|
||||
return currentUrl || this.router.url;
|
||||
}
|
||||
|
||||
private getRoutePath(url: string): string {
|
||||
if (!url) {
|
||||
return '/';
|
||||
}
|
||||
|
||||
const [path] = url.split(/[?#]/, 1);
|
||||
|
||||
return path || '/';
|
||||
}
|
||||
|
||||
private parseDesktopInviteUrl(url: string): { inviteId: string; sourceUrl: string } | null {
|
||||
|
||||
Reference in New Issue
Block a user