@acorel/contentful-integration
Version:
Contentful integration with SAP Composable Storefront by Acorel
35 lines (27 loc) • 1.38 kB
text/typescript
import {CmsComponent, OccCmsComponentAdapter, PageContext} from "@spartacus/core";
import {Observable, of} from "rxjs";
import {Apollo} from "apollo-angular";
import {ContentfulLivePreviewService} from "./contentful-live-preview.service";
import {QueryOptions} from "@apollo/client/core";
import {Injectable} from "@angular/core";
import {GraphqlCmsComponentAdapter, GraphqlCmsIntegrationService} from "@acorel/graphql-integration";
({
providedIn: 'root',
})
export class ContentfulCmsComponentAdapter extends GraphqlCmsComponentAdapter {
constructor(occCmsComponentAdapter: OccCmsComponentAdapter, graphqlCmsIntegrationService: GraphqlCmsIntegrationService, apollo: Apollo, private contentfulLivePreviewService :ContentfulLivePreviewService) {
super(occCmsComponentAdapter, graphqlCmsIntegrationService, apollo);
}
override doQuery(id: string, pageContext: PageContext, query: QueryOptions) {
if (this.contentfulLivePreviewService.isPreviewEnabled()) {
let previewContent = this.contentfulLivePreviewService.previewContent(id, pageContext);
if (previewContent) {
return of(previewContent);
}
}
return super.doQuery(id, pageContext, query);
}
override load<T extends CmsComponent>(id: string, pageContext: PageContext, fields?: string): Observable<T> {
return super.load(id, pageContext, fields);
}
}