Skip to content

Commit

Permalink
add validation
Browse files Browse the repository at this point in the history
  • Loading branch information
IlyaBondar committed Jan 20, 2025
1 parent f326bad commit 4bccec0
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 26 deletions.
21 changes: 8 additions & 13 deletions apps/chat/src/components/Marketplace/MarketplaceFilterbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { useTranslation } from 'next-i18next';

import classNames from 'classnames';

import { EntityType } from '@/src/types/common';
import { MarketplaceFilters } from '@/src/types/marketplace';
import { Translation } from '@/src/types/translation';

import { useAppDispatch, useAppSelector } from '@/src/store/hooks';
Expand All @@ -22,7 +22,11 @@ import {
import { ModelsSelectors } from '@/src/store/models/models.reducers';
import { UISelectors } from '@/src/store/ui/ui.reducers';

import { FilterTypes, MarketplaceTabs } from '@/src/constants/marketplace';
import {
ENTITY_TYPES,
FilterTypes,
MarketplaceTabs,
} from '@/src/constants/marketplace';

import Tooltip from '../Common/Tooltip';

Expand Down Expand Up @@ -68,10 +72,7 @@ const FilterItem = ({
interface FilterSectionProps {
sectionName: string;
openedSections: Record<FilterTypes, boolean>;
selectedFilters: {
Type: string[];
Topics: string[];
};
selectedFilters: MarketplaceFilters;
filterValues: string[];
filterType: FilterTypes;
onToggleFilterSection: (filterType: FilterTypes) => void;
Expand Down Expand Up @@ -129,12 +130,6 @@ const FilterSection = ({
);
};

const entityTypes = [
EntityType.Model,
EntityType.Assistant,
EntityType.Application,
];

interface ActionButtonProps {
isOpen: boolean;
onClick: () => void;
Expand Down Expand Up @@ -262,7 +257,7 @@ export const MarketplaceFilterbar = () => {
<>
<FilterSection
sectionName={t('Type')}
filterValues={entityTypes}
filterValues={ENTITY_TYPES}
openedSections={openedSections}
selectedFilters={selectedFilters}
filterType={FilterTypes.ENTITY_TYPE}
Expand Down
8 changes: 8 additions & 0 deletions apps/chat/src/constants/marketplace.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { EntityType } from '../types/common';

export enum MarketplaceQueryParams {
fromConversation = 'fromConversation',
model = 'model',
Expand All @@ -23,3 +25,9 @@ export enum DeleteType {
DELETE,
REMOVE,
}

export const ENTITY_TYPES = [
EntityType.Model,
EntityType.Assistant,
EntityType.Application,
];
16 changes: 11 additions & 5 deletions apps/chat/src/store/marketplace/marketplace.epics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ import { AnyAction } from '@reduxjs/toolkit';

import { combineEpics } from 'redux-observable';

import { EntityType } from '@/src/types/common';
import { AppEpic } from '@/src/types/store';

import {
ENTITY_TYPES,
FilterTypes,
MarketplaceQueryParams,
MarketplaceTabs,
Expand Down Expand Up @@ -100,11 +102,12 @@ const initQueryParamsEpic: AppEpic = (action$, state$, { router }) =>
filter(MarketplaceActions.initQueryParams.match),
switchMap(() => {
const query = router.query;
const state = state$.value;

const actions: Observable<AnyAction>[] = [];
// application link
const modelReference = query[MarketplaceQueryParams.model];
const modelsMap = ModelsSelectors.selectModelsMap(state$.value);
const modelsMap = ModelsSelectors.selectModelsMap(state);
const model =
typeof modelReference === 'string'
? modelsMap[modelReference]
Expand Down Expand Up @@ -139,12 +142,15 @@ const initQueryParamsEpic: AppEpic = (action$, state$, { router }) =>
),
);
// filters
const types = ((query[MarketplaceQueryParams.types] as string) ?? '')
.split(',')
.filter(Boolean);
const existingTopics = ModelsSelectors.selectModelTopics(state);
const topics = ((query[MarketplaceQueryParams.topics] as string) ?? '')
.split(',')
.filter(Boolean);
.filter((topic) => topic && existingTopics.includes(topic));

const types = ((query[MarketplaceQueryParams.types] as string) ?? '')
.split(',')
.filter((type) => type && ENTITY_TYPES.includes(type as EntityType));

actions.push(
of(
MarketplaceActions.setFilters({
Expand Down
12 changes: 4 additions & 8 deletions apps/chat/src/store/marketplace/marketplace.reducers.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { PayloadAction, createSlice } from '@reduxjs/toolkit';

import { MarketplaceFilters } from '@/src/types/marketplace';

import { FilterTypes, MarketplaceTabs } from '@/src/constants/marketplace';

import * as MarketplaceSelectors from './marketplace.selectors';
Expand All @@ -9,14 +11,8 @@ import xor from 'lodash/xor';

export { MarketplaceSelectors };

interface Filters {
[FilterTypes.ENTITY_TYPE]: string[];
[FilterTypes.TOPICS]: string[];
// [FilterTypes.CAPABILITIES]: string[];
// [FilterTypes.ENVIRONMENT]: string[];
}
export interface MarketplaceState {
selectedFilters: Filters;
selectedFilters: MarketplaceFilters;
searchTerm: string;
selectedTab: MarketplaceTabs;
applyModelStatus: UploadStatus;
Expand All @@ -43,7 +39,7 @@ export const marketplaceSlice = createSlice({
initialState,
reducers: {
initQueryParams: (state) => state,
setFilters: (state, { payload }: PayloadAction<Filters>) => {
setFilters: (state, { payload }: PayloadAction<MarketplaceFilters>) => {
state.selectedFilters = payload;
},
setSelectedFilters: (
Expand Down
8 changes: 8 additions & 0 deletions apps/chat/src/types/marketplace.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { FilterTypes } from '../constants/marketplace';

export interface MarketplaceFilters {
[FilterTypes.ENTITY_TYPE]: string[];
[FilterTypes.TOPICS]: string[];
// [FilterTypes.CAPABILITIES]: string[];
// [FilterTypes.ENVIRONMENT]: string[];
}

0 comments on commit 4bccec0

Please sign in to comment.