@larisarozin/dodone-shared 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +116 -0
- package/dist/api/routes.d.ts +66 -0
- package/dist/api/routes.js +87 -0
- package/dist/config/ConfigContext.d.ts +4 -0
- package/dist/config/ConfigContext.js +10 -0
- package/dist/config/ConfigProvider.d.ts +8 -0
- package/dist/config/ConfigProvider.js +8 -0
- package/dist/config/useConfig.d.ts +1 -0
- package/dist/config/useConfig.js +17 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.js +6 -0
- package/dist/hooks/auth/AuthContext.d.ts +6 -0
- package/dist/hooks/auth/AuthContext.js +10 -0
- package/dist/hooks/auth/AuthProvider.d.ts +6 -0
- package/dist/hooks/auth/AuthProvider.js +83 -0
- package/dist/hooks/auth/AuthState.d.ts +20 -0
- package/dist/hooks/auth/AuthState.js +7 -0
- package/dist/hooks/auth/useAuth.d.ts +3 -0
- package/dist/hooks/auth/useAuth.js +17 -0
- package/dist/hooks/useAllowanceHistories.d.ts +9 -0
- package/dist/hooks/useAllowanceHistories.js +87 -0
- package/dist/hooks/useAllowanceHistoryTaskItems.d.ts +7 -0
- package/dist/hooks/useAllowanceHistoryTaskItems.js +69 -0
- package/dist/hooks/useGrades.d.ts +5 -0
- package/dist/hooks/useGrades.js +50 -0
- package/dist/hooks/useNotificationPreferences.d.ts +9 -0
- package/dist/hooks/useNotificationPreferences.js +107 -0
- package/dist/hooks/useTaskCategories.d.ts +7 -0
- package/dist/hooks/useTaskCategories.js +70 -0
- package/dist/hooks/useTaskComments.d.ts +7 -0
- package/dist/hooks/useTaskComments.js +69 -0
- package/dist/hooks/useTaskGroups.d.ts +7 -0
- package/dist/hooks/useTaskGroups.js +70 -0
- package/dist/hooks/useTaskItems.d.ts +7 -0
- package/dist/hooks/useTaskItems.js +70 -0
- package/dist/hooks/useTaskKinds.d.ts +7 -0
- package/dist/hooks/useTaskKinds.js +70 -0
- package/dist/hooks/useTeam.d.ts +24 -0
- package/dist/hooks/useTeam.js +255 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.js +50 -0
- package/dist/types/AllowanceHistory.d.ts +66 -0
- package/dist/types/AllowanceHistory.js +7 -0
- package/dist/types/AllowanceInterval.d.ts +29 -0
- package/dist/types/AllowanceInterval.js +40 -0
- package/dist/types/ApiResponse.d.ts +7 -0
- package/dist/types/ApiResponse.js +7 -0
- package/dist/types/DeviceRegistration.d.ts +6 -0
- package/dist/types/DeviceRegistration.js +7 -0
- package/dist/types/TaskItem.d.ts +174 -0
- package/dist/types/TaskItem.js +16 -0
- package/dist/types/Team.d.ts +76 -0
- package/dist/types/Team.js +7 -0
- package/dist/types/User.d.ts +91 -0
- package/dist/types/User.js +7 -0
- package/dist/types/UserNotificationPreferences.d.ts +81 -0
- package/dist/types/UserNotificationPreferences.js +68 -0
- package/dist/utils/ApiClient.d.ts +204 -0
- package/dist/utils/ApiClient.js +608 -0
- package/dist/utils/paging.d.ts +305 -0
- package/dist/utils/paging.js +428 -0
- package/dist/utils/storage.d.ts +7 -0
- package/dist/utils/storage.js +37 -0
- package/dist/utils/utils.d.ts +0 -0
- package/dist/utils/utils.js +6 -0
- package/package.json +29 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025 Larisa Rozin
|
|
4
|
+
* dodone-shared - Task Management, Allowance & Bonus Tracking Application Package
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*/
|
|
7
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
11
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
12
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
13
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.useAllowanceHistoryTaskItems = useAllowanceHistoryTaskItems;
|
|
18
|
+
const react_1 = require("react");
|
|
19
|
+
const useAuth_1 = require("./auth/useAuth");
|
|
20
|
+
const useConfig_1 = require("../config/useConfig");
|
|
21
|
+
const ApiClient_1 = require("../utils/ApiClient");
|
|
22
|
+
function useAllowanceHistoryTaskItems(request) {
|
|
23
|
+
const { token } = (0, useAuth_1.useAuth)();
|
|
24
|
+
const { baseUrl } = (0, useConfig_1.useConfig)();
|
|
25
|
+
const [pagedListRequest, setPagedListRequest] = (0, react_1.useState)(request);
|
|
26
|
+
const [pagedAllowanceHistoryTaskItems, setPagedAllowanceHistoryTaskItems] = (0, react_1.useState)();
|
|
27
|
+
const [loadingAllowanceHistoryTaskItems, setLoadingAllowanceHistoryTaskItems] = (0, react_1.useState)(true);
|
|
28
|
+
const fetchAllowanceHistoryTaskItems = (0, react_1.useCallback)((requestToUse) => __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
const requestToFetch = requestToUse || pagedListRequest;
|
|
30
|
+
if (!token) {
|
|
31
|
+
setLoadingAllowanceHistoryTaskItems(false);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (!requestToFetch) {
|
|
35
|
+
console.error("No request available for fetching allowance history task items");
|
|
36
|
+
setLoadingAllowanceHistoryTaskItems(false);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
setLoadingAllowanceHistoryTaskItems(true);
|
|
40
|
+
try {
|
|
41
|
+
const apiClient = (0, ApiClient_1.createApiClient)(baseUrl, token);
|
|
42
|
+
const data = yield apiClient.allowanceHistories.getPagedTaskItemsList(requestToFetch);
|
|
43
|
+
if (!data || data.success === false) {
|
|
44
|
+
console.error("Failed to fetch allowance history task items:", (data === null || data === void 0 ? void 0 : data.message) || "Unknown error");
|
|
45
|
+
setLoadingAllowanceHistoryTaskItems(false);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
setPagedAllowanceHistoryTaskItems(data);
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
console.error("Error fetching allowance history task items:", err);
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
setLoadingAllowanceHistoryTaskItems(false);
|
|
55
|
+
}
|
|
56
|
+
}), [token, baseUrl]);
|
|
57
|
+
function refreshAllowanceHistoryTaskItems(request) {
|
|
58
|
+
setPagedListRequest(request);
|
|
59
|
+
// Pass the request directly to fetchAllowanceHistoryTaskItems to avoid state timing issues
|
|
60
|
+
fetchAllowanceHistoryTaskItems(request);
|
|
61
|
+
}
|
|
62
|
+
(0, react_1.useEffect)(() => {
|
|
63
|
+
// Only fetch on initial load if we have a valid request
|
|
64
|
+
if (pagedListRequest) {
|
|
65
|
+
fetchAllowanceHistoryTaskItems(pagedListRequest);
|
|
66
|
+
}
|
|
67
|
+
}, [fetchAllowanceHistoryTaskItems]);
|
|
68
|
+
return { pagedAllowanceHistoryTaskItems, loadingAllowanceHistoryTaskItems, refreshAllowanceHistoryTaskItems };
|
|
69
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025 Larisa Rozin
|
|
4
|
+
* dodone-shared - Task Management, Allowance & Bonus Tracking Application Package
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*/
|
|
7
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
11
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
12
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
13
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.useGrades = useGrades;
|
|
18
|
+
const react_1 = require("react");
|
|
19
|
+
const routes_1 = require("../api/routes");
|
|
20
|
+
const useAuth_1 = require("./auth/useAuth");
|
|
21
|
+
const useConfig_1 = require("../config/useConfig");
|
|
22
|
+
const ApiClient_1 = require("../utils/ApiClient");
|
|
23
|
+
function useGrades() {
|
|
24
|
+
const { token } = (0, useAuth_1.useAuth)();
|
|
25
|
+
const { baseUrl } = (0, useConfig_1.useConfig)();
|
|
26
|
+
const [grades, setGrades] = (0, react_1.useState)([]);
|
|
27
|
+
const [loading, setLoading] = (0, react_1.useState)(true);
|
|
28
|
+
const fetchGrades = (0, react_1.useCallback)(() => __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
if (!token) {
|
|
30
|
+
setLoading(false);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
setLoading(true);
|
|
34
|
+
try {
|
|
35
|
+
const apiClient = (0, ApiClient_1.createApiClient)(baseUrl, token);
|
|
36
|
+
const data = yield apiClient.get(routes_1.API_ROUTES.grades.getList());
|
|
37
|
+
setGrades(data);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.error("Error fetching grades:", error);
|
|
41
|
+
}
|
|
42
|
+
finally {
|
|
43
|
+
setLoading(false);
|
|
44
|
+
}
|
|
45
|
+
}), [token, baseUrl]);
|
|
46
|
+
(0, react_1.useEffect)(() => {
|
|
47
|
+
fetchGrades();
|
|
48
|
+
}, [fetchGrades]);
|
|
49
|
+
return { grades, loading };
|
|
50
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { UserNotificationPreferenceResponse, BulkNotificationPreferenceUpdateRequest, BulkNotificationPreferenceCreateRequest } from "../types/UserNotificationPreferences";
|
|
2
|
+
export declare function useNotificationPreferences(): {
|
|
3
|
+
notificationPreferences: UserNotificationPreferenceResponse[] | null;
|
|
4
|
+
createUserNotificationPreferences: (request: BulkNotificationPreferenceCreateRequest) => Promise<import("..").DataResponse<UserNotificationPreferenceResponse[]> | null>;
|
|
5
|
+
updateUserNotificationPreferences: (request: BulkNotificationPreferenceUpdateRequest) => Promise<import("..").ResponseBase | null>;
|
|
6
|
+
getUserNotificationPreferences: () => Promise<UserNotificationPreferenceResponse[] | null>;
|
|
7
|
+
loadingNotificationPreferences: boolean;
|
|
8
|
+
updatingNotificationPreferences: boolean;
|
|
9
|
+
};
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025 Larisa Rozin
|
|
4
|
+
* dodone-shared - Task Management, Allowance & Bonus Tracking Application Package
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*/
|
|
7
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
11
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
12
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
13
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.useNotificationPreferences = useNotificationPreferences;
|
|
18
|
+
const react_1 = require("react");
|
|
19
|
+
const useConfig_1 = require("../config/useConfig");
|
|
20
|
+
const useAuth_1 = require("./auth/useAuth");
|
|
21
|
+
const ApiClient_1 = require("../utils/ApiClient");
|
|
22
|
+
function useNotificationPreferences() {
|
|
23
|
+
const { token } = (0, useAuth_1.useAuth)();
|
|
24
|
+
const { baseUrl } = (0, useConfig_1.useConfig)();
|
|
25
|
+
const [notificationPreferences, setNotificationPreferences] = (0, react_1.useState)(null);
|
|
26
|
+
const [loadingNotificationPreferences, setLoading] = (0, react_1.useState)(false);
|
|
27
|
+
const [updatingNotificationPreferences, setUpdating] = (0, react_1.useState)(false);
|
|
28
|
+
const getUserNotificationPreferences = (0, react_1.useCallback)(() => __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
if (!token) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
setLoading(true);
|
|
33
|
+
try {
|
|
34
|
+
const apiClient = (0, ApiClient_1.createApiClient)(baseUrl, token);
|
|
35
|
+
const response = yield apiClient.notifications.getUserNotificationPreferences();
|
|
36
|
+
if (!response || response.success === false) {
|
|
37
|
+
console.error("Failed to fetch user notification preferences:", (response === null || response === void 0 ? void 0 : response.message) || "Unknown error");
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
setNotificationPreferences(response.data);
|
|
41
|
+
return response.data;
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
console.error("Error fetching user notification preferences:", error);
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
setLoading(false);
|
|
49
|
+
}
|
|
50
|
+
}), [token, baseUrl]);
|
|
51
|
+
const updateUserNotificationPreferences = (0, react_1.useCallback)((request) => __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
if (!token) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
setUpdating(true);
|
|
56
|
+
try {
|
|
57
|
+
const apiClient = (0, ApiClient_1.createApiClient)(baseUrl, token);
|
|
58
|
+
const response = yield apiClient.notifications.updateUserNotificationPreferences(request);
|
|
59
|
+
if (!response || response.success === false) {
|
|
60
|
+
console.error("Failed to update user notification preferences:", (response === null || response === void 0 ? void 0 : response.message) || "Unknown error");
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
// Refresh the preferences after successful update
|
|
64
|
+
yield getUserNotificationPreferences();
|
|
65
|
+
return response;
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
console.error("Error updating user notification preferences:", error);
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
setUpdating(false);
|
|
73
|
+
}
|
|
74
|
+
}), [token, baseUrl, getUserNotificationPreferences]);
|
|
75
|
+
const createUserNotificationPreferences = (0, react_1.useCallback)((request) => __awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
if (!token) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
setUpdating(true);
|
|
80
|
+
try {
|
|
81
|
+
const apiClient = (0, ApiClient_1.createApiClient)(baseUrl, token);
|
|
82
|
+
const response = yield apiClient.notifications.createUserNotificationPreferences(request);
|
|
83
|
+
if (!response || response.success === false) {
|
|
84
|
+
console.error("Failed to create user notification preferences:", (response === null || response === void 0 ? void 0 : response.message) || "Unknown error");
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
// Refresh the preferences after successful creation
|
|
88
|
+
yield getUserNotificationPreferences();
|
|
89
|
+
return response;
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
console.error("Error creating user notification preferences:", error);
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
finally {
|
|
96
|
+
setUpdating(false);
|
|
97
|
+
}
|
|
98
|
+
}), [token, baseUrl, getUserNotificationPreferences]);
|
|
99
|
+
return {
|
|
100
|
+
notificationPreferences,
|
|
101
|
+
createUserNotificationPreferences,
|
|
102
|
+
updateUserNotificationPreferences,
|
|
103
|
+
getUserNotificationPreferences,
|
|
104
|
+
loadingNotificationPreferences,
|
|
105
|
+
updatingNotificationPreferences,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { TaskCategoryDetailsResponse } from "../types/TaskItem";
|
|
2
|
+
import { PagedListRequest, PagedListResponse } from "../utils/paging";
|
|
3
|
+
export declare function useTaskCategories(request: PagedListRequest): {
|
|
4
|
+
pagedTaskCategories: PagedListResponse<TaskCategoryDetailsResponse> | undefined;
|
|
5
|
+
loading: boolean;
|
|
6
|
+
refreshTaskCategories: (request: PagedListRequest) => void;
|
|
7
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025 Larisa Rozin
|
|
4
|
+
* dodone-shared - Task Management, Allowance & Bonus Tracking Application Package
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*/
|
|
7
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
11
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
12
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
13
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.useTaskCategories = useTaskCategories;
|
|
18
|
+
const react_1 = require("react");
|
|
19
|
+
const routes_1 = require("../api/routes");
|
|
20
|
+
const useAuth_1 = require("./auth/useAuth");
|
|
21
|
+
const useConfig_1 = require("../config/useConfig");
|
|
22
|
+
const ApiClient_1 = require("../utils/ApiClient");
|
|
23
|
+
function useTaskCategories(request) {
|
|
24
|
+
const { token } = (0, useAuth_1.useAuth)();
|
|
25
|
+
const { baseUrl } = (0, useConfig_1.useConfig)();
|
|
26
|
+
const [pagedListRequest, setPagedListRequest] = (0, react_1.useState)(request);
|
|
27
|
+
const [pagedTaskCategories, setPagedTaskCategories] = (0, react_1.useState)();
|
|
28
|
+
const [loading, setLoading] = (0, react_1.useState)(true);
|
|
29
|
+
const fetchCategories = (0, react_1.useCallback)((requestToUse) => __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
const requestToFetch = requestToUse || pagedListRequest;
|
|
31
|
+
if (!token) {
|
|
32
|
+
setLoading(false);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (!requestToFetch) {
|
|
36
|
+
console.error("No request available for fetching task categories");
|
|
37
|
+
setLoading(false);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
setLoading(true);
|
|
41
|
+
try {
|
|
42
|
+
const apiClient = (0, ApiClient_1.createApiClient)(baseUrl, token);
|
|
43
|
+
const data = yield apiClient.getPagedListDetails(routes_1.API_ROUTES.taskCategories.getPagedListDetails(), requestToFetch);
|
|
44
|
+
if (!data || data.success === false) {
|
|
45
|
+
console.error("Failed to fetch task categories:", (data === null || data === void 0 ? void 0 : data.message) || "Unknown error");
|
|
46
|
+
setLoading(false);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
setPagedTaskCategories(data);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
console.error("Error fetching task categories:", error);
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
setLoading(false);
|
|
56
|
+
}
|
|
57
|
+
}), [token, baseUrl]);
|
|
58
|
+
function refreshTaskCategories(request) {
|
|
59
|
+
setPagedListRequest(request);
|
|
60
|
+
// Pass the request directly to fetchCategories to avoid state timing issues
|
|
61
|
+
fetchCategories(request);
|
|
62
|
+
}
|
|
63
|
+
(0, react_1.useEffect)(() => {
|
|
64
|
+
// Only fetch on initial load if we have a valid request
|
|
65
|
+
if (pagedListRequest) {
|
|
66
|
+
fetchCategories(pagedListRequest);
|
|
67
|
+
}
|
|
68
|
+
}, [fetchCategories]);
|
|
69
|
+
return { pagedTaskCategories, loading, refreshTaskCategories };
|
|
70
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { TaskCommentResponse } from "../types/TaskItem";
|
|
2
|
+
import { PagedTaskCommentListRequest, PagedTaskCommentListResponse } from "../utils/paging";
|
|
3
|
+
export declare function useTaskComments(request: PagedTaskCommentListRequest): {
|
|
4
|
+
pagedTaskComments: PagedTaskCommentListResponse<TaskCommentResponse> | undefined;
|
|
5
|
+
loadingTaskComments: boolean;
|
|
6
|
+
refreshTaskComments: (request: PagedTaskCommentListRequest) => void;
|
|
7
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025 Larisa Rozin
|
|
4
|
+
* dodone-shared - Task Management, Allowance & Bonus Tracking Application Package
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*/
|
|
7
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
11
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
12
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
13
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.useTaskComments = useTaskComments;
|
|
18
|
+
const react_1 = require("react");
|
|
19
|
+
const useAuth_1 = require("./auth/useAuth");
|
|
20
|
+
const useConfig_1 = require("../config/useConfig");
|
|
21
|
+
const ApiClient_1 = require("../utils/ApiClient");
|
|
22
|
+
function useTaskComments(request) {
|
|
23
|
+
const { token } = (0, useAuth_1.useAuth)();
|
|
24
|
+
const { baseUrl } = (0, useConfig_1.useConfig)();
|
|
25
|
+
const [pagedListRequest, setPagedListRequest] = (0, react_1.useState)(request);
|
|
26
|
+
const [pagedTaskComments, setPagedTaskComments] = (0, react_1.useState)();
|
|
27
|
+
const [loadingTaskComments, setLoadingTaskComments] = (0, react_1.useState)(true);
|
|
28
|
+
const fetchTaskComments = (0, react_1.useCallback)((requestToUse) => __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
const requestToFetch = requestToUse || pagedListRequest;
|
|
30
|
+
if (!token) {
|
|
31
|
+
setLoadingTaskComments(false);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (!requestToFetch) {
|
|
35
|
+
console.error("No request available for fetching task items");
|
|
36
|
+
setLoadingTaskComments(false);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
setLoadingTaskComments(true);
|
|
40
|
+
try {
|
|
41
|
+
const apiClient = (0, ApiClient_1.createApiClient)(baseUrl, token);
|
|
42
|
+
const data = yield apiClient.comments.getList(requestToFetch);
|
|
43
|
+
if (!data || data.success === false) {
|
|
44
|
+
console.error("Failed to fetch task comments:", (data === null || data === void 0 ? void 0 : data.message) || "Unknown error");
|
|
45
|
+
setLoadingTaskComments(false);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
setPagedTaskComments(data);
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
console.error("Error fetching task comments:", err);
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
setLoadingTaskComments(false);
|
|
55
|
+
}
|
|
56
|
+
}), [token, baseUrl]);
|
|
57
|
+
function refreshTaskComments(request) {
|
|
58
|
+
setPagedListRequest(request);
|
|
59
|
+
// Pass the request directly to fetchTaskComments to avoid state timing issues
|
|
60
|
+
fetchTaskComments(request);
|
|
61
|
+
}
|
|
62
|
+
(0, react_1.useEffect)(() => {
|
|
63
|
+
// Only fetch on initial load if we have a valid request
|
|
64
|
+
if (pagedListRequest) {
|
|
65
|
+
fetchTaskComments(pagedListRequest);
|
|
66
|
+
}
|
|
67
|
+
}, [fetchTaskComments]);
|
|
68
|
+
return { pagedTaskComments, loadingTaskComments, refreshTaskComments };
|
|
69
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { TaskGroupDetailsResponse } from "../types/TaskItem";
|
|
2
|
+
import { PagedListRequest, PagedListResponse } from "../utils/paging";
|
|
3
|
+
export declare function useTaskGroups(request: PagedListRequest): {
|
|
4
|
+
pagedTaskGroups: PagedListResponse<TaskGroupDetailsResponse> | undefined;
|
|
5
|
+
taskGroupsLoading: boolean;
|
|
6
|
+
refreshTaskGroups: (request: PagedListRequest) => void;
|
|
7
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025 Larisa Rozin
|
|
4
|
+
* dodone-shared - Task Management, Allowance & Bonus Tracking Application Package
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*/
|
|
7
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
11
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
12
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
13
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.useTaskGroups = useTaskGroups;
|
|
18
|
+
const react_1 = require("react");
|
|
19
|
+
const routes_1 = require("../api/routes");
|
|
20
|
+
const useAuth_1 = require("./auth/useAuth");
|
|
21
|
+
const useConfig_1 = require("../config/useConfig");
|
|
22
|
+
const ApiClient_1 = require("../utils/ApiClient");
|
|
23
|
+
function useTaskGroups(request) {
|
|
24
|
+
const { token } = (0, useAuth_1.useAuth)();
|
|
25
|
+
const { baseUrl } = (0, useConfig_1.useConfig)();
|
|
26
|
+
const [pagedListRequest, setPagedListRequest] = (0, react_1.useState)(request);
|
|
27
|
+
const [pagedTaskGroups, setPagedTaskGroups] = (0, react_1.useState)();
|
|
28
|
+
const [taskGroupsLoading, setLoading] = (0, react_1.useState)(true);
|
|
29
|
+
const fetchGroups = (0, react_1.useCallback)((requestToUse) => __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
const requestToFetch = requestToUse || pagedListRequest;
|
|
31
|
+
if (!token) {
|
|
32
|
+
setLoading(false);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (!requestToFetch) {
|
|
36
|
+
console.error("No request available for fetching task groups");
|
|
37
|
+
setLoading(false);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
setLoading(true);
|
|
41
|
+
try {
|
|
42
|
+
const apiClient = (0, ApiClient_1.createApiClient)(baseUrl, token);
|
|
43
|
+
const data = yield apiClient.getPagedListDetails(routes_1.API_ROUTES.taskGroups.getPagedListDetails(), requestToFetch);
|
|
44
|
+
if (!data || data.success === false) {
|
|
45
|
+
console.error("Failed to fetch task groups:", (data === null || data === void 0 ? void 0 : data.message) || "Unknown error");
|
|
46
|
+
setLoading(false);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
setPagedTaskGroups(data);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
console.error("Error fetching task groups:", error);
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
setLoading(false);
|
|
56
|
+
}
|
|
57
|
+
}), [token, baseUrl]);
|
|
58
|
+
function refreshTaskGroups(request) {
|
|
59
|
+
setPagedListRequest(request);
|
|
60
|
+
// Pass the request directly to fetchGroups to avoid state timing issues
|
|
61
|
+
fetchGroups(request);
|
|
62
|
+
}
|
|
63
|
+
(0, react_1.useEffect)(() => {
|
|
64
|
+
// Only fetch on initial load if we have a valid request
|
|
65
|
+
if (pagedListRequest) {
|
|
66
|
+
fetchGroups(pagedListRequest);
|
|
67
|
+
}
|
|
68
|
+
}, [fetchGroups]);
|
|
69
|
+
return { pagedTaskGroups, taskGroupsLoading, refreshTaskGroups };
|
|
70
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { TaskItemDetailsResponse } from "../types/TaskItem";
|
|
2
|
+
import { PagedTaskItemListRequest, PagedTaskItemListResponse } from "../utils/paging";
|
|
3
|
+
export declare function useTaskItems(request: PagedTaskItemListRequest): {
|
|
4
|
+
pagedTaskItems: PagedTaskItemListResponse<TaskItemDetailsResponse> | undefined;
|
|
5
|
+
loadingTaskItems: boolean;
|
|
6
|
+
refreshTaskItems: (request: PagedTaskItemListRequest) => void;
|
|
7
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025 Larisa Rozin
|
|
4
|
+
* dodone-shared - Task Management, Allowance & Bonus Tracking Application Package
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*/
|
|
7
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
11
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
12
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
13
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.useTaskItems = useTaskItems;
|
|
18
|
+
const react_1 = require("react");
|
|
19
|
+
const useAuth_1 = require("./auth/useAuth");
|
|
20
|
+
const useConfig_1 = require("../config/useConfig");
|
|
21
|
+
const ApiClient_1 = require("../utils/ApiClient");
|
|
22
|
+
// TODO: Add other task item API operations
|
|
23
|
+
function useTaskItems(request) {
|
|
24
|
+
const { token } = (0, useAuth_1.useAuth)();
|
|
25
|
+
const { baseUrl } = (0, useConfig_1.useConfig)();
|
|
26
|
+
const [pagedListRequest, setPagedListRequest] = (0, react_1.useState)(request);
|
|
27
|
+
const [pagedTaskItems, setPagedTaskItems] = (0, react_1.useState)();
|
|
28
|
+
const [loadingTaskItems, setLoadingTaskItems] = (0, react_1.useState)(true);
|
|
29
|
+
const fetchTaskItems = (0, react_1.useCallback)((requestToUse) => __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
const requestToFetch = requestToUse || pagedListRequest;
|
|
31
|
+
if (!token) {
|
|
32
|
+
setLoadingTaskItems(false);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (!requestToFetch) {
|
|
36
|
+
console.error("No request available for fetching task items");
|
|
37
|
+
setLoadingTaskItems(false);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
setLoadingTaskItems(true);
|
|
41
|
+
try {
|
|
42
|
+
const apiClient = (0, ApiClient_1.createApiClient)(baseUrl, token);
|
|
43
|
+
const data = yield apiClient.tasks.getPagedListDetails(requestToFetch);
|
|
44
|
+
if (!data || data.success === false) {
|
|
45
|
+
console.error("Failed to fetch task items:", (data === null || data === void 0 ? void 0 : data.message) || "Unknown error");
|
|
46
|
+
setLoadingTaskItems(false);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
setPagedTaskItems(data);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
console.error("Error fetching task items:", error);
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
setLoadingTaskItems(false);
|
|
56
|
+
}
|
|
57
|
+
}), [token, baseUrl]);
|
|
58
|
+
function refreshTaskItems(request) {
|
|
59
|
+
setPagedListRequest(request);
|
|
60
|
+
// Pass the request directly to fetchTaskItems to avoid state timing issues
|
|
61
|
+
fetchTaskItems(request);
|
|
62
|
+
}
|
|
63
|
+
(0, react_1.useEffect)(() => {
|
|
64
|
+
// Only fetch on initial load if we have a valid request
|
|
65
|
+
if (pagedListRequest) {
|
|
66
|
+
fetchTaskItems(pagedListRequest);
|
|
67
|
+
}
|
|
68
|
+
}, [fetchTaskItems]);
|
|
69
|
+
return { pagedTaskItems, loadingTaskItems, refreshTaskItems };
|
|
70
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { TaskKindDetailsResponse } from "../types/TaskItem";
|
|
2
|
+
import { PagedListRequest, PagedListResponse } from "../utils/paging";
|
|
3
|
+
export declare function useTaskKinds(request: PagedListRequest): {
|
|
4
|
+
pagedTaskKinds: PagedListResponse<TaskKindDetailsResponse> | undefined;
|
|
5
|
+
loading: boolean;
|
|
6
|
+
refreshTaskKinds: (request: PagedListRequest) => void;
|
|
7
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025 Larisa Rozin
|
|
4
|
+
* dodone-shared - Task Management, Allowance & Bonus Tracking Application Package
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*/
|
|
7
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
11
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
12
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
13
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.useTaskKinds = useTaskKinds;
|
|
18
|
+
const react_1 = require("react");
|
|
19
|
+
const routes_1 = require("../api/routes");
|
|
20
|
+
const useAuth_1 = require("./auth/useAuth");
|
|
21
|
+
const useConfig_1 = require("../config/useConfig");
|
|
22
|
+
const ApiClient_1 = require("../utils/ApiClient");
|
|
23
|
+
function useTaskKinds(request) {
|
|
24
|
+
const { token } = (0, useAuth_1.useAuth)();
|
|
25
|
+
const { baseUrl } = (0, useConfig_1.useConfig)();
|
|
26
|
+
const [pagedListRequest, setPagedListRequest] = (0, react_1.useState)(request);
|
|
27
|
+
const [pagedTaskKinds, setPagedTaskKinds] = (0, react_1.useState)();
|
|
28
|
+
const [loading, setLoading] = (0, react_1.useState)(true);
|
|
29
|
+
const fetchKinds = (0, react_1.useCallback)((requestToUse) => __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
const requestToFetch = requestToUse || pagedListRequest;
|
|
31
|
+
if (!token) {
|
|
32
|
+
setLoading(false);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (!requestToFetch) {
|
|
36
|
+
console.error("No request available for fetching task kinds");
|
|
37
|
+
setLoading(false);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
setLoading(true);
|
|
41
|
+
try {
|
|
42
|
+
const apiClient = (0, ApiClient_1.createApiClient)(baseUrl, token);
|
|
43
|
+
const data = yield apiClient.getPagedListDetails(routes_1.API_ROUTES.taskKinds.getPagedListDetails(), requestToFetch);
|
|
44
|
+
if (!data || data.success === false) {
|
|
45
|
+
console.error("Failed to fetch task kinds:", (data === null || data === void 0 ? void 0 : data.message) || "Unknown error");
|
|
46
|
+
setLoading(false);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
setPagedTaskKinds(data);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
console.error("Error fetching task kinds:", error);
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
setLoading(false);
|
|
56
|
+
}
|
|
57
|
+
}), [token, baseUrl]);
|
|
58
|
+
function refreshTaskKinds(request) {
|
|
59
|
+
setPagedListRequest(request);
|
|
60
|
+
// Pass the request directly to fetchKinds to avoid state timing issues
|
|
61
|
+
fetchKinds(request);
|
|
62
|
+
}
|
|
63
|
+
(0, react_1.useEffect)(() => {
|
|
64
|
+
// Only fetch on initial load if we have a valid request
|
|
65
|
+
if (pagedListRequest) {
|
|
66
|
+
fetchKinds(pagedListRequest);
|
|
67
|
+
}
|
|
68
|
+
}, [fetchKinds]);
|
|
69
|
+
return { pagedTaskKinds, loading, refreshTaskKinds };
|
|
70
|
+
}
|