shelflife-react-hooks 1.0.19 → 1.0.20
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/dist/index.cjs.js +22 -0
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.esm.js +22 -0
- package/dist/index.esm.js.map +1 -1
- package/package.json +36 -36
- package/src/context/AuthContext.tsx +161 -161
- package/src/context/InviteContext.tsx +74 -74
- package/src/context/ProductContext.tsx +131 -121
- package/src/context/RunningLowContext.tsx +100 -100
- package/src/context/ShoppingListContext.tsx +76 -76
- package/src/context/StorageContext.tsx +105 -105
- package/src/context/StorageItemContext.tsx +157 -157
- package/src/context/StorageMemberContext.tsx +84 -84
- package/src/context/UserContext.tsx +109 -109
- package/src/context/__tests__/contexts.test.tsx +370 -370
- package/src/context/api/authApi.ts +155 -155
- package/src/context/api/inviteApi.ts +65 -65
- package/src/context/api/productApi.ts +223 -201
- package/src/context/api/requestState.ts +24 -24
- package/src/context/api/runningLowApi.ts +141 -141
- package/src/context/api/shoppingListApi.ts +161 -161
- package/src/context/api/storageApi.ts +166 -166
- package/src/context/api/storageItemApi.ts +260 -260
- package/src/context/api/storageMemberApi.ts +84 -84
- package/src/context/api/userApi.ts +161 -161
- package/src/context/http.ts +22 -22
- package/src/index.ts +21 -21
- package/src/type/PaginatedResponse.ts +8 -8
- package/src/type/auth.ts +79 -79
- package/src/type/base.ts +21 -21
- package/src/type/item.ts +12 -12
- package/src/type/member.ts +6 -6
- package/src/type/models.ts +56 -56
- package/src/type/product.ts +11 -11
- package/src/type/requests.ts +60 -60
- package/src/type/runninglow.ts +13 -13
- package/src/type/shoppingList.ts +13 -13
- package/src/type/storage.ts +7 -7
- package/src/type/user.ts +11 -11
- package/tsconfig.json +46 -46
- package/tsup.config.ts +10 -10
- package/vitest.config.ts +8 -8
|
@@ -1,84 +1,84 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
createContext,
|
|
3
|
-
useCallback,
|
|
4
|
-
useContext,
|
|
5
|
-
useMemo,
|
|
6
|
-
useState
|
|
7
|
-
} from 'react';
|
|
8
|
-
|
|
9
|
-
import type { StorageMember } from '../type/models.js';
|
|
10
|
-
import type { InviteMemberRequest } from '../type/requests.js';
|
|
11
|
-
import { useAuth } from './AuthContext.js';
|
|
12
|
-
import {
|
|
13
|
-
fetchMembersRequest,
|
|
14
|
-
inviteMemberRequest,
|
|
15
|
-
removeMemberRequest
|
|
16
|
-
} from './api/storageMemberApi.js';
|
|
17
|
-
|
|
18
|
-
type StorageMemberContextValue = {
|
|
19
|
-
members: StorageMember[];
|
|
20
|
-
isLoading: boolean;
|
|
21
|
-
isError: boolean;
|
|
22
|
-
error: Error | null;
|
|
23
|
-
fetchMembers: (storageId: number) => Promise<StorageMember[]>;
|
|
24
|
-
inviteMember: (storageId: number, dto: InviteMemberRequest) => Promise<StorageMember>;
|
|
25
|
-
removeMember: (storageId: number, userId: number) => Promise<void>;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
type StorageMemberProviderProps = {
|
|
29
|
-
baseUrl: string;
|
|
30
|
-
children: React.ReactNode;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
const StorageMemberContext = createContext<StorageMemberContextValue | undefined>(undefined);
|
|
34
|
-
|
|
35
|
-
export const StorageMemberProvider = ({ baseUrl, children }: StorageMemberProviderProps) => {
|
|
36
|
-
const { token } = useAuth();
|
|
37
|
-
const [members, setMembers] = useState<StorageMember[]>([]);
|
|
38
|
-
const [isLoading, setIsLoading] = useState(false);
|
|
39
|
-
const [isError, setIsError] = useState(false);
|
|
40
|
-
const [error, setError] = useState<Error | null>(null);
|
|
41
|
-
|
|
42
|
-
const apiConfig = useMemo(() => ({
|
|
43
|
-
baseUrl,
|
|
44
|
-
token,
|
|
45
|
-
setMembers,
|
|
46
|
-
setIsLoading,
|
|
47
|
-
setIsError,
|
|
48
|
-
setError
|
|
49
|
-
}), [baseUrl, token]);
|
|
50
|
-
|
|
51
|
-
const fetchMembers = useCallback(
|
|
52
|
-
(storageId: number) => fetchMembersRequest(apiConfig, storageId),
|
|
53
|
-
[apiConfig]
|
|
54
|
-
);
|
|
55
|
-
const inviteMember = useCallback(
|
|
56
|
-
(storageId: number, dto: InviteMemberRequest) => inviteMemberRequest(apiConfig, storageId, dto),
|
|
57
|
-
[apiConfig]
|
|
58
|
-
);
|
|
59
|
-
const removeMember = useCallback(
|
|
60
|
-
(storageId: number, userId: number) => removeMemberRequest(apiConfig, storageId, userId),
|
|
61
|
-
[apiConfig]
|
|
62
|
-
);
|
|
63
|
-
|
|
64
|
-
const value = useMemo<StorageMemberContextValue>(() => ({
|
|
65
|
-
members,
|
|
66
|
-
isLoading,
|
|
67
|
-
isError,
|
|
68
|
-
error,
|
|
69
|
-
fetchMembers,
|
|
70
|
-
inviteMember,
|
|
71
|
-
removeMember
|
|
72
|
-
}), [error, fetchMembers, inviteMember, isError, isLoading, members, removeMember]);
|
|
73
|
-
|
|
74
|
-
return <StorageMemberContext.Provider value={value}>{children}</StorageMemberContext.Provider>;
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
export const useStorageMembers = (): StorageMemberContextValue => {
|
|
78
|
-
const context = useContext(StorageMemberContext);
|
|
79
|
-
if (!context) {
|
|
80
|
-
throw new Error('useStorageMembers must be used within a StorageMemberProvider');
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
return context;
|
|
84
|
-
};
|
|
1
|
+
import React, {
|
|
2
|
+
createContext,
|
|
3
|
+
useCallback,
|
|
4
|
+
useContext,
|
|
5
|
+
useMemo,
|
|
6
|
+
useState
|
|
7
|
+
} from 'react';
|
|
8
|
+
|
|
9
|
+
import type { StorageMember } from '../type/models.js';
|
|
10
|
+
import type { InviteMemberRequest } from '../type/requests.js';
|
|
11
|
+
import { useAuth } from './AuthContext.js';
|
|
12
|
+
import {
|
|
13
|
+
fetchMembersRequest,
|
|
14
|
+
inviteMemberRequest,
|
|
15
|
+
removeMemberRequest
|
|
16
|
+
} from './api/storageMemberApi.js';
|
|
17
|
+
|
|
18
|
+
type StorageMemberContextValue = {
|
|
19
|
+
members: StorageMember[];
|
|
20
|
+
isLoading: boolean;
|
|
21
|
+
isError: boolean;
|
|
22
|
+
error: Error | null;
|
|
23
|
+
fetchMembers: (storageId: number) => Promise<StorageMember[]>;
|
|
24
|
+
inviteMember: (storageId: number, dto: InviteMemberRequest) => Promise<StorageMember>;
|
|
25
|
+
removeMember: (storageId: number, userId: number) => Promise<void>;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
type StorageMemberProviderProps = {
|
|
29
|
+
baseUrl: string;
|
|
30
|
+
children: React.ReactNode;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const StorageMemberContext = createContext<StorageMemberContextValue | undefined>(undefined);
|
|
34
|
+
|
|
35
|
+
export const StorageMemberProvider = ({ baseUrl, children }: StorageMemberProviderProps) => {
|
|
36
|
+
const { token } = useAuth();
|
|
37
|
+
const [members, setMembers] = useState<StorageMember[]>([]);
|
|
38
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
39
|
+
const [isError, setIsError] = useState(false);
|
|
40
|
+
const [error, setError] = useState<Error | null>(null);
|
|
41
|
+
|
|
42
|
+
const apiConfig = useMemo(() => ({
|
|
43
|
+
baseUrl,
|
|
44
|
+
token,
|
|
45
|
+
setMembers,
|
|
46
|
+
setIsLoading,
|
|
47
|
+
setIsError,
|
|
48
|
+
setError
|
|
49
|
+
}), [baseUrl, token]);
|
|
50
|
+
|
|
51
|
+
const fetchMembers = useCallback(
|
|
52
|
+
(storageId: number) => fetchMembersRequest(apiConfig, storageId),
|
|
53
|
+
[apiConfig]
|
|
54
|
+
);
|
|
55
|
+
const inviteMember = useCallback(
|
|
56
|
+
(storageId: number, dto: InviteMemberRequest) => inviteMemberRequest(apiConfig, storageId, dto),
|
|
57
|
+
[apiConfig]
|
|
58
|
+
);
|
|
59
|
+
const removeMember = useCallback(
|
|
60
|
+
(storageId: number, userId: number) => removeMemberRequest(apiConfig, storageId, userId),
|
|
61
|
+
[apiConfig]
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
const value = useMemo<StorageMemberContextValue>(() => ({
|
|
65
|
+
members,
|
|
66
|
+
isLoading,
|
|
67
|
+
isError,
|
|
68
|
+
error,
|
|
69
|
+
fetchMembers,
|
|
70
|
+
inviteMember,
|
|
71
|
+
removeMember
|
|
72
|
+
}), [error, fetchMembers, inviteMember, isError, isLoading, members, removeMember]);
|
|
73
|
+
|
|
74
|
+
return <StorageMemberContext.Provider value={value}>{children}</StorageMemberContext.Provider>;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
export const useStorageMembers = (): StorageMemberContextValue => {
|
|
78
|
+
const context = useContext(StorageMemberContext);
|
|
79
|
+
if (!context) {
|
|
80
|
+
throw new Error('useStorageMembers must be used within a StorageMemberProvider');
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return context;
|
|
84
|
+
};
|
|
@@ -1,109 +1,109 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
createContext,
|
|
3
|
-
useCallback,
|
|
4
|
-
useContext,
|
|
5
|
-
useMemo,
|
|
6
|
-
useState
|
|
7
|
-
} from 'react';
|
|
8
|
-
|
|
9
|
-
import type { User } from '../type/models.js';
|
|
10
|
-
import type { ChangeUserDataRequest } from '../type/requests.js';
|
|
11
|
-
import { useAuth } from './AuthContext.js';
|
|
12
|
-
import {
|
|
13
|
-
deleteUserRequest,
|
|
14
|
-
fetchUserRequest,
|
|
15
|
-
fetchUsersRequest,
|
|
16
|
-
getUserPfpRequest,
|
|
17
|
-
updateUserRequest,
|
|
18
|
-
uploadUserPfpRequest
|
|
19
|
-
} from './api/userApi.js';
|
|
20
|
-
|
|
21
|
-
type UserContextValue = {
|
|
22
|
-
users: User[];
|
|
23
|
-
user: User | null;
|
|
24
|
-
isLoading: boolean;
|
|
25
|
-
isError: boolean;
|
|
26
|
-
error: Error | null;
|
|
27
|
-
fetchUsers: () => Promise<User[]>;
|
|
28
|
-
fetchUser: (id: number) => Promise<User | null>;
|
|
29
|
-
updateUser: (id: number, dto: ChangeUserDataRequest) => Promise<User>;
|
|
30
|
-
deleteUser: (id: number) => Promise<void>;
|
|
31
|
-
getUserPfp: (id: number) => Promise<Blob>;
|
|
32
|
-
uploadUserPfp: (id: number, file: Blob) => Promise<void>;
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
type UserProviderProps = {
|
|
36
|
-
baseUrl: string;
|
|
37
|
-
children: React.ReactNode;
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
const UserContext = createContext<UserContextValue | undefined>(undefined);
|
|
41
|
-
|
|
42
|
-
export const UserProvider = ({ baseUrl, children }: UserProviderProps) => {
|
|
43
|
-
const { token } = useAuth();
|
|
44
|
-
const [users, setUsers] = useState<User[]>([]);
|
|
45
|
-
const [user, setUser] = useState<User | null>(null);
|
|
46
|
-
const [isLoading, setIsLoading] = useState(false);
|
|
47
|
-
const [isError, setIsError] = useState(false);
|
|
48
|
-
const [error, setError] = useState<Error | null>(null);
|
|
49
|
-
|
|
50
|
-
const apiConfig = useMemo(() => ({
|
|
51
|
-
baseUrl,
|
|
52
|
-
token,
|
|
53
|
-
setUsers,
|
|
54
|
-
setUser,
|
|
55
|
-
setIsLoading,
|
|
56
|
-
setIsError,
|
|
57
|
-
setError
|
|
58
|
-
}), [baseUrl, token]);
|
|
59
|
-
|
|
60
|
-
const fetchUsers = useCallback(() => fetchUsersRequest(apiConfig), [apiConfig]);
|
|
61
|
-
const fetchUser = useCallback((id: number) => fetchUserRequest(apiConfig, id), [apiConfig]);
|
|
62
|
-
const updateUser = useCallback(
|
|
63
|
-
(id: number, dto: ChangeUserDataRequest) => updateUserRequest(apiConfig, id, dto),
|
|
64
|
-
[apiConfig]
|
|
65
|
-
);
|
|
66
|
-
const deleteUser = useCallback((id: number) => deleteUserRequest(apiConfig, id), [apiConfig]);
|
|
67
|
-
const getUserPfp = useCallback((id: number) => getUserPfpRequest(apiConfig, id), [apiConfig]);
|
|
68
|
-
const uploadUserPfp = useCallback(
|
|
69
|
-
(id: number, file: Blob) => uploadUserPfpRequest(apiConfig, id, file),
|
|
70
|
-
[apiConfig]
|
|
71
|
-
);
|
|
72
|
-
|
|
73
|
-
const value = useMemo<UserContextValue>(() => ({
|
|
74
|
-
users,
|
|
75
|
-
user,
|
|
76
|
-
isLoading,
|
|
77
|
-
isError,
|
|
78
|
-
error,
|
|
79
|
-
fetchUsers,
|
|
80
|
-
fetchUser,
|
|
81
|
-
updateUser,
|
|
82
|
-
deleteUser,
|
|
83
|
-
getUserPfp,
|
|
84
|
-
uploadUserPfp
|
|
85
|
-
}), [
|
|
86
|
-
deleteUser,
|
|
87
|
-
error,
|
|
88
|
-
fetchUser,
|
|
89
|
-
fetchUsers,
|
|
90
|
-
getUserPfp,
|
|
91
|
-
isError,
|
|
92
|
-
isLoading,
|
|
93
|
-
updateUser,
|
|
94
|
-
uploadUserPfp,
|
|
95
|
-
user,
|
|
96
|
-
users
|
|
97
|
-
]);
|
|
98
|
-
|
|
99
|
-
return <UserContext.Provider value={value}>{children}</UserContext.Provider>;
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
export const useUsers = (): UserContextValue => {
|
|
103
|
-
const context = useContext(UserContext);
|
|
104
|
-
if (!context) {
|
|
105
|
-
throw new Error('useUsers must be used within a UserProvider');
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
return context;
|
|
109
|
-
};
|
|
1
|
+
import React, {
|
|
2
|
+
createContext,
|
|
3
|
+
useCallback,
|
|
4
|
+
useContext,
|
|
5
|
+
useMemo,
|
|
6
|
+
useState
|
|
7
|
+
} from 'react';
|
|
8
|
+
|
|
9
|
+
import type { User } from '../type/models.js';
|
|
10
|
+
import type { ChangeUserDataRequest } from '../type/requests.js';
|
|
11
|
+
import { useAuth } from './AuthContext.js';
|
|
12
|
+
import {
|
|
13
|
+
deleteUserRequest,
|
|
14
|
+
fetchUserRequest,
|
|
15
|
+
fetchUsersRequest,
|
|
16
|
+
getUserPfpRequest,
|
|
17
|
+
updateUserRequest,
|
|
18
|
+
uploadUserPfpRequest
|
|
19
|
+
} from './api/userApi.js';
|
|
20
|
+
|
|
21
|
+
type UserContextValue = {
|
|
22
|
+
users: User[];
|
|
23
|
+
user: User | null;
|
|
24
|
+
isLoading: boolean;
|
|
25
|
+
isError: boolean;
|
|
26
|
+
error: Error | null;
|
|
27
|
+
fetchUsers: () => Promise<User[]>;
|
|
28
|
+
fetchUser: (id: number) => Promise<User | null>;
|
|
29
|
+
updateUser: (id: number, dto: ChangeUserDataRequest) => Promise<User>;
|
|
30
|
+
deleteUser: (id: number) => Promise<void>;
|
|
31
|
+
getUserPfp: (id: number) => Promise<Blob>;
|
|
32
|
+
uploadUserPfp: (id: number, file: Blob) => Promise<void>;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
type UserProviderProps = {
|
|
36
|
+
baseUrl: string;
|
|
37
|
+
children: React.ReactNode;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const UserContext = createContext<UserContextValue | undefined>(undefined);
|
|
41
|
+
|
|
42
|
+
export const UserProvider = ({ baseUrl, children }: UserProviderProps) => {
|
|
43
|
+
const { token } = useAuth();
|
|
44
|
+
const [users, setUsers] = useState<User[]>([]);
|
|
45
|
+
const [user, setUser] = useState<User | null>(null);
|
|
46
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
47
|
+
const [isError, setIsError] = useState(false);
|
|
48
|
+
const [error, setError] = useState<Error | null>(null);
|
|
49
|
+
|
|
50
|
+
const apiConfig = useMemo(() => ({
|
|
51
|
+
baseUrl,
|
|
52
|
+
token,
|
|
53
|
+
setUsers,
|
|
54
|
+
setUser,
|
|
55
|
+
setIsLoading,
|
|
56
|
+
setIsError,
|
|
57
|
+
setError
|
|
58
|
+
}), [baseUrl, token]);
|
|
59
|
+
|
|
60
|
+
const fetchUsers = useCallback(() => fetchUsersRequest(apiConfig), [apiConfig]);
|
|
61
|
+
const fetchUser = useCallback((id: number) => fetchUserRequest(apiConfig, id), [apiConfig]);
|
|
62
|
+
const updateUser = useCallback(
|
|
63
|
+
(id: number, dto: ChangeUserDataRequest) => updateUserRequest(apiConfig, id, dto),
|
|
64
|
+
[apiConfig]
|
|
65
|
+
);
|
|
66
|
+
const deleteUser = useCallback((id: number) => deleteUserRequest(apiConfig, id), [apiConfig]);
|
|
67
|
+
const getUserPfp = useCallback((id: number) => getUserPfpRequest(apiConfig, id), [apiConfig]);
|
|
68
|
+
const uploadUserPfp = useCallback(
|
|
69
|
+
(id: number, file: Blob) => uploadUserPfpRequest(apiConfig, id, file),
|
|
70
|
+
[apiConfig]
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
const value = useMemo<UserContextValue>(() => ({
|
|
74
|
+
users,
|
|
75
|
+
user,
|
|
76
|
+
isLoading,
|
|
77
|
+
isError,
|
|
78
|
+
error,
|
|
79
|
+
fetchUsers,
|
|
80
|
+
fetchUser,
|
|
81
|
+
updateUser,
|
|
82
|
+
deleteUser,
|
|
83
|
+
getUserPfp,
|
|
84
|
+
uploadUserPfp
|
|
85
|
+
}), [
|
|
86
|
+
deleteUser,
|
|
87
|
+
error,
|
|
88
|
+
fetchUser,
|
|
89
|
+
fetchUsers,
|
|
90
|
+
getUserPfp,
|
|
91
|
+
isError,
|
|
92
|
+
isLoading,
|
|
93
|
+
updateUser,
|
|
94
|
+
uploadUserPfp,
|
|
95
|
+
user,
|
|
96
|
+
users
|
|
97
|
+
]);
|
|
98
|
+
|
|
99
|
+
return <UserContext.Provider value={value}>{children}</UserContext.Provider>;
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
export const useUsers = (): UserContextValue => {
|
|
103
|
+
const context = useContext(UserContext);
|
|
104
|
+
if (!context) {
|
|
105
|
+
throw new Error('useUsers must be used within a UserProvider');
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return context;
|
|
109
|
+
};
|