Skip to content

Commit 6dffa68

Browse files
committed
fix: init and use store with react store api
1 parent 53af3bf commit 6dffa68

File tree

6 files changed

+50
-15
lines changed

6 files changed

+50
-15
lines changed

.changeset/rotten-bottles-worry.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@msw-dev-tool/react": patch
3+
---
4+
5+
use `useHandlerStore` api from core package

packages/react/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@
4141
"peerDependencies": {
4242
"@msw-dev-tool/core": "workspace:*",
4343
"msw": "^2.7.0",
44-
"react": "^18.0.0 || ^19.0.0",
45-
"react-dom": "^18.0.0 || ^19.0.0"
44+
"react": "^18 || ^19",
45+
"react-dom": "^18 || ^19"
4646
},
4747
"devDependencies": {
4848
"@eslint/js": "^9.24.0",
@@ -51,8 +51,8 @@
5151
"@rollup/plugin-node-resolve": "^15.3.1",
5252
"@rollup/plugin-typescript": "^11.1.3",
5353
"@tailwindcss/postcss": "^4.1.4",
54-
"@types/react": "^18.3.18",
55-
"@types/react-dom": "^18.3.5",
54+
"@types/react": "^18 || ^19",
55+
"@types/react-dom": "^18 || ^19",
5656
"eslint": "^9.24.0",
5757
"eslint-plugin-react": "^7.37.5",
5858
"globals": "^16.0.0",

packages/react/src/ui/DevToolContent/HandlerTable/BehaviorSelect.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Row } from "@tanstack/react-table";
22
import React from "react";
33
import {
44
FlattenHandler,
5-
handlerStore,
5+
useHandlerStore,
66
HttpHandlerBehavior,
77
} from "@msw-dev-tool/core";
88
import { Select } from "../../Components/Select";
@@ -14,7 +14,8 @@ const options = Object.values(HttpHandlerBehavior).map((behavior) => ({
1414

1515
export const BehaviorSelect = ({ row }: { row: Row<FlattenHandler> }) => {
1616
const id = row.original.id;
17-
const { setHandlerBehavior, getHandlerBehavior } = handlerStore();
17+
const setHandlerBehavior = useHandlerStore((state)=>state.setHandlerBehavior);
18+
const getHandlerBehavior = useHandlerStore((state)=>state.getHandlerBehavior);
1819

1920
return (
2021
<Select

packages/react/src/ui/DevToolContent/ToolButtonGroup/HandlerForm.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { getOptions } from "./util";
99
import {
1010
handlerSchema,
1111
HandlerSchema,
12-
handlerStore,
12+
useHandlerStore,
1313
HttpMethod,
1414
StringHttpStatusCode,
1515
MimeType,
@@ -28,7 +28,7 @@ const statusOptions = getOptions(StringHttpStatusCode);
2828
const mimeTypeOptions = getOptions(MimeType);
2929

3030
export const HandlerForm = ({ onClose }: HandlerFormProps) => {
31-
const { addTempHandler } = handlerStore();
31+
const addTempHandler = useHandlerStore((state)=>state.addTempHandler);
3232

3333
const {
3434
register,

packages/react/src/ui/DevToolContent/ToolButtonGroup/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ import {
1212
import { HandlerForm } from "./HandlerForm";
1313
import { CloseButton } from "../../Components/CloseButton";
1414
import { usePortalContainer } from "../../PortalContainerProvider";
15-
import { handlerStore } from "@msw-dev-tool/core";
15+
import { useHandlerStore } from "@msw-dev-tool/core";
1616
import { Flex } from "../../Components/Flex";
1717
import { Button } from "../../Components/Button";
1818
import { DialogOverlay } from "../../Components/DialogOverlay";
1919

2020
export const ToolButtonGroup = () => {
21-
const { resetMSWDevTool } = handlerStore();
21+
const resetMSWDevTool = useHandlerStore((state)=>state.resetMSWDevTool);
2222
const [isDialogOpen, setIsDialogOpen] = useState(false);
2323

2424
const container = usePortalContainer();

packages/react/src/ui/DevToolContent/hook/useFlattenHandlersTable.tsx

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
} from "@tanstack/react-table";
77
import React, { useMemo } from "react";
88
import { BehaviorSelect } from "../HandlerTable/BehaviorSelect";
9-
import { FlattenHandler, handlerStore } from "@msw-dev-tool/core";
9+
import { FlattenHandler, useHandlerStore } from "@msw-dev-tool/core";
1010
import { DebugIcon } from "../../Components/DebugIcon";
1111
import { usePortalContainer } from "../../PortalContainerProvider";
1212
import {
@@ -22,11 +22,16 @@ import { Button } from "../../Components/Button";
2222
import { HandlerDebugger } from "../HandlerDebugger";
2323
import { Flex } from "../../Components/Flex";
2424
import { CloseButton } from "../../Components/CloseButton";
25+
import { TrashIcon } from "@radix-ui/react-icons";
26+
27+
const columnHelper = createColumnHelper<FlattenHandler>();
28+
2529

2630
export const useFlattenHandlersTable = () => {
27-
const { flattenHandlers } = handlerStore();
31+
const flattenHandlers = useHandlerStore((state)=>state.flattenHandlers);
32+
const removeTempHandler = useHandlerStore((state)=>state.removeTempHandler);
33+
const container = usePortalContainer();
2834

29-
const columnHelper = createColumnHelper<FlattenHandler>();
3035
const columns: ColumnDef<FlattenHandler, any>[] = useMemo(() => {
3136
return [
3237
columnHelper.accessor("path", {
@@ -66,7 +71,6 @@ export const useFlattenHandlersTable = () => {
6671
columnHelper.display({
6772
header: "Debug",
6873
cell: ({ row }) => {
69-
const container = usePortalContainer();
7074

7175
return (
7276
<Dialog>
@@ -93,8 +97,33 @@ export const useFlattenHandlersTable = () => {
9397
);
9498
},
9599
}),
100+
columnHelper.display({
101+
header: "Delete",
102+
cell: ({ row }) => {
103+
const isTemp = row.original.type === "temp";
104+
return (
105+
<Button
106+
variant="ghost"
107+
color="danger"
108+
onClick={() => {
109+
removeTempHandler(row.original.id);
110+
}}
111+
disabled={!isTemp}
112+
title={
113+
isTemp
114+
? "Delete this handler"
115+
: "Handlers generated from codebase cannot be deleted"
116+
}
117+
className={isTemp ? "text-red-500" : "text-gray-300 cursor-not-allowed"}
118+
>
119+
<TrashIcon />
120+
</Button>
121+
);
122+
},
123+
id: "delete",
124+
}),
96125
];
97-
}, [flattenHandlers]);
126+
}, [flattenHandlers, removeTempHandler]);
98127

99128
const table = useReactTable({
100129
columns,

0 commit comments

Comments
 (0)