diff --git a/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.html b/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.html index 31e95cc8d92b6a3ec9ef9118b717b0fe10adf1e7..5ee44de247058557a664e889e97b5686f1b44a8b 100644 --- a/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.html +++ b/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.html @@ -138,7 +138,7 @@ </mat-card> <mat-card style="background: none; margin-bottom: 10px;"> - <mat-slide-toggle [(ngModel)]="blacklistIsActive" (change)="changeblacklist()"> + <mat-slide-toggle [(ngModel)]="blacklistIsActive"> {{'topic-cloud-dialog.hide-blacklist-words' | translate}} </mat-slide-toggle> </mat-card> diff --git a/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.ts b/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.ts index 550a7363a109ca26f9af61469ec30b9172eff9b7..1945cd89a4c1ec8d994b50c648ab50f883cbc801 100644 --- a/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.ts +++ b/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.ts @@ -101,13 +101,6 @@ 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 => { @@ -276,7 +269,7 @@ export class TopicCloudAdministrationComponent implements OnInit, OnDestroy { startDate: this.startDate.length ? this.startDate : null, endDate: this.endDate.length ? this.endDate : null }; - this.topicCloudAdminService.setAdminData(this.topicCloudAdminData); + this.topicCloudAdminService.setAdminData(this.topicCloudAdminData, true); } setDefaultAdminData() { diff --git a/src/app/services/util/topic-cloud-admin.service.ts b/src/app/services/util/topic-cloud-admin.service.ts index 6a5b788b92611607650886e06e92e779552e3070..e21964674fe463c9cb810dbceccc51e87817bc73 100644 --- a/src/app/services/util/topic-cloud-admin.service.ts +++ b/src/app/services/util/topic-cloud-admin.service.ts @@ -36,6 +36,9 @@ export class TopicCloudAdminService { this.blacklist.next(room.blacklist ? JSON.parse(room.blacklist) : []); this.blacklistActive = room.blacklistIsActive; this.blacklistIsActive.next(room.blacklistIsActive); + const data = TopicCloudAdminService.getDefaultAdminData; + data.blacklistIsActive = this.blacklistActive; + this.setAdminData(data, false); } }); this.adminData = new BehaviorSubject<TopicCloudAdminData>(TopicCloudAdminService.getDefaultAdminData); @@ -127,23 +130,28 @@ export class TopicCloudAdminService { return this.adminData.asObservable(); } - setAdminData(_adminData: TopicCloudAdminData) { + setAdminData(_adminData: TopicCloudAdminData, updateRoom: boolean) { localStorage.setItem(TopicCloudAdminService.adminKey, JSON.stringify(_adminData)); - this.getBlacklistIsActive().subscribe(isActive => { - _adminData.blacklistIsActive = isActive; - }); - 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)); - _adminData.blacklistIsActive = this.blacklistActive; - this.adminData.next(_adminData); - }); + if (updateRoom) { + this.getRoom().subscribe(room => { + room.blacklistIsActive = _adminData.blacklistIsActive; + this.updateRoom(room); + }); + } else { + const subscription = 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)); + _adminData.blacklistIsActive = this.blacklistActive; + this.adminData.next(_adminData); + subscription.unsubscribe(); + }); + } } getBlacklist(): Observable<string[]> {