Skip to content

Commit bfb2c9c

Browse files
feat(kbar): remove deprecated api
1 parent f9bb68f commit bfb2c9c

4 files changed

Lines changed: 71 additions & 125 deletions

File tree

packages/kbar/src/hooks/useRefineKbar/index.tsx

Lines changed: 16 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
import { useEffect, useState, useContext } from "react";
22
import {
3-
useNavigation,
43
useDelete,
54
useTranslate,
65
useResource,
76
type IResourceItem,
87
useCanWithoutCache,
98
useUserFriendlyName,
10-
useRouterType,
119
useGo,
10+
useResourceParams,
1211
} from "@refinedev/core";
1312
import {
1413
useRegisterActions,
@@ -31,23 +30,12 @@ enum RefineKbarActionType {
3130

3231
export const useRefineKbar = (): void => {
3332
const t = useTranslate();
34-
const {
35-
resource: resourceFromParams,
36-
resources,
37-
id: idFromParams,
38-
action: actionFromParams,
39-
} = useResource();
40-
const routerType = useRouterType();
33+
const { resource: resourceFromParams, resources } = useResource();
34+
const { id: idFromParams, action: actionFromParams } = useResourceParams();
4135
const getToPath = useGetToPath();
4236
const go = useGo();
4337
const { mutate } = useDelete();
44-
const {
45-
push,
46-
list: goToList,
47-
create: goToCreate,
48-
show: goToShow,
49-
edit: goToEdit,
50-
} = useNavigation();
38+
5139
const getUserFriendlyName = useUserFriendlyName();
5240

5341
const kbarContext = useContext(KBarContext);
@@ -94,31 +82,13 @@ export const useRefineKbar = (): void => {
9482
};
9583

9684
const createActionWithResource = async (resource: IResourceItem) => {
97-
const {
98-
name,
99-
label: deprecatedLabel,
100-
list,
101-
create,
102-
canCreate,
103-
canEdit,
104-
canShow,
105-
icon: deprecatedIcon,
106-
show,
107-
canDelete: deprecatedCanDelete,
108-
edit,
109-
route,
110-
} = resource;
85+
const { name, list, create, show, edit } = resource;
11186

112-
const label =
113-
resource?.meta?.label ?? resource?.options?.label ?? deprecatedLabel;
87+
const label = resource?.meta?.label;
11488

115-
const icon =
116-
resource?.meta?.icon ?? resource?.options?.icon ?? deprecatedIcon;
89+
const icon = resource?.meta?.icon;
11790

118-
const canDelete =
119-
resource?.meta?.canDelete ??
120-
resource?.options?.canDelete ??
121-
deprecatedCanDelete;
91+
const canDelete = resource?.meta?.canDel;
12292

12393
const section =
12494
label ??
@@ -149,23 +119,18 @@ export const useRefineKbar = (): void => {
149119
const p = getToPath({
150120
resource,
151121
action: "list",
152-
legacy: routerType === "legacy",
153122
});
154123

155124
if (p) {
156-
if (routerType === "legacy") {
157-
push(p);
158-
} else {
159-
go({ to: p });
160-
}
125+
go({ to: p });
161126
}
162127
},
163128
}),
164129
);
165130
}
166131
}
167132
if (
168-
(canCreate || !!create) &&
133+
(resource?.meta?.canCreate || !!create) &&
169134
create &&
170135
(RefineKbarActionType.Create !== actionFromParams ||
171136
resourceFromParams?.name !== name)
@@ -187,15 +152,10 @@ export const useRefineKbar = (): void => {
187152
const p = getToPath({
188153
resource,
189154
action: "create",
190-
legacy: routerType === "legacy",
191155
});
192156

193157
if (p) {
194-
if (routerType === "legacy") {
195-
push(p);
196-
} else {
197-
go({ to: p });
198-
}
158+
go({ to: p });
199159
}
200160
},
201161
}),
@@ -205,7 +165,7 @@ export const useRefineKbar = (): void => {
205165

206166
if (resourceFromParams?.name === name && idFromParams) {
207167
if (
208-
(canShow || !!show) &&
168+
(resource?.meta?.canShow || !!show) &&
209169
show &&
210170
RefineKbarActionType.Show !== actionFromParams
211171
) {
@@ -225,26 +185,21 @@ export const useRefineKbar = (): void => {
225185
const p = getToPath({
226186
resource,
227187
action: "show",
228-
legacy: routerType === "legacy",
229188
meta: {
230189
id: idFromParams,
231190
},
232191
});
233192

234193
if (p) {
235-
if (routerType === "legacy") {
236-
push(p);
237-
} else {
238-
go({ to: p });
239-
}
194+
go({ to: p });
240195
}
241196
},
242197
}),
243198
);
244199
}
245200
}
246201
if (
247-
(canEdit || !!edit) &&
202+
(resource?.meta?.canEdit || !!edit) &&
248203
edit &&
249204
RefineKbarActionType.Edit !== actionFromParams
250205
) {
@@ -263,18 +218,13 @@ export const useRefineKbar = (): void => {
263218
const p = getToPath({
264219
resource,
265220
action: "edit",
266-
legacy: routerType === "legacy",
267221
meta: {
268222
id: idFromParams,
269223
},
270224
});
271225

272226
if (p) {
273-
if (routerType === "legacy") {
274-
push(p);
275-
} else {
276-
go({ to: p });
277-
}
227+
go({ to: p });
278228
}
279229
},
280230
}),
@@ -316,15 +266,10 @@ export const useRefineKbar = (): void => {
316266
const p = getToPath({
317267
resource,
318268
action: "list",
319-
legacy: routerType === "legacy",
320269
});
321270

322271
if (p) {
323-
if (routerType === "legacy") {
324-
push(p);
325-
} else {
326-
go({ to: p });
327-
}
272+
go({ to: p });
328273
}
329274
},
330275
},

packages/kbar/test/dataMocks.ts

Lines changed: 49 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
import { useParams, useLocation, Link, useNavigate } from "react-router";
2-
3-
/* import {
4-
IDataContext,
5-
IRouterContext,
6-
IAccessControlContext,
7-
ILiveContext,
8-
} from "@refinedev/core"; */
1+
import type {
2+
Action,
3+
IResourceItem,
4+
ParsedParams,
5+
RouterProvider,
6+
} from "@refinedev/core";
97

108
export const posts = [
119
{
@@ -51,29 +49,51 @@ const MockDataProvider = () => {
5149

5250
export const MockJSONServer = MockDataProvider() as any;
5351

54-
export const MockRouterProvider = {
55-
useHistory: () => {
56-
const navigate = useNavigate();
57-
58-
return {
59-
push: navigate,
60-
replace: (path: string) => {
61-
navigate(path, { replace: true });
62-
},
63-
goBack: () => {
64-
navigate(-1);
65-
},
66-
};
67-
},
68-
useLocation,
69-
useParams: () => {
70-
const params = useParams();
52+
export const MockRouterProvider = ({
53+
pathname,
54+
params,
55+
resource,
56+
action,
57+
id,
58+
fns,
59+
}: {
60+
pathname?: string;
61+
params?: ParsedParams;
62+
resource?: IResourceItem;
63+
action?: Action;
64+
id?: string;
65+
fns?: Partial<RouterProvider>;
66+
} = {}): RouterProvider => {
67+
const routerProvider: RouterProvider = {
68+
go: () => {
69+
return ({ type }) => {
70+
if (type === "path") return "";
71+
return undefined;
72+
};
73+
},
74+
parse: () => {
75+
return () => {
76+
return {
77+
params: {
78+
...params,
79+
},
80+
pathname,
81+
resource: resource,
82+
action: action,
83+
id: id || undefined,
84+
};
85+
};
86+
},
87+
back: () => {
88+
return () => undefined;
89+
},
90+
Link: () => null,
91+
...fns,
92+
};
7193

72-
return params as any;
73-
},
74-
Link,
75-
Prompt: () => null,
94+
return routerProvider;
7695
};
96+
7797
export const MockAccessControlProvider: any = {
7898
can: () => Promise.resolve({ can: true }),
7999
};

packages/kbar/test/index.tsx

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,52 +7,35 @@ import { MockRouterProvider, MockJSONServer } from "@test";
77
import type {
88
I18nProvider,
99
AccessControlProvider,
10-
LegacyAuthProvider,
1110
DataProvider,
1211
NotificationProvider,
1312
IResourceItem,
13+
RouterBindings,
1414
} from "@refinedev/core";
1515

1616
import { RefineKbarProvider } from "../src/index";
1717

18-
/* interface ITestWrapperProps {
19-
authProvider?: IAuthContext;
20-
dataProvider?: IDataContext;
21-
i18nProvider?: I18nProvider;
22-
accessControlProvider?: IAccessControlContext;
23-
liveProvider?: ILiveContext;
24-
resources?: IResourceItem[];
25-
children?: React.ReactNode;
26-
routerInitialEntries?: string[];
27-
refineProvider?: IRefineContextProvider;
28-
} */
29-
30-
const List = () => {
31-
return <div>hede</div>;
32-
};
3318
export interface ITestWrapperProps {
3419
dataProvider?: DataProvider;
3520
authProvider?: AuthProvider;
36-
legacyAuthProvider?: LegacyAuthProvider;
3721
resources?: IResourceItem[];
22+
routerProvider?: RouterBindings;
3823
notificationProvider?: NotificationProvider;
3924
accessControlProvider?: AccessControlProvider;
4025
i18nProvider?: I18nProvider;
4126
routerInitialEntries?: string[];
42-
DashboardPage?: React.FC;
4327
}
4428

4529
export const TestWrapper: (
4630
props: ITestWrapperProps,
4731
) => React.FC<{ children?: React.ReactNode }> = ({
4832
dataProvider,
4933
authProvider,
50-
legacyAuthProvider,
34+
routerProvider,
5135
resources,
5236
notificationProvider,
5337
accessControlProvider,
5438
routerInitialEntries,
55-
DashboardPage,
5639
i18nProvider,
5740
}) => {
5841
// Previously, MemoryRouter was used in this wrapper. However, the
@@ -74,13 +57,11 @@ export const TestWrapper: (
7457
<Refine
7558
dataProvider={dataProvider ?? MockJSONServer}
7659
i18nProvider={i18nProvider}
77-
legacyRouterProvider={MockRouterProvider}
7860
authProvider={authProvider}
79-
legacyAuthProvider={legacyAuthProvider}
8061
notificationProvider={notificationProvider}
81-
resources={resources ?? [{ name: "posts", list: List }]}
62+
routerProvider={routerProvider ?? MockRouterProvider()}
63+
resources={resources ?? [{ name: "posts", list: "/list" }]}
8264
accessControlProvider={accessControlProvider}
83-
DashboardPage={DashboardPage ?? undefined}
8465
options={{ disableTelemetry: true }}
8566
>
8667
{children}

packages/kbar/test/jest.setup.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import "@testing-library/jest-dom";
2-
import "@testing-library/jest-dom/extend-expect";
2+
import "@testing-library/react";
33
import { TextEncoder, TextDecoder } from "util";
44

55
global.TextEncoder = TextEncoder;

0 commit comments

Comments
 (0)