123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import { createStore } from 'zustand'
- import type { Features } from './types'
- import { Resolution, TransferMethod } from '@/types/app'
- export type FeaturesModal = {
- showFeaturesModal: boolean
- setShowFeaturesModal: (showFeaturesModal: boolean) => void
- }
- export type FeaturesState = {
- features: Features
- }
- export type FeaturesAction = {
- setFeatures: (features: Features) => void
- }
- export type FeatureStoreState = FeaturesState & FeaturesAction & FeaturesModal
- export type FeaturesStore = ReturnType<typeof createFeaturesStore>
- export const createFeaturesStore = (initProps?: Partial<FeaturesState>) => {
- const DEFAULT_PROPS: FeaturesState = {
- features: {
- moreLikeThis: {
- enabled: false,
- },
- opening: {
- enabled: false,
- },
- suggested: {
- enabled: false,
- },
- text2speech: {
- enabled: false,
- },
- speech2text: {
- enabled: false,
- },
- citation: {
- enabled: false,
- },
- moderation: {
- enabled: false,
- },
- file: {
- image: {
- enabled: false,
- detail: Resolution.high,
- number_limits: 3,
- transfer_methods: [TransferMethod.local_file, TransferMethod.remote_url],
- },
- },
- annotationReply: {
- enabled: false,
- },
- },
- }
- return createStore<FeatureStoreState>()(set => ({
- ...DEFAULT_PROPS,
- ...initProps,
- setFeatures: features => set(() => ({ features })),
- showFeaturesModal: false,
- setShowFeaturesModal: showFeaturesModal => set(() => ({ showFeaturesModal })),
- }))
- }
|