Skip to main content

getReviewsStateKit()

getReviewsStateKit(): Promise<ErrorResult | SuccessResult<ReviewsStateKit>>

Retrieves a reactive state kit for advanced reviews management with Observable streams. Provides real-time updates and direct store access for complex UI requirements.

Returns​

Promise<ErrorResult | SuccessResult<ReviewsStateKit>>

Promise resolving to a state kit with query and service methods for reactive reviews management

Remark​

Important: Each call returns a new state kit instance with its own store. Save the returned state kit and reuse it across your application to maintain consistent state.

Examples​

Query Methods - Reactive data access

function onSdkReady() {
const moduleName = window.gw.sdk.common.constants.modules.REVIEWS;
window.gw.sdk.runIfModuleReady(moduleName, () => {
window.gw.sdk.reviews.methods.getReviewsStateKit()
.then((response) => {
const { query } = response.result;

// Subscribe to all reviews in the store
query.selectAll().subscribe((reviews) => {
console.log('All reviews:', reviews);
});

// Subscribe to a specific review by UID
query.selectEntity('review-uid-123').subscribe((review) => {
console.log('Single review:', review);
});

// Subscribe to the first review
query.selectFirst().subscribe((review) => {
console.log('First review:', review);
});

// Subscribe to pagination metadata
query.selectPaginationMeta().subscribe((meta) => {
console.log('Total reviews:', meta.totalCount);
console.log('Per page:', meta.perPage);
console.log('Current offset:', meta.currentOffset);
});
})
.catch(console.error);
});
}

if (window.gw && window.gw.sdk) {
onSdkReady();
} else {
document.addEventListener("gwSdkReady", onSdkReady);
}

Service Methods - Fetch and manage reviews

function onSdkReady() {
const moduleName = window.gw.sdk.common.constants.modules.REVIEWS;
window.gw.sdk.runIfModuleReady(moduleName, () => {
window.gw.sdk.reviews.methods.getReviewsStateKit()
.then((response) => {
const { service, query } = response.result;

// Fetch reviews with filters (replaces store)
service.getReviews({
productId: 123,
onlyWithMedia: true,
perPage: 10
}).subscribe((data) => {
console.log('Filtered reviews:', data.items);
console.log('Total:', data.totalCount);
});

// Load more reviews (appends to store)
// Pass same filters with updated offset
service.loadMoreReviews({
productId: 123,
onlyWithMedia: true,
perPage: 10,
offset: 10
}).subscribe((data) => {
console.log('All reviews including new:', data.items);
});

// Reactive updates after service calls
query.selectAll().subscribe((reviews) => {
console.log('Store updated:', reviews.length);
});
})
.catch(console.error);
});
}

if (window.gw && window.gw.sdk) {
onSdkReady();
} else {
document.addEventListener("gwSdkReady", onSdkReady);
}