Newer
Older
import { Component, Input, OnInit } from '@angular/core';
import { Comment } from '../../../models/comment';
import { AuthenticationService } from '../../../services/http/authentication.service';
import { ActivatedRoute } from '@angular/router';
import { Location } from '@angular/common';
import { CommentService } from '../../../services/http/comment.service';
import { NotificationService } from '../../../services/util/notification.service';
import { TranslateService } from '@ngx-translate/core';
import { LanguageService } from '../../../services/util/language.service';

Lukas Mauß
committed
import { WsCommentServiceService } from '../../../services/websockets/ws-comment-service.service';
import { RxStompService } from '@stomp/ng2-stompjs';
import { Message } from '@stomp/stompjs';
@Component({
selector: 'app-comment',
templateUrl: './comment.component.html',
styleUrls: ['./comment.component.scss']
})
export class CommentComponent implements OnInit {
isLoading = true;
constructor(protected authenticationService: AuthenticationService,
private route: ActivatedRoute,
private location: Location,
private commentService: CommentService,
private notification: NotificationService,
private translateService: TranslateService,

Lukas Mauß
committed
protected langService: LanguageService,
private wsCommentService: WsCommentServiceService,
private rxStompService: RxStompService) {
langService.langEmitter.subscribe(lang => translateService.use(lang)); }
if (this.authenticationService.getRole() === 0) {
this.isCreator = true;
}
this.translateService.use(localStorage.getItem('currentLang'));
this.rxStompService.watch(`/topic/${this.comment.roomId}.comment.stream`).subscribe((message: Message) => {
this.parseIncomingMessage(message);
});
setRead(comment: Comment): void {

Lukas Mauß
committed
this.comment = this.wsCommentService.toggleRead(comment);
// this.commentService.updateComment(comment).subscribe();
setCorrect(comment: Comment): void {

Lukas Mauß
committed
this.comment = this.wsCommentService.toggleCorrect(comment);
// this.commentService.updateComment(comment).subscribe();
setFavorite(comment: Comment): void {

Lukas Mauß
committed
this.comment = this.wsCommentService.toggleFavorite(comment);
// this.commentService.updateComment(comment).subscribe();
delete(comment: Comment): void {
this.commentService.deleteComment(comment.id).subscribe(room => {
this.notification.show(`Comment '${comment.body}' successfully deleted.`);
parseIncomingMessage(message: Message) {
const msg = JSON.parse(message.body);
const payload = msg.payload;
if (payload.id === this.comment.id) {
for (const [key, value] of Object.entries(payload.changes)) {
console.log(value);
switch (key) {
case 'read': this.comment.read = value;
break;
case 'correct' : this.comment.correct = value;
break;
case 'favorite' : this.comment.favorite = value;
}
}
}
}