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);
}