Skip to content
Snippets Groups Projects
Commit 67d2921a authored by Mohammad Alayoub's avatar Mohammad Alayoub
Browse files

update profanity filter to be an enum like in the backend

parent e653bf70
No related merge requests found
import { Component, Inject, OnInit } from '@angular/core';
import { FormControl, Validators } from '@angular/forms';
import { Room } from '../../../../models/room';
import { ProfanityFilter, Room } from '../../../../models/room';
import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';
import { RoomDeleteComponent } from '../room-delete/room-delete.component';
import { NotificationService } from '../../../../services/util/notification.service';
......@@ -19,7 +19,7 @@ import { RoomDeleted } from '../../../../models/events/room-deleted';
})
export class RoomEditComponent implements OnInit {
editRoom: Room;
check: boolean = false;
check = false;
profanityCheck: boolean;
censorPartialWordsCheck: boolean;
censorLanguageSpecificCheck: boolean;
......@@ -38,9 +38,13 @@ export class RoomEditComponent implements OnInit {
ngOnInit() {
this.check = this.editRoom.questionsBlocked;
this.profanityCheck = this.editRoom.profanityFilter;
this.censorLanguageSpecificCheck = this.editRoom.censorLanguageSpecific;
this.censorPartialWordsCheck = this.editRoom.censorPartialWords;
this.profanityCheck = this.editRoom.profanityFilter !== ProfanityFilter.deactived;
if (this.editRoom.profanityFilter === ProfanityFilter.all){
this.censorLanguageSpecificCheck = this.censorPartialWordsCheck = true;
} else if (this.profanityCheck){
this.censorLanguageSpecificCheck = this.editRoom.profanityFilter === ProfanityFilter.languageSpecific;
this.censorPartialWordsCheck = this.editRoom.profanityFilter === ProfanityFilter.partialWords;
}
}
openDeleteRoomDialog(): void {
......@@ -77,9 +81,13 @@ export class RoomEditComponent implements OnInit {
save(): void {
this.editRoom.questionsBlocked = this.check;
this.editRoom.profanityFilter = this.profanityCheck;
this.editRoom.censorLanguageSpecific = this.censorLanguageSpecificCheck;
this.editRoom.censorPartialWords = this.censorPartialWordsCheck;
this.editRoom.profanityFilter = this.profanityCheck ? ProfanityFilter.none : ProfanityFilter.deactived;
if (this.censorLanguageSpecificCheck && this.censorPartialWordsCheck) {
this.editRoom.profanityFilter = ProfanityFilter.all;
} else if (this.profanityCheck){
this.editRoom.profanityFilter = this.censorLanguageSpecificCheck ? ProfanityFilter.languageSpecific : ProfanityFilter.none;
this.editRoom.profanityFilter = this.censorPartialWordsCheck ? ProfanityFilter.partialWords : this.editRoom.profanityFilter;
}
this.roomService.updateRoom(this.editRoom).subscribe(r => this.editRoom = r);
if (!this.roomNameFormControl.hasError('required')
&& !this.roomNameFormControl.hasError('minlength')
......
import { Component, Inject, OnInit } from '@angular/core';
import { RoomService } from '../../../../services/http/room.service';
import { Room } from '../../../../models/room';
import { ProfanityFilter, Room } from '../../../../models/room';
import { UserRole } from '../../../../models/user-roles.enum';
import { Router } from '@angular/router';
import { NotificationService } from '../../../../services/util/notification.service';
......@@ -76,7 +76,7 @@ export class RoomCreateComponent implements OnInit {
newRoom.description = '';
newRoom.blacklist = '[]';
newRoom.questionsBlocked = false;
newRoom.profanityFilter = true;
newRoom.profanityFilter = ProfanityFilter.none;
if (this.hasCustomShortId && this.customShortIdName && this.customShortIdName.length > 0) {
if (!new RegExp('[1-9a-z,A-Z,\s,\-,\.,\_,\~]+').test(this.customShortIdName)
|| this.customShortIdName.startsWith(' ') || this.customShortIdName.endsWith(' ')) {
......
......@@ -15,9 +15,7 @@ export class Room {
threshold: number;
tags: string[];
questionsBlocked: boolean;
profanityFilter: boolean;
censorPartialWords: boolean;
censorLanguageSpecific: boolean;
profanityFilter: ProfanityFilter;
constructor(
......@@ -33,9 +31,7 @@ export class Room {
threshold: number = null,
tags: string[] = [],
questionsBlocked: boolean = false,
profanityFilter: boolean = true,
censorPartialWords: boolean = false,
censorLanguageSpecific: boolean = false
profanityFilter: ProfanityFilter = ProfanityFilter.none
) {
this.id = '';
this.ownerId = ownerId;
......@@ -51,7 +47,13 @@ export class Room {
this.tags = tags;
this.questionsBlocked = questionsBlocked;
this.profanityFilter = profanityFilter;
this.censorPartialWords = censorPartialWords;
this.censorLanguageSpecific = censorLanguageSpecific;
}
}
export enum ProfanityFilter{
all = 0,
languageSpecific = 1,
partialWords = 2,
none = 3,
deactived = 4
}
......@@ -138,9 +138,6 @@ export class RoomService extends BaseHttpService {
}
setRoomId(room: Room): void {
// temp
room.censorLanguageSpecific = true;
room.censorPartialWords = true;
localStorage.setItem('roomId', room.id);
}
}
......@@ -7,6 +7,7 @@ import { CommentService } from '../http/comment.service';
import { CorrectWrong } from '../../models/correct-wrong.enum';
import { RoomService } from '../http/room.service';
import { TopicCloudAdminService } from './topic-cloud-admin.service';
import { ProfanityFilter, Room } from '../../models/room';
export interface UpdateInformation {
type: 'CommentCreated' | 'CommentPatched' | 'CommentHighlighted' | 'CommentDeleted';
......@@ -127,13 +128,12 @@ export class RoomDataService {
}
getComment(id: string): Observable<Comment> {
if (!this._fastCommentAccess) {
if (!this._fastCommentAccess[id]) {
const comment = new Subject<Comment>();
this.commentService.getComment(id).subscribe(c => {
this.roomService.getRoom(localStorage.getItem('roomId')).subscribe(room => {
if (room.profanityFilter) {
c.body = this.topicCloudAdminService.filterProfanityWords(c.body,
room.censorPartialWords, room.censorLanguageSpecific, ['comment.langs']);
c.body = this.filterCommentOfProfanity(room, c);
}
comment.next(c);
});
......@@ -147,7 +147,7 @@ export class RoomDataService {
public checkProfanity(comment: Comment) {
this.roomService.getRoom(localStorage.getItem('roomId')).subscribe(room => {
if (room.profanityFilter) {
if (room.profanityFilter !== ProfanityFilter.deactived) {
comment.body = this._savedCommentsAfterFilter.get(comment.id);
} else {
comment.body = this._savedCommentsBeforeFilter.get(comment.id);
......@@ -158,12 +158,16 @@ export class RoomDataService {
private setCommentBodies(comment: Comment) {
this.roomService.getRoom(localStorage.getItem('roomId')).subscribe(room => {
this._savedCommentsBeforeFilter.set(comment.id, comment.body);
this._savedCommentsAfterFilter.set(comment.id, this.topicCloudAdminService
.filterProfanityWords(comment.body, room.censorPartialWords, room.censorLanguageSpecific, ['comment.langs']) // comment.langs
);
this._savedCommentsAfterFilter.set(comment.id, this.filterCommentOfProfanity(room, comment));
});
}
private filterCommentOfProfanity(room: Room, comment: Comment): string {
const partialWords = room.profanityFilter === ProfanityFilter.all || room.profanityFilter === ProfanityFilter.partialWords;
const languageSpecific = room.profanityFilter === ProfanityFilter.all || room.profanityFilter === ProfanityFilter.languageSpecific;
return this.topicCloudAdminService.filterProfanityWords(comment.body, partialWords, languageSpecific, ['de']);
}
private removeCommentBodies(key: string) {
this._savedCommentsBeforeFilter.delete(key);
this._savedCommentsAfterFilter.delete(key);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment