diff --git a/frontend/src/metabase/api/collection.ts b/frontend/src/metabase/api/collection.ts index 0c23a2704284474819629ce5287a2d42726d63ec..5ae6b29f39891266798ace97d0910a3043e6764c 100644 --- a/frontend/src/metabase/api/collection.ts +++ b/frontend/src/metabase/api/collection.ts @@ -26,6 +26,10 @@ import { export const collectionApi = Api.injectEndpoints({ endpoints: builder => ({ + /** + * @deprecated This endpoint is extremely slow on large instances, it should not be used + * you probably only need a few collections, just fetch those + */ listCollections: builder.query<Collection[], ListCollectionsRequest>({ query: params => ({ method: "GET", diff --git a/frontend/src/metabase/collections/components/CreateCollectionForm/CreateCollectionForm.tsx b/frontend/src/metabase/collections/components/CreateCollectionForm/CreateCollectionForm.tsx index 1b387ecd60d790dc79fea3e36f1b0054efd6eb47..35dd389d02e33c319fdfa0d029bab4505c8f7289 100644 --- a/frontend/src/metabase/collections/components/CreateCollectionForm/CreateCollectionForm.tsx +++ b/frontend/src/metabase/collections/components/CreateCollectionForm/CreateCollectionForm.tsx @@ -22,7 +22,7 @@ import * as Errors from "metabase/lib/errors"; import type { Collection } from "metabase-types/api"; import type { State } from "metabase-types/store"; -import FormAuthorityLevelFieldContainer from "../../containers/FormAuthorityLevelFieldContainer"; +import { FormAuthorityLevelField } from "../../containers/FormAuthorityLevelFieldContainer"; const COLLECTION_SCHEMA = Yup.object({ name: Yup.string() @@ -111,7 +111,7 @@ function CreateCollectionForm({ validationSchema={COLLECTION_SCHEMA} onSubmit={handleCreate} > - {({ dirty, values }) => ( + {({ dirty }) => ( <Form> <FormInput name="name" @@ -131,9 +131,7 @@ function CreateCollectionForm({ title={t`Collection it's saved in`} filterPersonalCollections={filterPersonalCollections} /> - <FormAuthorityLevelFieldContainer - collectionParentId={values.parent_id} - /> + <FormAuthorityLevelField /> <FormFooter> <FormErrorMessage inline /> {!!onCancel && ( diff --git a/frontend/src/metabase/collections/containers/FormAuthorityLevelFieldContainer.tsx b/frontend/src/metabase/collections/containers/FormAuthorityLevelFieldContainer.tsx index 0d1a7dcf5e591534f919a69ed433d2c9c40d0f61..f8c9013250a23982ca6d4bdecf78d8f9aaddafd6 100644 --- a/frontend/src/metabase/collections/containers/FormAuthorityLevelFieldContainer.tsx +++ b/frontend/src/metabase/collections/containers/FormAuthorityLevelFieldContainer.tsx @@ -1,31 +1,11 @@ -import { connect } from "react-redux"; import _ from "underscore"; -import Collections from "metabase/entities/collections"; +import { useSelector } from "metabase/lib/redux"; import { PLUGIN_COLLECTION_COMPONENTS } from "metabase/plugins"; import { getUserIsAdmin } from "metabase/selectors/user"; -import type { Collection } from "metabase-types/api"; -import type { State } from "metabase-types/store"; -interface OwnProps { - collectionParentId: Collection["id"]; -} - -interface StateProps { - isAdmin: boolean; -} - -type FormAuthorityLevelFieldContainerProps = OwnProps & StateProps; - -function mapStateToProps(state: State): StateProps { - return { - isAdmin: getUserIsAdmin(state), - }; -} - -function FormAuthorityLevelFieldContainer({ - isAdmin, -}: FormAuthorityLevelFieldContainerProps) { +export function FormAuthorityLevelField() { + const isAdmin = useSelector(getUserIsAdmin); if (!isAdmin) { return null; } @@ -34,10 +14,3 @@ function FormAuthorityLevelFieldContainer({ <PLUGIN_COLLECTION_COMPONENTS.FormCollectionAuthorityLevelPicker name="authority_level" /> ); } - -// eslint-disable-next-line import/no-default-export -- deprecated usage -export default _.compose( - // Ensures there's data for the `collectionsMap` prop - Collections.loadList({ loadingAndErrorWrapper: false }), - connect(mapStateToProps), -)(FormAuthorityLevelFieldContainer);