4 | Please set your nick name in order to start chatting! 5 |
6 | 7 |8 | 9 | 10 |
-------------------------------------------------------------------------------- /src/app/nickname/nickname.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | padding: 1em; 4 | } -------------------------------------------------------------------------------- /src/app/nickname/nickname.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, AfterViewInit, ViewChild, ElementRef } from '@angular/core'; 2 | 3 | import { UserService } from '../core'; 4 | 5 | @Component({ 6 | selector: 'nickname', 7 | styleUrls: ['./nickname.component.scss'], 8 | templateUrl: './nickname.component.html' 9 | }) 10 | 11 | export class NicknameComponent implements AfterViewInit { 12 | @ViewChild('focus') private focus: ElementRef; 13 | nickname: string; 14 | 15 | constructor(public userService: UserService) { 16 | this.nickname = userService.nickname; 17 | } 18 | 19 | // After view initialised, focus on nickname text input 20 | ngAfterViewInit(): void { 21 | this.focus.nativeElement.focus(); 22 | } 23 | 24 | // Save nickname to user store 25 | save(): void { 26 | this.userService.nickname = this.nickname; 27 | } 28 | 29 | // Handle keypress event, for saving nickname 30 | eventHandler(event: KeyboardEvent): void { 31 | if (event.key === 'Enter') { 32 | this.save(); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/app/room/index.ts: -------------------------------------------------------------------------------- 1 | export * from './room.component'; -------------------------------------------------------------------------------- /src/app/room/message.service.ts: -------------------------------------------------------------------------------- 1 | import { ReplaySubject } from 'rxjs'; 2 | 3 | import { SocketService, UserService } from '../core'; 4 | import { IMessage } from '../../models'; 5 | 6 | export class MessageService { 7 | messages: ReplaySubject