diff --git a/livestore/livestore/examples/linearlite/src/pages/Board/index.tsx b/vulcan/linearite/src/pages/Board/Index.tsx index a8960c0..6ed7689 100644 --- a/livestore/livestore/examples/linearlite/src/pages/Board/index.tsx +++ b/vulcan/linearite/src/pages/Board/Index.tsx @@ -1,24 +1,14 @@ import TopFilter from '../../components/TopFilter' import IssueBoard from './IssueBoard' -// import { useFilterState } from '../../utils/filterState' -import { Issue } from '../../types' -import { querySQL, sql } from '@livestore/livestore' -import { filterStateToWhere } from '../../utils/filterState' -import { AppState } from '../../domain/schema' -import { useQuery } from '@livestore/livestore/react' - -const filterClause$ = querySQL(`select * from app_state WHERE key = 'filter_state';`) - // .getFirstRow({defaultValue: undefined }) - .pipe((filterStates) => { - // TODO this handling should be improved (see https://github.com/livestorejs/livestore/issues/22) - if (filterStates.length === 0) return '' - const filterStateObj = JSON.parse(filterStates[0]!.value) - return filterStateToWhere(filterStateObj) - }) -const issues$ = querySQL((get) => sql`SELECT * FROM issue ${get(filterClause$)} ORDER BY kanbanorder ASC`) +import { decodeFilterState } from '../../domain/SchemaType'; +import { first, useDB, useQuery2 } from '@vlcn.io/react'; +import { queries } from '../../domain/queries'; +import { DBName } from '../../domain/Schema'; function Board() { - const issues = useQuery(issues$) + const ctx = useDB(DBName) + const filterState = decodeFilterState(first(useQuery2(ctx, queries.filterState).data)) + const issues = useQuery2(ctx, queries.boardIssues(filterState)).data ?? [] return (