dabubble/src/app/components/sidebar/sidebar.component.ts
2024-05-26 19:51:04 +02:00

73 lines
2.2 KiB
TypeScript

import { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';
import { ActivatedRoute, RouterModule } from '@angular/router';
import { SidebarChannelsComponent } from './sidebar-channels/sidebar-channels.component';
import { SidebarDirectMessagesComponent } from './sidebar-direct-messages/sidebar-direct-messages.component';
import { SmallBtnComponent } from '../../shared/components/small-btn/small-btn.component';
import { CommonModule } from '@angular/common';
import { ChannleService } from '../../service/channle.service';
import { ToggleBooleanService } from '../../service/toggle-boolean.service';
import { ChatService } from '../../service/chat.service';
import { SharedService } from '../../service/shared.service';
import { SearchBarComponent } from '../../shared/components/header/search-bar/search-bar.component';
@Component({
selector: 'app-sidebar',
standalone: true,
imports: [
RouterModule,
SidebarChannelsComponent,
SidebarDirectMessagesComponent,
SmallBtnComponent,
CommonModule,
SearchBarComponent,
],
templateUrl: './sidebar.component.html',
styleUrl: './sidebar.component.scss',
})
export class SidebarComponent implements OnInit {
@Input() viewWidth: number = 0;
@Input() btnPosition: boolean = false;
currentChannel: string = '';
constructor(
public channelService: ChannleService,
public toggleBoolean: ToggleBooleanService,
private router: ActivatedRoute,
public chatService: ChatService,
private sharedService: SharedService
) {}
RESPONSIVE_THRESHOLD = this.sharedService.RESPONSIVE_THRESHOLD;
ngOnInit() {
this.routeUserId();
}
/**
* Opens the search bar by toggling a boolean value.
*/
openSearchbar() {
this.toggleBoolean.openSearchWindow = true;
}
/**
* Closes the secondary chat window & sidebar.
*/
closeSecondaryChatAndSidebar() {
this.chatService.toggleSecondaryChat('none');
if (this.viewWidth <= this.RESPONSIVE_THRESHOLD) {
this.toggleBoolean.isSidebarOpen = false;
}
}
/**
* Retrieves the user ID from the route parameters.
*/
routeUserId() {
if (this.router.params.subscribe()) {
this.router.params.subscribe((params) => {
this.currentChannel = params['id'];
});
}
}
}