feat: Add chat seperator and restore last viewed chat on restart
This commit is contained in:
@@ -18,7 +18,11 @@ import {
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { Store } from '@ngrx/store';
|
||||
|
||||
import { DatabaseService } from './infrastructure/persistence';
|
||||
import {
|
||||
DatabaseService,
|
||||
loadGeneralSettingsFromStorage,
|
||||
loadLastViewedChatFromStorage
|
||||
} from './infrastructure/persistence';
|
||||
import { DesktopAppUpdateService } from './core/services/desktop-app-update.service';
|
||||
import { ServerDirectoryFacade } from './domains/server-directory';
|
||||
import { NotificationsFacade } from './domains/notifications';
|
||||
@@ -38,8 +42,7 @@ import { RoomsActions } from './store/rooms/rooms.actions';
|
||||
import { selectCurrentRoom } from './store/rooms/rooms.selectors';
|
||||
import {
|
||||
ROOM_URL_PATTERN,
|
||||
STORAGE_KEY_CURRENT_USER_ID,
|
||||
STORAGE_KEY_LAST_VISITED_ROUTE
|
||||
STORAGE_KEY_CURRENT_USER_ID
|
||||
} from './core/constants';
|
||||
import {
|
||||
ThemeNodeDirective,
|
||||
@@ -222,14 +225,16 @@ export class App implements OnInit, OnDestroy {
|
||||
}).catch(() => {});
|
||||
}
|
||||
} else {
|
||||
const last = localStorage.getItem(STORAGE_KEY_LAST_VISITED_ROUTE);
|
||||
const current = this.router.url;
|
||||
const generalSettings = loadGeneralSettingsFromStorage();
|
||||
const lastViewedChat = loadLastViewedChatFromStorage(currentUserId);
|
||||
|
||||
if (last && typeof last === 'string') {
|
||||
const current = this.router.url;
|
||||
|
||||
if (current === '/' || current === '/search') {
|
||||
this.router.navigate([last], { replaceUrl: true }).catch(() => {});
|
||||
}
|
||||
if (
|
||||
generalSettings.reopenLastViewedChat
|
||||
&& lastViewedChat
|
||||
&& (current === '/' || current === '/search')
|
||||
) {
|
||||
this.router.navigate(['/room', lastViewedChat.roomId], { replaceUrl: true }).catch(() => {});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -237,8 +242,6 @@ export class App implements OnInit, OnDestroy {
|
||||
if (evt instanceof NavigationEnd) {
|
||||
const url = evt.urlAfterRedirects || evt.url;
|
||||
|
||||
localStorage.setItem(STORAGE_KEY_LAST_VISITED_ROUTE, url);
|
||||
|
||||
const roomMatch = url.match(ROOM_URL_PATTERN);
|
||||
const currentRoomId = roomMatch ? roomMatch[1] : null;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user