@swoft/gtd-domain
Version:
Getting Things Done (GTD) productivity system - consolidated domain implementation
485 lines (481 loc) • 13.8 kB
JavaScript
import {
GTDClient
} from "../../chunk-KWIF3JSN.mjs";
import "../../chunk-GQ5XH56W.mjs";
import {
__name
} from "../../chunk-PAWJFY3S.mjs";
// src/adapters/react/provider.ts
import { createContext, useContext, useMemo, createElement } from "react";
var GTDClientContext = createContext(null);
function GTDProvider({ children, httpClient, basePath }) {
const client = useMemo(() => new GTDClient(httpClient, basePath), [
httpClient,
basePath
]);
return createElement(GTDClientContext.Provider, {
value: client
}, children);
}
__name(GTDProvider, "GTDProvider");
function useGTDClient() {
const client = useContext(GTDClientContext);
if (!client) {
throw new Error("useGTDClient must be used within a GTDProvider. Make sure to wrap your app with <GTDProvider httpClient={...}>");
}
return client;
}
__name(useGTDClient, "useGTDClient");
// src/adapters/react/hooks/use-inbox.ts
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
var INBOX_QUERY_KEY = [
"gtd",
"inbox"
];
function useInboxItems(filters) {
const client = useGTDClient();
return useQuery({
queryKey: [
...INBOX_QUERY_KEY,
filters
],
queryFn: /* @__PURE__ */ __name(() => client.getInboxItems(filters), "queryFn"),
staleTime: 30 * 1e3
});
}
__name(useInboxItems, "useInboxItems");
function useInboxItem(id) {
const client = useGTDClient();
return useQuery({
queryKey: [
...INBOX_QUERY_KEY,
id
],
queryFn: /* @__PURE__ */ __name(() => client.getInboxItem(id), "queryFn"),
enabled: !!id,
staleTime: 30 * 1e3
});
}
__name(useInboxItem, "useInboxItem");
function useCaptureInboxItem() {
const client = useGTDClient();
const queryClient = useQueryClient();
return useMutation({
mutationFn: /* @__PURE__ */ __name((request) => client.captureInboxItem(request), "mutationFn"),
onSuccess: /* @__PURE__ */ __name(() => {
queryClient.invalidateQueries({
queryKey: INBOX_QUERY_KEY
});
}, "onSuccess")
});
}
__name(useCaptureInboxItem, "useCaptureInboxItem");
function useClarifyInboxItem() {
const client = useGTDClient();
const queryClient = useQueryClient();
return useMutation({
mutationFn: /* @__PURE__ */ __name(({ id, request }) => client.clarifyInboxItem(id, request), "mutationFn"),
onSuccess: /* @__PURE__ */ __name((data, variables) => {
queryClient.setQueryData([
...INBOX_QUERY_KEY,
variables.id
], data);
queryClient.invalidateQueries({
queryKey: INBOX_QUERY_KEY,
exact: false
});
}, "onSuccess")
});
}
__name(useClarifyInboxItem, "useClarifyInboxItem");
function useProcessInboxItem() {
const client = useGTDClient();
const queryClient = useQueryClient();
return useMutation({
mutationFn: /* @__PURE__ */ __name(({ id, request }) => client.processInboxItem(id, request), "mutationFn"),
onSuccess: /* @__PURE__ */ __name(() => {
queryClient.invalidateQueries({
queryKey: [
"gtd"
]
});
}, "onSuccess")
});
}
__name(useProcessInboxItem, "useProcessInboxItem");
function useDeleteInboxItem() {
const client = useGTDClient();
const queryClient = useQueryClient();
return useMutation({
mutationFn: /* @__PURE__ */ __name((id) => client.deleteInboxItem(id), "mutationFn"),
onSuccess: /* @__PURE__ */ __name((_, id) => {
queryClient.removeQueries({
queryKey: [
...INBOX_QUERY_KEY,
id
]
});
queryClient.invalidateQueries({
queryKey: INBOX_QUERY_KEY,
exact: false
});
}, "onSuccess")
});
}
__name(useDeleteInboxItem, "useDeleteInboxItem");
// src/adapters/react/hooks/use-projects.ts
import { useQuery as useQuery2, useMutation as useMutation2, useQueryClient as useQueryClient2 } from "@tanstack/react-query";
var PROJECTS_QUERY_KEY = [
"gtd",
"projects"
];
function useProjects(filters) {
const client = useGTDClient();
return useQuery2({
queryKey: [
...PROJECTS_QUERY_KEY,
filters
],
queryFn: /* @__PURE__ */ __name(() => client.getProjects(filters), "queryFn"),
staleTime: 60 * 1e3
});
}
__name(useProjects, "useProjects");
function useProject(id) {
const client = useGTDClient();
return useQuery2({
queryKey: [
...PROJECTS_QUERY_KEY,
id
],
queryFn: /* @__PURE__ */ __name(() => client.getProject(id), "queryFn"),
enabled: !!id,
staleTime: 60 * 1e3
});
}
__name(useProject, "useProject");
function useCreateProject() {
const client = useGTDClient();
const queryClient = useQueryClient2();
return useMutation2({
mutationFn: /* @__PURE__ */ __name((request) => client.createProject(request), "mutationFn"),
onSuccess: /* @__PURE__ */ __name(() => {
queryClient.invalidateQueries({
queryKey: PROJECTS_QUERY_KEY
});
}, "onSuccess")
});
}
__name(useCreateProject, "useCreateProject");
function useCompleteProject() {
const client = useGTDClient();
const queryClient = useQueryClient2();
return useMutation2({
mutationFn: /* @__PURE__ */ __name(({ id, completedBy, notes }) => client.completeProject(id, completedBy, notes), "mutationFn"),
onSuccess: /* @__PURE__ */ __name((data, variables) => {
queryClient.setQueryData([
...PROJECTS_QUERY_KEY,
variables.id
], data);
queryClient.invalidateQueries({
queryKey: PROJECTS_QUERY_KEY,
exact: false
});
}, "onSuccess")
});
}
__name(useCompleteProject, "useCompleteProject");
function useDeferProject() {
const client = useGTDClient();
const queryClient = useQueryClient2();
return useMutation2({
mutationFn: /* @__PURE__ */ __name((id) => client.deferProject(id), "mutationFn"),
onSuccess: /* @__PURE__ */ __name((data, id) => {
queryClient.setQueryData([
...PROJECTS_QUERY_KEY,
id
], data);
queryClient.invalidateQueries({
queryKey: PROJECTS_QUERY_KEY,
exact: false
});
}, "onSuccess")
});
}
__name(useDeferProject, "useDeferProject");
function useActivateProject() {
const client = useGTDClient();
const queryClient = useQueryClient2();
return useMutation2({
mutationFn: /* @__PURE__ */ __name((id) => client.activateProject(id), "mutationFn"),
onSuccess: /* @__PURE__ */ __name((data, id) => {
queryClient.setQueryData([
...PROJECTS_QUERY_KEY,
id
], data);
queryClient.invalidateQueries({
queryKey: PROJECTS_QUERY_KEY,
exact: false
});
}, "onSuccess")
});
}
__name(useActivateProject, "useActivateProject");
function useCancelProject() {
const client = useGTDClient();
const queryClient = useQueryClient2();
return useMutation2({
mutationFn: /* @__PURE__ */ __name((id) => client.cancelProject(id), "mutationFn"),
onSuccess: /* @__PURE__ */ __name((data, id) => {
queryClient.setQueryData([
...PROJECTS_QUERY_KEY,
id
], data);
queryClient.invalidateQueries({
queryKey: PROJECTS_QUERY_KEY,
exact: false
});
}, "onSuccess")
});
}
__name(useCancelProject, "useCancelProject");
function useDeleteProject() {
const client = useGTDClient();
const queryClient = useQueryClient2();
return useMutation2({
mutationFn: /* @__PURE__ */ __name((id) => client.deleteProject(id), "mutationFn"),
onSuccess: /* @__PURE__ */ __name((_, id) => {
queryClient.removeQueries({
queryKey: [
...PROJECTS_QUERY_KEY,
id
]
});
queryClient.invalidateQueries({
queryKey: PROJECTS_QUERY_KEY,
exact: false
});
}, "onSuccess")
});
}
__name(useDeleteProject, "useDeleteProject");
// src/adapters/react/hooks/use-actions.ts
import { useQuery as useQuery3, useMutation as useMutation3, useQueryClient as useQueryClient3 } from "@tanstack/react-query";
var ACTIONS_QUERY_KEY = [
"gtd",
"actions"
];
var CONTEXTS_QUERY_KEY = [
"gtd",
"contexts"
];
function useNextActions(filters) {
const client = useGTDClient();
return useQuery3({
queryKey: [
...ACTIONS_QUERY_KEY,
filters
],
queryFn: /* @__PURE__ */ __name(() => client.getNextActions(filters), "queryFn"),
staleTime: 30 * 1e3
});
}
__name(useNextActions, "useNextActions");
function useNextAction(id) {
const client = useGTDClient();
return useQuery3({
queryKey: [
...ACTIONS_QUERY_KEY,
id
],
queryFn: /* @__PURE__ */ __name(() => client.getNextAction(id), "queryFn"),
enabled: !!id,
staleTime: 30 * 1e3
});
}
__name(useNextAction, "useNextAction");
function useActionsByProject(projectId) {
const client = useGTDClient();
return useQuery3({
queryKey: [
...ACTIONS_QUERY_KEY,
"project",
projectId
],
queryFn: /* @__PURE__ */ __name(() => client.getActionsByProject(projectId), "queryFn"),
enabled: !!projectId,
staleTime: 30 * 1e3
});
}
__name(useActionsByProject, "useActionsByProject");
function useActionsByContext(context) {
const client = useGTDClient();
return useQuery3({
queryKey: [
...ACTIONS_QUERY_KEY,
"context",
context
],
queryFn: /* @__PURE__ */ __name(() => client.getActionsByContext(context), "queryFn"),
enabled: !!context,
staleTime: 30 * 1e3
});
}
__name(useActionsByContext, "useActionsByContext");
function useContexts() {
const client = useGTDClient();
return useQuery3({
queryKey: CONTEXTS_QUERY_KEY,
queryFn: /* @__PURE__ */ __name(() => client.getContexts(), "queryFn"),
staleTime: 5 * 60 * 1e3
});
}
__name(useContexts, "useContexts");
function useCreateNextAction() {
const client = useGTDClient();
const queryClient = useQueryClient3();
return useMutation3({
mutationFn: /* @__PURE__ */ __name((request) => client.createNextAction(request), "mutationFn"),
onSuccess: /* @__PURE__ */ __name((data) => {
queryClient.invalidateQueries({
queryKey: ACTIONS_QUERY_KEY
});
if (data.projectId) {
queryClient.invalidateQueries({
queryKey: [
...ACTIONS_QUERY_KEY,
"project",
data.projectId
]
});
}
if (data.context) {
queryClient.invalidateQueries({
queryKey: [
...ACTIONS_QUERY_KEY,
"context",
data.context
]
});
}
}, "onSuccess")
});
}
__name(useCreateNextAction, "useCreateNextAction");
function useAssignNextAction() {
const client = useGTDClient();
const queryClient = useQueryClient3();
return useMutation3({
mutationFn: /* @__PURE__ */ __name(({ id, request }) => client.assignNextAction(id, request), "mutationFn"),
onSuccess: /* @__PURE__ */ __name((data, variables) => {
queryClient.setQueryData([
...ACTIONS_QUERY_KEY,
variables.id
], data);
queryClient.invalidateQueries({
queryKey: ACTIONS_QUERY_KEY,
exact: false
});
}, "onSuccess")
});
}
__name(useAssignNextAction, "useAssignNextAction");
function useUnassignNextAction() {
const client = useGTDClient();
const queryClient = useQueryClient3();
return useMutation3({
mutationFn: /* @__PURE__ */ __name((id) => client.unassignNextAction(id), "mutationFn"),
onSuccess: /* @__PURE__ */ __name((data, id) => {
queryClient.setQueryData([
...ACTIONS_QUERY_KEY,
id
], data);
queryClient.invalidateQueries({
queryKey: ACTIONS_QUERY_KEY,
exact: false
});
}, "onSuccess")
});
}
__name(useUnassignNextAction, "useUnassignNextAction");
function useCompleteNextAction() {
const client = useGTDClient();
const queryClient = useQueryClient3();
return useMutation3({
mutationFn: /* @__PURE__ */ __name((id) => client.completeNextAction(id), "mutationFn"),
onSuccess: /* @__PURE__ */ __name((data, id) => {
queryClient.setQueryData([
...ACTIONS_QUERY_KEY,
id
], data);
queryClient.invalidateQueries({
queryKey: ACTIONS_QUERY_KEY,
exact: false
});
}, "onSuccess")
});
}
__name(useCompleteNextAction, "useCompleteNextAction");
function useDeleteNextAction() {
const client = useGTDClient();
const queryClient = useQueryClient3();
return useMutation3({
mutationFn: /* @__PURE__ */ __name((id) => client.deleteNextAction(id), "mutationFn"),
onSuccess: /* @__PURE__ */ __name((_, id) => {
queryClient.removeQueries({
queryKey: [
...ACTIONS_QUERY_KEY,
id
]
});
queryClient.invalidateQueries({
queryKey: ACTIONS_QUERY_KEY,
exact: false
});
}, "onSuccess")
});
}
__name(useDeleteNextAction, "useDeleteNextAction");
function useWeeklyReview(reviewedBy) {
const client = useGTDClient();
return useQuery3({
queryKey: [
"gtd",
"weekly-review",
reviewedBy
],
queryFn: /* @__PURE__ */ __name(() => client.getWeeklyReview(reviewedBy), "queryFn"),
staleTime: 60 * 1e3
});
}
__name(useWeeklyReview, "useWeeklyReview");
export {
GTDProvider,
useActionsByContext,
useActionsByProject,
useActivateProject,
useAssignNextAction,
useCancelProject,
useCaptureInboxItem,
useClarifyInboxItem,
useCompleteNextAction,
useCompleteProject,
useContexts,
useCreateNextAction,
useCreateProject,
useDeferProject,
useDeleteInboxItem,
useDeleteNextAction,
useDeleteProject,
useGTDClient,
useInboxItem,
useInboxItems,
useNextAction,
useNextActions,
useProcessInboxItem,
useProject,
useProjects,
useUnassignNextAction,
useWeeklyReview
};
//# sourceMappingURL=index.mjs.map