...
 
Commits (3)
......@@ -23,7 +23,6 @@ export class NSFWSelectorComponent {
@Input('consumer') consumer: false;
@Input('expanded') expanded: false;
@Output('selectedChange') onSelected: EventEmitter<any> = new EventEmitter();
@Output('onInit') onInit: EventEmitter<any> = new EventEmitter();
constructor(
public creatorService: NSFWSelectorCreatorService,
......@@ -33,11 +32,8 @@ export class NSFWSelectorComponent {
) {}
ngOnInit() {
if (!this.selected && this.service.reasons) {
for (const reason of this.service.reasons) {
this.toggle(reason.value, false);
}
this.onInit.emit(this.service.reasons.filter(r => r.selected));
for (const reason of this.service.reasons) {
this.toggle(reason.value, false);
}
}
......@@ -53,13 +49,13 @@ export class NSFWSelectorComponent {
}
@Input('selected') set selected(selected: Array<number>) {
if (!selected) {
return;
}
this.service.override = true;
for (let i in this.service.reasons) {
this.service.reasons[i].selected =
selected.indexOf(this.service.reasons[i].value) > -1;
this.serviceRef = 'editing';
if (!this.selected && this.service.reasons) {
for (let i in this.service.reasons) {
this.service.reasons[i].selected =
selected.indexOf(this.service.reasons[i].value) > -1;
}
}
}
......
......@@ -2,7 +2,6 @@ import { Storage } from '../../../services/storage';
export class NSFWSelectorService {
cacheKey: string = '';
override: boolean = false;
reasons: Array<any> = [
{ value: 1, label: 'Nudity', selected: false, locked: false },
......@@ -18,11 +17,9 @@ export class NSFWSelectorService {
onInit() {}
build(): NSFWSelectorService {
if (!this.override) {
let reasons = this.storage.get(`nsfw:${this.cacheKey}`) || [];
for (let reason of this.reasons) {
reason.selected = reasons.indexOf(reason.value) > -1;
}
let reasons = this.storage.get(`nsfw:${this.cacheKey}`) || [];
for (let reason of this.reasons) {
reason.selected = reasons.indexOf(reason.value) > -1;
}
return this;
}
......@@ -34,12 +31,10 @@ export class NSFWSelectorService {
for (let r of this.reasons) {
if (r.value === reason.value) r.selected = !r.selected;
}
if (!this.override) {
this.storage.set(
`nsfw:${this.cacheKey}`,
this.reasons.filter(r => r.selected).map(r => r.value)
);
}
this.storage.set(
`nsfw:${this.cacheKey}`,
this.reasons.filter(r => r.selected).map(r => r.value)
);
}
}
......@@ -49,6 +44,10 @@ export class NSFWSelectorCreatorService extends NSFWSelectorService {
export class NSFWSelectorConsumerService extends NSFWSelectorService {
cacheKey: string = 'consumer';
}
/**
* Editing service, overrides build to allow pre-setting of values.
*/
export class NSFWSelectorEditingService extends NSFWSelectorService {
cacheKey: string = 'editing';
......
......@@ -157,8 +157,7 @@
<m-nsfw-selector
(selectedChange)="onNSFWSelections($event)"
(onInit)="onNSFWSelections($event)"
[selected]="editing && blog.nsfw != [] ? blog.nsfw : null"
[selected]="editing && blog.nsfw != [] ? blog.nsfw : []"
>
</m-nsfw-selector>
......
......@@ -73,7 +73,6 @@
</div>
<m-nsfw-selector
(selectedChange)="onNSFWSelections($event)"
(onInit)="onNSFWSelections($event)"
[selected]="entity.nsfw"
>
</m-nsfw-selector>
......
......@@ -60,10 +60,7 @@
</label>
<ng-container *mIfFeature="'top-feeds'; else oldNSFW">
<m-nsfw-selector
(selectedChange)="onNSFWSelections($event)"
(onInit)="onNSFWSelections($event)"
>
<m-nsfw-selector (selectedChange)="onNSWFSelections($event)">
</m-nsfw-selector>
</ng-container>
......
......@@ -286,7 +286,7 @@ export class PosterComponent {
this.router.navigate(['/blog/edit/new']);
}
onNSFWSelections(reasons: Array<{ value; label; selected }>) {
onNSWFSelections(reasons: Array<{ value; label; selected }>) {
this.attachment.setNSFW(reasons);
}
......