UNPKG

@acorel/contentful-integration

Version:
57 lines (45 loc) 1.71 kB
import {Injectable} from "@angular/core"; import {ContentfulLivePreview, ContentfulSubscribeConfig} from "@contentful/live-preview"; import {LanguageService, PageContext} from "@spartacus/core"; import {Argument} from "@contentful/live-preview/dist/types"; import {take} from "rxjs/operators"; @Injectable({ providedIn: 'root', }) export class ContentfulLivePreviewService { contentfulLivePreview: any; subscriptions: {id: string, data: Argument}[]; constructor(private languageService: LanguageService) { this.languageService.getActive().pipe(take(1),).subscribe(locale => { this.contentfulLivePreview = ContentfulLivePreview.init({locale: locale, debugMode: true}); }); this.subscriptions = []; } currentLocale(): string { return ContentfulLivePreview.locale; } isPreviewEnabled(): boolean { return ContentfulLivePreview.liveUpdatesEnabled; } subscribe(id: string, pageContext: PageContext, config: ContentfulSubscribeConfig): void { let currentSubscription = this.subscriptions.find(o => o.id == id); if (!currentSubscription) { ContentfulLivePreview.subscribe(config); this.subscriptions.push({id: id, data: config.data}); } } update(id: string, pageContext: PageContext, data: Argument) : void { let currentSubscription = this.subscriptions.find(o => o.id == id); if (currentSubscription) { currentSubscription.data = data; } } previewContent(id: string, pageContext: PageContext): Argument | undefined { let currentSubscription = this.subscriptions.find(o => o.id == id); if (currentSubscription) { return currentSubscription.data; } else { return undefined; } } }