Skip to content

Commit

Permalink
fix #284 (again) prevent widgets to be re-created
Browse files Browse the repository at this point in the history
  • Loading branch information
negue committed May 27, 2021
1 parent a31021a commit 173e242
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 18 deletions.
2 changes: 1 addition & 1 deletion src/app/screens/target-screen/target-screen.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@

<app-dynamic-iframe *ngSwitchCase="4" class="media-clip" #dynamicIframeComponent
(load)="addToMap(entry.clip, dynamicIframeComponent)"
[content]="entry.clip | clipTemplate$ | async"
[content]="entry.clip.id | clipTemplate$ | async"
[mediaId]="entry.clip.id"
[class.visible]="(mediaToggleVar.isVisible$ | async)">

Expand Down
35 changes: 18 additions & 17 deletions src/app/shared/widget-pipes/clip-template.pipe.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import {Pipe, PipeTransform} from '@angular/core';
import {AppQueries} from "../../state/app.queries";
import {Clip} from "@memebox/contracts";
import {Observable, of} from "rxjs";
import {Observable} from "rxjs";
import {clipDataToDynamicIframeContent, DynamicIframeContent} from "@memebox/utils";
import {map} from "rxjs/operators";
import {distinctUntilChanged, map} from "rxjs/operators";
import {isEqual} from "lodash";

@Pipe({
name: 'clipTemplate$'
Expand All @@ -13,24 +13,25 @@ export class ClipTemplatePipe implements PipeTransform {
constructor(private appQueries: AppQueries) {
}

transform(value: Clip): Observable<DynamicIframeContent> {
if (value.fromTemplate) {
return this.appQueries.clipMap$.pipe(
map(clipMap => clipMap[value.fromTemplate]),
map(template => {
transform(mediaId: string): Observable<DynamicIframeContent> {
return this.appQueries.clipMap$.pipe(
map(clipMap => {
const selectedMedia = clipMap[mediaId];

if (selectedMedia.fromTemplate) {
const widgetTemplate = clipMap[selectedMedia.fromTemplate];

const config: DynamicIframeContent = {
...clipDataToDynamicIframeContent(template),
variables: value.extended
...clipDataToDynamicIframeContent(widgetTemplate),
variables: selectedMedia.extended
};

console.info({config, value});

return config;
})
);
}
}

return of(clipDataToDynamicIframeContent(value));
return clipDataToDynamicIframeContent(selectedMedia);
}),
distinctUntilChanged((x, y) => isEqual(x, y))
);
}

}

0 comments on commit 173e242

Please sign in to comment.