mirror of
https://github.com/wassname/Open-Assistant.git
synced 2026-07-13 00:50:06 +08:00
2a8d38f058
Fix set_label id missing in payload use frontend_message_id pre-commit Refactor api fetcher/poster to axios create lint Remove string literal for path Revert oasst_api_client.ts Fix warning httpStatusCode OasstError optional parameter Refactor remove api base url for local api Lint add blank line
28 lines
965 B
TypeScript
28 lines
965 B
TypeScript
import { useState } from "react";
|
|
import { get, post } from "src/lib/api";
|
|
import { BaseTask, TaskResponse } from "src/types/Task";
|
|
import useSWRImmutable from "swr/immutable";
|
|
import useSWRMutation from "swr/mutation";
|
|
|
|
export const useGenericTaskAPI = <TaskType extends BaseTask>(taskApiEndpoint: string) => {
|
|
type ConcreteTaskResponse = TaskResponse<TaskType>;
|
|
|
|
const [tasks, setTasks] = useState<ConcreteTaskResponse[]>([]);
|
|
|
|
const { isLoading, mutate, error } = useSWRImmutable<ConcreteTaskResponse>("/api/new_task/" + taskApiEndpoint, get, {
|
|
onSuccess: (data) => setTasks([data]),
|
|
revalidateOnMount: true,
|
|
dedupingInterval: 500,
|
|
});
|
|
|
|
const { trigger } = useSWRMutation("/api/update_task", post, {
|
|
onSuccess: async (response) => {
|
|
const newTask: ConcreteTaskResponse = response;
|
|
setTasks((oldTasks) => [...oldTasks, newTask]);
|
|
mutate();
|
|
},
|
|
});
|
|
|
|
return { tasks, isLoading, trigger, error, reset: mutate };
|
|
};
|