Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DeleteButton doesn't work #578

Open
wiktorpikosz opened this issue Jul 29, 2024 · 1 comment
Open

DeleteButton doesn't work #578

wiktorpikosz opened this issue Jul 29, 2024 · 1 comment

Comments

@wiktorpikosz
Copy link

API Platform version(s) affected: x.y.z
Backend: v3.2.13
Admin: 3.4.9

Description
doesn't work for the list of items. I can click on them and send the get collection or the get request, but don't send a delete request. The element is removed from the list but after a few seconds the list is refreshed and is again on the list.

How to reproduce
I created a list in this way:

const UserList = () => {
  return (
    <ListGuesser>
      <TextField source="originId" label="ID" sortBy="id" />
      <FieldGuesser source="email" />
      <FieldGuesser source="createdAt" />
      <FieldGuesser source="confirmed" sortable={false} />
      <FieldGuesser source="roles" sortable={false} />
      <LoginAsUserButton />
      <DeleteButton />
      <EditButton />
    </ListGuesser>
  );

I can click on the button, but the DELETE request isn't sent.

Possible Solution
I can guess that the dataProvider has some issues. Or this button as a component from react-admin isn't supported.

Additional Context
I used custom authorization and data provider.

const getHeaders = (): HeadersInit => {
  const userToken = token();
  return {
    Authorization: `Bearer ${userToken}`,
  };
};

const httpClient = (url: URL, options: any = {}) => {
  return baseFetchHydra(url, {
    headers: getHeaders,
  });
};

const apiDocumentationParser = async (entrypointUrl: string) => {
  try {
    return await parseHydraDocumentation(entrypointUrl, {
      headers: getHeaders,
    });
  } catch (result: any) {
    const { api, response, status } = result;

    if (status !== 401 || !response) {
      throw result;
    }

    localStorage.removeItem("auth");

    return {
      api,
      response,
      status,
    };
  }
};

const dataProvider = hydraDataProvider({
  entrypoint: entrypoint,
  httpClient: httpClient,
  apiDocumentationParser: apiDocumentationParser,
});
const schemaAnalyzer = hydraSchemaAnalyzer();

function App() {
  return (
    <HydraAdmin
      entrypoint={entrypoint}
      authProvider={authProvider}
      dataProvider={dataProvider}
      schemaAnalyzer={schemaAnalyzer}
      requireAuth
    >
      <ResourceGuesser name="users" list={UserList} />
    </HydraAdmin>
  );
}
@wiktorpikosz wiktorpikosz changed the title DeleteButton doesn't worl DeleteButton doesn't work Jul 29, 2024
@wiktorpikosz
Copy link
Author

My mistake in the client:

const httpClient = (url: URL, options: any = {}) => {
  return baseFetchHydra(url, {
    ...options,
    headers: getHeaders,
  });
};

This was the reason why the DELETE request was sent as GET because the information with the method from the options parameter was removed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant