ingeniuscliq-reviews
v0.1.6
Published
Review system module for IngeniusCliq
Downloads
685
Readme
ingeniuscliq-reviews
Review system module for IngeniusCliq applications.
Installation
npm install ingeniuscliq-reviews ingeniuscliq-coreDependencies
This package depends on ingeniuscliq-core and requires the following peer dependencies:
react>= 18.0.0react-dom>= 18.0.0zustand>= 5.0.0
Usage
Basic Setup
import { CoreReviewBuilder } from 'ingeniuscliq-reviews'
// Create the review store
const useReviewStore = new CoreReviewBuilder().build()
// Use in your components
function MyComponent() {
const { reviews, fetchReviews, loading } = useReviewStore()
// Fetch reviews for a product
useEffect(() => {
fetchReviews(productId)
}, [productId])
return (
// Your UI
)
}Custom Service
import { CoreReviewBuilder, CoreReviewBaseService } from 'ingeniuscliq-reviews'
class MyCustomReviewService extends CoreReviewBaseService {
// Add custom methods
public getTopReviews(limit: number) {
return this.api.get(`${this.apiPrefix}/reviews/top`, { params: { limit } })
}
}
const useReviewStore = new CoreReviewBuilder(
new MyCustomReviewService()
).build()Structure
src/
├── classes/ # Builders (CoreReviewBuilder)
├── services/ # API services (CoreReviewBaseService)
├── types/ # TypeScript types and interfaces
├── components/ # React components (optional)
├── hooks/ # Custom hooks
├── helpers/ # Utility functions
├── constants/ # Constants
├── stores/ # Additional stores
├── lib/ # Library utilities
└── i18n/ # Internationalization
└── locales/ # Translation files (en.json, es.json)API Reference
CoreReviewBuilder
Creates a Zustand store for managing reviews.
class CoreReviewBuilder<T extends CoreReview<K>, K extends CoreUser>Methods:
build(): Returns a Zustand store with review management functionality
CoreReviewStore
The store created by CoreReviewBuilder provides:
interface CoreReviewStore {
reviews: BasePagination<CoreReview> | null
canReview: boolean
loading: boolean
error: string | null
fetchReviews(productId: string | number, params?: Record<string, any>, actions?: CoreActions): Promise<BaseApiResponsePagination<CoreReview>>
getReviews(): BasePagination<CoreReview> | null
fetchCanReview(productId: string | number): Promise<boolean>
createReview(data: Record<string, any>, actions?: CoreActions): Promise<CoreReview>
setReviews(reviews: BasePagination<CoreReview> | null): void
setLoading(loading: boolean): void
setError(error: string | null): void
reset(): void
}CoreReviewBaseService
Base service for review API operations.
class CoreReviewBaseService extends BaseServiceMethods:
getReviews(productId, params?): Fetch reviews for a productcanReview(productId): Check if user can review a productcreate(data): Create a new review
Types
CoreReview
interface CoreReview<T extends CoreUser> extends BaseType {
title: string
rating: number
comment: string
approved_at: string
reviewer: T
}License
MIT
