2022-05-31 15:49:04 +00:00
|
|
|
import queryClient from "@/apis/queries";
|
2022-03-16 06:26:15 +00:00
|
|
|
import { QueryKeys } from "@/apis/queries/keys";
|
2022-08-21 04:12:19 +00:00
|
|
|
import { LOG } from "@/utilities/console";
|
2022-05-31 15:49:04 +00:00
|
|
|
import { setCriticalError, setOnlineStatus } from "@/utilities/event";
|
|
|
|
import { showNotification } from "@mantine/notifications";
|
|
|
|
import { notification, task } from "../task";
|
2021-05-09 13:23:58 +00:00
|
|
|
|
2021-05-08 14:25:29 +00:00
|
|
|
export function createDefaultReducer(): SocketIO.Reducer[] {
|
|
|
|
return [
|
|
|
|
{
|
|
|
|
key: "connect",
|
2022-05-31 15:49:04 +00:00
|
|
|
any: () => setOnlineStatus(true),
|
2021-05-08 14:25:29 +00:00
|
|
|
},
|
2021-05-09 03:07:56 +00:00
|
|
|
{
|
|
|
|
key: "connect_error",
|
|
|
|
any: () => {
|
2022-05-31 15:49:04 +00:00
|
|
|
setCriticalError("Cannot connect to backend");
|
2021-05-09 03:07:56 +00:00
|
|
|
},
|
|
|
|
},
|
2021-05-08 14:25:29 +00:00
|
|
|
{
|
|
|
|
key: "disconnect",
|
2022-05-31 15:49:04 +00:00
|
|
|
any: () => setOnlineStatus(false),
|
2021-05-08 14:25:29 +00:00
|
|
|
},
|
2021-05-08 17:58:56 +00:00
|
|
|
{
|
|
|
|
key: "message",
|
2021-05-09 13:23:58 +00:00
|
|
|
update: (msg) => {
|
2022-05-31 15:49:04 +00:00
|
|
|
msg
|
|
|
|
.map((message) => notification.info("Notification", message))
|
|
|
|
.forEach(showNotification);
|
2021-05-08 17:58:56 +00:00
|
|
|
},
|
|
|
|
},
|
2021-05-09 13:23:58 +00:00
|
|
|
{
|
|
|
|
key: "progress",
|
2022-05-31 15:49:04 +00:00
|
|
|
update: task.updateProgress.bind(task),
|
|
|
|
delete: task.removeProgress.bind(task),
|
2021-05-09 13:23:58 +00:00
|
|
|
},
|
2021-05-08 14:25:29 +00:00
|
|
|
{
|
|
|
|
key: "series",
|
2022-01-22 13:35:11 +00:00
|
|
|
update: (ids) => {
|
2022-08-21 04:12:19 +00:00
|
|
|
LOG("info", "Invalidating series", ids);
|
2022-01-22 13:35:11 +00:00
|
|
|
ids.forEach((id) => {
|
|
|
|
queryClient.invalidateQueries([QueryKeys.Series, id]);
|
|
|
|
});
|
|
|
|
},
|
|
|
|
delete: (ids) => {
|
2022-08-21 04:12:19 +00:00
|
|
|
LOG("info", "Invalidating series", ids);
|
2022-01-22 13:35:11 +00:00
|
|
|
ids.forEach((id) => {
|
|
|
|
queryClient.invalidateQueries([QueryKeys.Series, id]);
|
|
|
|
});
|
|
|
|
},
|
2021-05-08 14:25:29 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "movie",
|
2022-01-22 13:35:11 +00:00
|
|
|
update: (ids) => {
|
2022-08-21 04:12:19 +00:00
|
|
|
LOG("info", "Invalidating movies", ids);
|
2022-01-22 13:35:11 +00:00
|
|
|
ids.forEach((id) => {
|
|
|
|
queryClient.invalidateQueries([QueryKeys.Movies, id]);
|
|
|
|
});
|
|
|
|
},
|
|
|
|
delete: (ids) => {
|
2022-08-21 04:12:19 +00:00
|
|
|
LOG("info", "Invalidating movies", ids);
|
2022-01-22 13:35:11 +00:00
|
|
|
ids.forEach((id) => {
|
|
|
|
queryClient.invalidateQueries([QueryKeys.Movies, id]);
|
|
|
|
});
|
|
|
|
},
|
2021-08-14 12:59:08 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "episode",
|
2022-01-22 13:35:11 +00:00
|
|
|
update: (ids) => {
|
2022-08-21 04:12:19 +00:00
|
|
|
// Currently invalidate episodes is impossible because we don't directly fetch episodes (we fetch episodes by series id)
|
|
|
|
// So we need to invalidate series instead
|
|
|
|
// TODO: Make a query for episodes and invalidate that instead
|
|
|
|
LOG("info", "Invalidating episodes", ids);
|
2022-01-22 13:35:11 +00:00
|
|
|
ids.forEach((id) => {
|
2022-08-21 04:12:19 +00:00
|
|
|
const episode = queryClient.getQueryData<Item.Episode>([
|
|
|
|
QueryKeys.Episodes,
|
|
|
|
id,
|
|
|
|
]);
|
|
|
|
if (episode !== undefined) {
|
|
|
|
queryClient.invalidateQueries([
|
|
|
|
QueryKeys.Series,
|
|
|
|
episode.sonarrSeriesId,
|
|
|
|
]);
|
|
|
|
}
|
2022-01-22 13:35:11 +00:00
|
|
|
});
|
|
|
|
},
|
|
|
|
delete: (ids) => {
|
2022-08-21 04:12:19 +00:00
|
|
|
LOG("info", "Invalidating episodes", ids);
|
2022-01-22 13:35:11 +00:00
|
|
|
ids.forEach((id) => {
|
2022-08-21 04:12:19 +00:00
|
|
|
const episode = queryClient.getQueryData<Item.Episode>([
|
|
|
|
QueryKeys.Episodes,
|
|
|
|
id,
|
|
|
|
]);
|
|
|
|
if (episode !== undefined) {
|
|
|
|
queryClient.invalidateQueries([
|
|
|
|
QueryKeys.Series,
|
|
|
|
episode.sonarrSeriesId,
|
|
|
|
]);
|
|
|
|
}
|
2022-01-22 13:35:11 +00:00
|
|
|
});
|
|
|
|
},
|
2021-05-08 14:25:29 +00:00
|
|
|
},
|
2021-07-22 13:13:07 +00:00
|
|
|
{
|
|
|
|
key: "episode-wanted",
|
2022-01-22 13:35:11 +00:00
|
|
|
update: (ids) => {
|
|
|
|
// Find a better way to update wanted
|
|
|
|
queryClient.invalidateQueries([QueryKeys.Episodes, QueryKeys.Wanted]);
|
|
|
|
},
|
|
|
|
delete: () => {
|
|
|
|
queryClient.invalidateQueries([QueryKeys.Episodes, QueryKeys.Wanted]);
|
|
|
|
},
|
2021-07-22 13:13:07 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "movie-wanted",
|
2022-01-22 13:35:11 +00:00
|
|
|
update: (ids) => {
|
|
|
|
// Find a better way to update wanted
|
|
|
|
queryClient.invalidateQueries([QueryKeys.Movies, QueryKeys.Wanted]);
|
|
|
|
},
|
|
|
|
delete: () => {
|
|
|
|
queryClient.invalidateQueries([QueryKeys.Movies, QueryKeys.Wanted]);
|
|
|
|
},
|
2021-07-22 13:13:07 +00:00
|
|
|
},
|
2021-05-08 14:25:29 +00:00
|
|
|
{
|
|
|
|
key: "settings",
|
2022-01-22 13:35:11 +00:00
|
|
|
any: () => {
|
|
|
|
queryClient.invalidateQueries([QueryKeys.System]);
|
|
|
|
},
|
2021-05-08 14:25:29 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "languages",
|
2022-01-22 13:35:11 +00:00
|
|
|
any: () => {
|
|
|
|
queryClient.invalidateQueries([QueryKeys.System, QueryKeys.Languages]);
|
|
|
|
},
|
2021-05-08 14:25:29 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "badges",
|
2022-01-22 13:35:11 +00:00
|
|
|
any: () => {
|
|
|
|
queryClient.invalidateQueries([QueryKeys.System, QueryKeys.Badges]);
|
|
|
|
},
|
2021-08-14 12:59:08 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "movie-history",
|
2022-01-22 13:35:11 +00:00
|
|
|
any: () => {
|
|
|
|
queryClient.invalidateQueries([QueryKeys.Movies, QueryKeys.History]);
|
|
|
|
},
|
2021-08-14 12:59:08 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "movie-blacklist",
|
2022-01-22 13:35:11 +00:00
|
|
|
any: () => {
|
|
|
|
queryClient.invalidateQueries([QueryKeys.Movies, QueryKeys.Blacklist]);
|
|
|
|
},
|
2021-08-14 12:59:08 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "episode-history",
|
2022-01-22 13:35:11 +00:00
|
|
|
any: () => {
|
|
|
|
queryClient.invalidateQueries([QueryKeys.Episodes, QueryKeys.History]);
|
|
|
|
},
|
2021-08-14 12:59:08 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "episode-blacklist",
|
2022-01-22 13:35:11 +00:00
|
|
|
any: () => {
|
|
|
|
queryClient.invalidateQueries([
|
|
|
|
QueryKeys.Episodes,
|
|
|
|
QueryKeys.Blacklist,
|
|
|
|
]);
|
|
|
|
},
|
2021-08-14 12:59:08 +00:00
|
|
|
},
|
2021-08-30 02:05:54 +00:00
|
|
|
{
|
|
|
|
key: "reset-episode-wanted",
|
2022-01-22 13:35:11 +00:00
|
|
|
any: () => {
|
|
|
|
queryClient.invalidateQueries([QueryKeys.Episodes, QueryKeys.Wanted]);
|
|
|
|
},
|
2021-08-30 02:05:54 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "reset-movie-wanted",
|
2022-01-22 13:35:11 +00:00
|
|
|
any: () => {
|
|
|
|
queryClient.invalidateQueries([QueryKeys.Movies, QueryKeys.Wanted]);
|
|
|
|
},
|
2021-08-30 02:05:54 +00:00
|
|
|
},
|
2021-08-14 12:59:08 +00:00
|
|
|
{
|
|
|
|
key: "task",
|
2022-01-22 13:35:11 +00:00
|
|
|
any: () => {
|
|
|
|
queryClient.invalidateQueries([QueryKeys.System, QueryKeys.Tasks]);
|
|
|
|
},
|
2021-05-08 14:25:29 +00:00
|
|
|
},
|
|
|
|
];
|
|
|
|
}
|