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

hide the blacklist for participants

parent c7120bd1
Branches
Tags
No related merge requests found
......@@ -138,7 +138,7 @@
</mat-card>
<mat-card style="background: none; margin-bottom: 10px;">
<mat-slide-toggle [(ngModel)]="blacklistIsActive">
<mat-slide-toggle [(ngModel)]="blacklistIsActive" (change)="changeblacklist()">
{{'topic-cloud-dialog.hide-blacklist-words' | translate}}
</mat-slide-toggle>
</mat-card>
......
......@@ -85,6 +85,7 @@ export class TopicCloudAdministrationComponent implements OnInit, OnDestroy {
}
ngOnInit(): void {
this.topicCloudAdminService.getBlacklistIsActive().subscribe(isActive => this.blacklistIsActive = isActive);
this.deviceType = localStorage.getItem('deviceType');
this.blacklistSubscription = this.topicCloudAdminService.getBlacklist().subscribe(list => this.blacklist = list);
this.profanitywordlist = this.profanityFilterService.getProfanityListFromStorage();
......@@ -100,6 +101,13 @@ export class TopicCloudAdministrationComponent implements OnInit, OnDestroy {
this.initializeKeywords();
}
changeblacklist() {
this.topicCloudAdminService.getRoom().subscribe(room => {
room.blacklistIsActive = this.blacklistIsActive;
this.topicCloudAdminService.updateRoom(room);
});
}
removeFromKeywords(comment: Comment) {
for (const keyword of this.keywords) {
keyword.comments.forEach(_comment => {
......@@ -218,7 +226,7 @@ export class TopicCloudAdministrationComponent implements OnInit, OnDestroy {
}
blacklistIncludesKeyword(keyword: string) {
return this.blacklist.includes(keyword.toLowerCase());
return this.blacklistIsActive && this.blacklist.includes(keyword.toLowerCase());
}
checkIfCommentExists(comments: Comment[], id: string): boolean {
......
......@@ -14,6 +14,7 @@ export class Room {
tags: string[];
questionsBlocked: boolean;
profanityFilter: ProfanityFilter;
blacklistIsActive: boolean;
constructor(
ownerId: string = '',
......@@ -28,7 +29,8 @@ export class Room {
threshold: number = null,
tags: string[] = [],
questionsBlocked: boolean = false,
profanityFilter: ProfanityFilter = ProfanityFilter.none
profanityFilter: ProfanityFilter = ProfanityFilter.none,
blacklistIsActive: boolean = true
) {
this.id = '';
this.ownerId = ownerId;
......@@ -44,6 +46,7 @@ export class Room {
this.tags = tags;
this.questionsBlocked = questionsBlocked;
this.profanityFilter = profanityFilter;
this.blacklistIsActive = blacklistIsActive;
}
}
......
......@@ -20,6 +20,7 @@ export class TopicCloudAdminService {
private static readonly adminKey = 'Topic-Cloud-Admin-Data';
private adminData: BehaviorSubject<TopicCloudAdminData>;
private blacklist: Subject<string[]>;
private blacklistIsActive: Subject<boolean>;
constructor(private roomService: RoomService,
private translateService: TranslateService,
......@@ -27,11 +28,13 @@ export class TopicCloudAdminService {
private profanityFilterService: ProfanityFilterService,
private notificationService: NotificationService) {
this.blacklist = new Subject<string[]>();
this.blacklistIsActive = new Subject<boolean>();
this.wsRoomService.getRoomStream(localStorage.getItem('roomId')).subscribe(msg => {
const message = JSON.parse(msg.body);
const room = message.payload.changes;
if (message.type === 'RoomPatched') {
this.blacklist.next(room.blacklist ? JSON.parse(room.blacklist) : []);
this.blacklistIsActive.next(room.blacklistIsActive);
}
});
this.adminData = new BehaviorSubject<TopicCloudAdminData>(TopicCloudAdminService.getDefaultAdminData);
......@@ -125,16 +128,18 @@ export class TopicCloudAdminService {
setAdminData(_adminData: TopicCloudAdminData) {
localStorage.setItem(TopicCloudAdminService.adminKey, JSON.stringify(_adminData));
this.getBlacklist().subscribe(list => {
_adminData.blacklist = [];
if (_adminData.blacklistIsActive) {
_adminData.blacklist = list;
}
if (_adminData.profanityFilter !== ProfanityFilter.deactivated) {
_adminData.blacklist = _adminData.blacklist.concat(this.profanityFilterService.getProfanityList);
}
localStorage.setItem(TopicCloudAdminService.adminKey, JSON.stringify(_adminData));
this.adminData.next(_adminData);
this.getBlacklistIsActive().subscribe(isActive => {
this.getBlacklist().subscribe(list => {
_adminData.blacklist = [];
if (isActive) {
_adminData.blacklist = list;
}
if (_adminData.profanityFilter !== ProfanityFilter.deactivated) {
_adminData.blacklist = _adminData.blacklist.concat(this.profanityFilterService.getProfanityList);
}
localStorage.setItem(TopicCloudAdminService.adminKey, JSON.stringify(_adminData));
this.adminData.next(_adminData);
});
});
}
......@@ -142,10 +147,15 @@ export class TopicCloudAdminService {
this.getRoom().subscribe(room => {
const list = room.blacklist ? JSON.parse(room.blacklist) : [];
this.blacklist.next(list);
this.blacklistIsActive.next(room.blacklistIsActive);
});
return this.blacklist.asObservable();
}
getBlacklistIsActive() {
return this.blacklistIsActive.asObservable();
}
getRoom(): Observable<Room> {
return this.roomService.getRoom(localStorage.getItem('roomId'));
}
......
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