@myrjfa/state 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.
Files changed (60) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +4 -0
  3. package/dist/index.d.ts +13 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +12 -0
  6. package/dist/lib/QueryProvider.d.ts +4 -0
  7. package/dist/lib/QueryProvider.d.ts.map +1 -0
  8. package/dist/lib/QueryProvider.js +10 -0
  9. package/dist/lib/actions.d.ts +141 -0
  10. package/dist/lib/actions.d.ts.map +1 -0
  11. package/dist/lib/actions.js +307 -0
  12. package/dist/lib/auth.d.ts +146 -0
  13. package/dist/lib/auth.d.ts.map +1 -0
  14. package/dist/lib/auth.js +125 -0
  15. package/dist/lib/authSessionManager.d.ts +2 -0
  16. package/dist/lib/authSessionManager.d.ts.map +1 -0
  17. package/dist/lib/authSessionManager.js +34 -0
  18. package/dist/lib/fetcher.d.ts +9 -0
  19. package/dist/lib/fetcher.d.ts.map +1 -0
  20. package/dist/lib/fetcher.js +78 -0
  21. package/dist/lib/hooks/use-mobile.d.ts +2 -0
  22. package/dist/lib/hooks/use-mobile.d.ts.map +1 -0
  23. package/dist/lib/hooks/use-mobile.js +15 -0
  24. package/dist/lib/models/application.d.ts +25 -0
  25. package/dist/lib/models/application.d.ts.map +1 -0
  26. package/dist/lib/models/application.js +130 -0
  27. package/dist/lib/models/blog.d.ts +63 -0
  28. package/dist/lib/models/blog.d.ts.map +1 -0
  29. package/dist/lib/models/blog.js +190 -0
  30. package/dist/lib/models/notfications.d.ts +26 -0
  31. package/dist/lib/models/notfications.d.ts.map +1 -0
  32. package/dist/lib/models/notfications.js +46 -0
  33. package/dist/lib/models/portfolio.d.ts +32 -0
  34. package/dist/lib/models/portfolio.d.ts.map +1 -0
  35. package/dist/lib/models/portfolio.js +66 -0
  36. package/dist/lib/models/props.d.ts +39 -0
  37. package/dist/lib/models/props.d.ts.map +1 -0
  38. package/dist/lib/models/props.js +260 -0
  39. package/dist/lib/models/review.d.ts +40 -0
  40. package/dist/lib/models/review.d.ts.map +1 -0
  41. package/dist/lib/models/review.js +72 -0
  42. package/dist/lib/models/tile.d.ts +26 -0
  43. package/dist/lib/models/tile.d.ts.map +1 -0
  44. package/dist/lib/models/tile.js +1 -0
  45. package/dist/lib/models/user.d.ts +148 -0
  46. package/dist/lib/models/user.d.ts.map +1 -0
  47. package/dist/lib/models/user.js +87 -0
  48. package/dist/lib/models/volunteerJob.d.ts +377 -0
  49. package/dist/lib/models/volunteerJob.d.ts.map +1 -0
  50. package/dist/lib/models/volunteerJob.js +149 -0
  51. package/dist/lib/severActions.d.ts +3 -0
  52. package/dist/lib/severActions.d.ts.map +1 -0
  53. package/dist/lib/severActions.js +19 -0
  54. package/dist/lib/userAtom.d.ts +191 -0
  55. package/dist/lib/userAtom.d.ts.map +1 -0
  56. package/dist/lib/userAtom.js +127 -0
  57. package/dist/lib/utils.d.ts +53 -0
  58. package/dist/lib/utils.d.ts.map +1 -0
  59. package/dist/lib/utils.js +182 -0
  60. package/package.json +51 -0
@@ -0,0 +1,307 @@
1
+ import { del, get, patch, post } from "./fetcher";
2
+ // host
3
+ // user/host
4
+ export async function getCurrentUser() {
5
+ try {
6
+ const endpoint = `/users/me`;
7
+ const data = await get(endpoint);
8
+ console.log(data.message);
9
+ return data?.data;
10
+ }
11
+ catch (error) {
12
+ console.error('Failed to fetch user details: ', error);
13
+ return null;
14
+ }
15
+ }
16
+ export async function userDetails(username, role) {
17
+ try {
18
+ if (role == "admin")
19
+ role = "user";
20
+ const endpoint = `/${role}s/other-${role}/${username}`;
21
+ const data = await get(endpoint);
22
+ return {
23
+ success: true,
24
+ user: data?.data,
25
+ message: data.message
26
+ };
27
+ }
28
+ catch (error) {
29
+ console.error('Failed to fetch user details: ', error);
30
+ return { success: false, user: null, status: error.status, error: error.message };
31
+ }
32
+ }
33
+ export async function subscribeToNewsLetter(email) {
34
+ try {
35
+ const endpoint = `/subscription/create`;
36
+ const data = await post(endpoint, { email: email });
37
+ return { success: true, message: data.message };
38
+ }
39
+ catch (error) {
40
+ console.error('Error subscribing to newsletter: ', error);
41
+ return {
42
+ success: false,
43
+ error: error.message,
44
+ };
45
+ }
46
+ }
47
+ export async function toggleUserWishlist(slug, tileType) {
48
+ try {
49
+ const endpoint = `/users/fav/${tileType}/toggle`;
50
+ const data = await post(endpoint, { id: slug });
51
+ return { success: true, message: data.message, wishlist: data.data };
52
+ }
53
+ catch (error) {
54
+ console.error(`Failed to add ${tileType} to wishlist: `, error);
55
+ return {
56
+ success: false,
57
+ error: error.message,
58
+ wishlist: []
59
+ };
60
+ }
61
+ }
62
+ // subscribe
63
+ export async function subscribeToCareersPage(email) {
64
+ try {
65
+ const endpoint = `/subscription/create-job`;
66
+ const data = await post(endpoint, { email: email });
67
+ return { success: true, message: data.message };
68
+ }
69
+ catch (error) {
70
+ console.error('Error subscribing to newsletter: ', error);
71
+ return {
72
+ success: false,
73
+ error: error.message,
74
+ };
75
+ }
76
+ }
77
+ export async function contactUs(email, name, subject, message) {
78
+ try {
79
+ const endpoint = `/contactUs`;
80
+ const data = await post(endpoint, { email: email, name: name, subject: subject, message: message });
81
+ return { success: true, message: data.message };
82
+ }
83
+ catch (error) {
84
+ console.error('Error contacting trippeaze: ', error);
85
+ return {
86
+ success: false,
87
+ error: error.message,
88
+ };
89
+ }
90
+ }
91
+ // resume
92
+ export async function saveUserResume(file) {
93
+ try {
94
+ const endpoint = `/users/resume-update`;
95
+ const formData = new FormData();
96
+ formData.append('resume', file);
97
+ const data = await patch(endpoint, formData);
98
+ return {
99
+ success: true,
100
+ message: data.message,
101
+ user: data.data,
102
+ };
103
+ }
104
+ catch (error) {
105
+ return { success: false, error: error.message, user: null };
106
+ }
107
+ }
108
+ export async function getUserContact(username, role) {
109
+ try {
110
+ const endpoint = `/${role}s/getUserContact/${username}`;
111
+ const data = await get(endpoint);
112
+ return {
113
+ success: true,
114
+ message: data.message,
115
+ details: data.data,
116
+ };
117
+ }
118
+ catch (error) {
119
+ return {
120
+ success: false,
121
+ error: error.message,
122
+ details: null,
123
+ };
124
+ }
125
+ }
126
+ // rating and reviews
127
+ export async function getReviewsById(id, type) {
128
+ try {
129
+ const endpoint = `/reviews/entity/${id}/${type}`;
130
+ const data = await get(endpoint);
131
+ // const data = { data: sampleReviews, message: "success" };
132
+ return {
133
+ success: true,
134
+ reviews: data.data,
135
+ message: data.message,
136
+ };
137
+ }
138
+ catch (error) {
139
+ console.error('Failed to get reviews: ', error);
140
+ return {
141
+ success: true,
142
+ reviews: [],
143
+ error: error.message,
144
+ };
145
+ }
146
+ }
147
+ export async function getRatingById(id, type) {
148
+ try {
149
+ const endpoint = `/reviews/entity/${id}`;
150
+ const data = await get(endpoint);
151
+ // const data = {
152
+ // data:
153
+ // [{
154
+ // slug: id[0] ?? "",
155
+ // rating: truncateDecimal(sampleReviews.reduce((acc, review) => acc + review.rating, 0) / sampleReviews.length, 1),
156
+ // ratingCount: sampleReviews.length,
157
+ // reviewCount: 100,
158
+ // }],
159
+ // message: "success"
160
+ // }
161
+ return {
162
+ success: true,
163
+ ratings: data.data,
164
+ message: data.message,
165
+ };
166
+ }
167
+ catch (error) {
168
+ console.error('Failed to get reviews: ', error);
169
+ return {
170
+ success: true,
171
+ ratings: [],
172
+ error: error.message,
173
+ };
174
+ }
175
+ }
176
+ export async function addReview(id, type, formData) {
177
+ try {
178
+ const endpoint = `/reviews/`;
179
+ const data = await post(endpoint, { reviewee: id, revieweeType: type, rating: formData.rating, comment: formData.comment });
180
+ return {
181
+ success: true,
182
+ review: data.data,
183
+ message: data.message,
184
+ };
185
+ }
186
+ catch (error) {
187
+ console.error('Failed to get reviews: ', error);
188
+ return {
189
+ success: false,
190
+ review: null,
191
+ error: error.message,
192
+ };
193
+ }
194
+ }
195
+ export async function editReview(id, formData) {
196
+ try {
197
+ const endpoint = `/reviews/${id}`;
198
+ const data = await patch(endpoint, { rating: formData.rating, comment: formData.comment });
199
+ return {
200
+ success: true,
201
+ review: data.data,
202
+ message: data.message,
203
+ };
204
+ }
205
+ catch (error) {
206
+ console.error('Failed to get reviews: ', error);
207
+ return {
208
+ success: false,
209
+ review: null,
210
+ error: error.message,
211
+ };
212
+ }
213
+ }
214
+ export async function deleteReview(id) {
215
+ try {
216
+ const endpoint = `/reviews/${id}`;
217
+ const data = await del(endpoint);
218
+ return {
219
+ success: true,
220
+ message: data.message,
221
+ };
222
+ }
223
+ catch (error) {
224
+ console.error('Failed to get reviews: ', error);
225
+ return {
226
+ success: false,
227
+ error: error.message,
228
+ };
229
+ }
230
+ }
231
+ // notifications
232
+ export async function getAllNotifications() {
233
+ try {
234
+ const endpoint = `/notification?all=true`;
235
+ const data = await get(endpoint);
236
+ return {
237
+ success: true,
238
+ message: data.message,
239
+ notifs: data.data.notifications,
240
+ unreadCount: data.data.unreadCount,
241
+ };
242
+ }
243
+ catch (error) {
244
+ console.error('Failed to fetch notifications: ', error);
245
+ return {
246
+ success: false,
247
+ error: error.message,
248
+ notifs: [],
249
+ unreadCount: 0,
250
+ };
251
+ }
252
+ }
253
+ export async function getNotifications(limit) {
254
+ try {
255
+ const endpoint = `/notification?limit=${limit}`;
256
+ const data = await get(endpoint);
257
+ return {
258
+ success: true,
259
+ message: data.message,
260
+ notifs: data.data.notifications,
261
+ unreadCount: data.data.unreadCount,
262
+ };
263
+ }
264
+ catch (error) {
265
+ console.error('Failed to fetch notifications: ', error);
266
+ return {
267
+ success: false,
268
+ error: error.message,
269
+ notifs: [],
270
+ unreadCount: 0,
271
+ };
272
+ }
273
+ }
274
+ export async function toggleNotification(id, read) {
275
+ try {
276
+ const endpoint = `/notfication/${id}`;
277
+ const data = await patch(endpoint, { isRead: read });
278
+ return {
279
+ success: true,
280
+ message: data.message,
281
+ };
282
+ }
283
+ catch (error) {
284
+ console.error('Failed to toggle notfication: ', error);
285
+ return {
286
+ success: false,
287
+ error: error.message,
288
+ };
289
+ }
290
+ }
291
+ export async function toggleAllNotification(read) {
292
+ try {
293
+ const endpoint = `/notfication/update/all`;
294
+ const data = await patch(endpoint, { isRead: read });
295
+ return {
296
+ success: true,
297
+ message: data.message,
298
+ };
299
+ }
300
+ catch (error) {
301
+ console.error('Failed to toggle all notfications: ', error);
302
+ return {
303
+ success: false,
304
+ error: error.message,
305
+ };
306
+ }
307
+ }
@@ -0,0 +1,146 @@
1
+ export declare function signIn(formData: {
2
+ email: string;
3
+ password: string;
4
+ role: string;
5
+ }): Promise<{
6
+ user: {
7
+ username: string;
8
+ firstName: string;
9
+ lastName: string;
10
+ email: string;
11
+ password: string;
12
+ phoneNumber: string;
13
+ gender: "male" | "female" | "other";
14
+ rating: number;
15
+ ratingCount: number;
16
+ reviewCount: number;
17
+ joinedDate: Date;
18
+ isActive: boolean;
19
+ lastActive: Date;
20
+ verifiedEmail: boolean;
21
+ verifiedMobile: boolean;
22
+ role: "host" | "user" | "admin" | "hr" | "sales";
23
+ location?: string | undefined;
24
+ pinCode?: string | undefined;
25
+ dob?: Date | undefined;
26
+ profilePic?: string | undefined;
27
+ blogsCount?: number | undefined;
28
+ userBio?: string | undefined;
29
+ userIdCard?: string | undefined;
30
+ watchHistory?: string[] | undefined;
31
+ accessToken?: string | undefined;
32
+ refreshToken?: string | undefined;
33
+ verifiedIdCard?: boolean | undefined;
34
+ socialLinks?: Record<string, string> | undefined;
35
+ userResume?: string | undefined;
36
+ skills?: {
37
+ skill: string;
38
+ skillExpertise: number;
39
+ }[] | undefined;
40
+ wishlist?: string[] | undefined;
41
+ favBlogs?: string[] | undefined;
42
+ favPackages?: string[] | undefined;
43
+ id?: string | undefined;
44
+ selfie?: string | undefined;
45
+ selfieAction?: string | undefined;
46
+ jobCount?: number | undefined;
47
+ travelPackageCount?: number | undefined;
48
+ gstNumber?: string | undefined;
49
+ panCard?: string | undefined;
50
+ verifiedBusiness?: "true" | "false" | "inProgress" | undefined;
51
+ };
52
+ message: string;
53
+ success?: undefined;
54
+ status?: undefined;
55
+ error?: undefined;
56
+ } | {
57
+ success: boolean;
58
+ status: any;
59
+ error: any;
60
+ user?: undefined;
61
+ message?: undefined;
62
+ }>;
63
+ export declare function logoutUser(role: string): Promise<{
64
+ success: boolean;
65
+ message?: string;
66
+ error?: string;
67
+ }>;
68
+ export declare function verifyEmailOtp(email: string, otp: string, role: "user" | "host"): Promise<{
69
+ user: {
70
+ username: string;
71
+ firstName: string;
72
+ lastName: string;
73
+ email: string;
74
+ password: string;
75
+ phoneNumber: string;
76
+ gender: "male" | "female" | "other";
77
+ rating: number;
78
+ ratingCount: number;
79
+ reviewCount: number;
80
+ joinedDate: Date;
81
+ isActive: boolean;
82
+ lastActive: Date;
83
+ verifiedEmail: boolean;
84
+ verifiedMobile: boolean;
85
+ role: "host" | "user" | "admin" | "hr" | "sales";
86
+ location?: string | undefined;
87
+ pinCode?: string | undefined;
88
+ dob?: Date | undefined;
89
+ profilePic?: string | undefined;
90
+ blogsCount?: number | undefined;
91
+ userBio?: string | undefined;
92
+ userIdCard?: string | undefined;
93
+ watchHistory?: string[] | undefined;
94
+ accessToken?: string | undefined;
95
+ refreshToken?: string | undefined;
96
+ verifiedIdCard?: boolean | undefined;
97
+ socialLinks?: Record<string, string> | undefined;
98
+ userResume?: string | undefined;
99
+ skills?: {
100
+ skill: string;
101
+ skillExpertise: number;
102
+ }[] | undefined;
103
+ wishlist?: string[] | undefined;
104
+ favBlogs?: string[] | undefined;
105
+ favPackages?: string[] | undefined;
106
+ id?: string | undefined;
107
+ selfie?: string | undefined;
108
+ selfieAction?: string | undefined;
109
+ jobCount?: number | undefined;
110
+ travelPackageCount?: number | undefined;
111
+ gstNumber?: string | undefined;
112
+ panCard?: string | undefined;
113
+ verifiedBusiness?: "true" | "false" | "inProgress" | undefined;
114
+ };
115
+ message: string;
116
+ success?: undefined;
117
+ status?: undefined;
118
+ error?: undefined;
119
+ } | {
120
+ success: boolean;
121
+ status: any;
122
+ error: any;
123
+ user?: undefined;
124
+ message?: undefined;
125
+ }>;
126
+ export declare function sendPasswordResetEmail(email: string, role: string): Promise<{
127
+ success: boolean;
128
+ message?: string;
129
+ error?: string;
130
+ }>;
131
+ export declare function changePassword(password: string, oldPassword: string, role: string): Promise<{
132
+ success: boolean;
133
+ message?: string;
134
+ error?: string;
135
+ }>;
136
+ export declare function resetPassword(password: string, token: string, role: string): Promise<{
137
+ success: boolean;
138
+ message?: string;
139
+ error?: string;
140
+ }>;
141
+ export declare function validateSession(): Promise<{
142
+ success: boolean;
143
+ message?: string;
144
+ error?: string;
145
+ }>;
146
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAGA,wBAAsB,MAAM,CAAC,QAAQ,EAAE;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAeA;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAa9G;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAcrF;AAED,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBzI;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBzJ;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBlJ;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAevG"}
@@ -0,0 +1,125 @@
1
+ import { get, patch, post } from "./fetcher";
2
+ export async function signIn(formData) {
3
+ try {
4
+ let endpoint = '/users/login';
5
+ if (formData.role === 'host')
6
+ endpoint = '/hosts/login';
7
+ const data = await post(endpoint, formData);
8
+ console.log('Response:', data);
9
+ return {
10
+ user: data.data.user,
11
+ message: data.message,
12
+ };
13
+ }
14
+ catch (error) {
15
+ console.error(error.message);
16
+ return { success: false, status: error.status, error: error.message };
17
+ }
18
+ }
19
+ export async function logoutUser(role) {
20
+ try {
21
+ let endpoint = '/users/logout';
22
+ if (role === 'host')
23
+ endpoint = '/hosts/logout';
24
+ const response = await get(endpoint);
25
+ return {
26
+ success: true,
27
+ message: response.message
28
+ };
29
+ }
30
+ catch (error) {
31
+ console.error(error.message);
32
+ return { success: false, error: error.message };
33
+ }
34
+ }
35
+ export async function verifyEmailOtp(email, otp, role) {
36
+ try {
37
+ let endpoint = `/users/verify-otp`;
38
+ if (role === 'host')
39
+ endpoint = `/hosts/verify-otp`;
40
+ const data = await post(endpoint, { email: email, emailOtp: otp });
41
+ console.log('Response:', data);
42
+ return {
43
+ user: data.data.user,
44
+ message: data.message,
45
+ };
46
+ }
47
+ catch (error) {
48
+ console.error(error.message);
49
+ return { success: false, status: error.status, error: error.message };
50
+ }
51
+ }
52
+ export async function sendPasswordResetEmail(email, role) {
53
+ try {
54
+ let endpoint = `/users/forgot-password`;
55
+ if (role === 'host')
56
+ endpoint = `/hosts/forgot-password`;
57
+ const data = await post(endpoint, { email: email });
58
+ return {
59
+ success: true,
60
+ message: data.message
61
+ };
62
+ }
63
+ catch (error) {
64
+ console.error('Error sending reset password:', error);
65
+ return {
66
+ success: false,
67
+ error: error.message,
68
+ };
69
+ }
70
+ }
71
+ export async function changePassword(password, oldPassword, role) {
72
+ try {
73
+ let endpoint = `/users/change-password`;
74
+ if (role === 'host')
75
+ endpoint = `/hosts/change-password`;
76
+ const data = await patch(endpoint, { oldPassword: oldPassword, password: password });
77
+ return {
78
+ success: true,
79
+ message: data.message
80
+ };
81
+ }
82
+ catch (error) {
83
+ console.error('Error changing password:', error);
84
+ return {
85
+ success: false,
86
+ error: error.message,
87
+ };
88
+ }
89
+ }
90
+ export async function resetPassword(password, token, role) {
91
+ try {
92
+ let endpoint = `/users/reset-password/${token}`;
93
+ if (role === 'host')
94
+ endpoint = `/hosts/reset-password/${token}`;
95
+ const data = await post(endpoint, { token: token, password: password });
96
+ return {
97
+ success: true,
98
+ message: data.message
99
+ };
100
+ }
101
+ catch (error) {
102
+ console.error('Error changing password:', error);
103
+ return {
104
+ success: false,
105
+ error: error.message,
106
+ };
107
+ }
108
+ }
109
+ export async function validateSession() {
110
+ try {
111
+ const endpoint = '/users/verifySession';
112
+ const data = await get(endpoint);
113
+ return {
114
+ success: true,
115
+ message: data.message
116
+ };
117
+ }
118
+ catch (error) {
119
+ console.error(error);
120
+ return {
121
+ success: false,
122
+ error: error.message,
123
+ };
124
+ }
125
+ }
@@ -0,0 +1,2 @@
1
+ export default function AuthSessionManager(): null;
2
+ //# sourceMappingURL=authSessionManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authSessionManager.d.ts","sourceRoot":"","sources":["../../src/lib/authSessionManager.tsx"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,UAAU,kBAAkB,SA8BzC"}
@@ -0,0 +1,34 @@
1
+ 'use client';
2
+ import { useAtom } from 'jotai'; // Import useSetAtom
3
+ import { useEffect } from 'react';
4
+ import { useQuery } from '@tanstack/react-query';
5
+ import { initializeAuthSessionAtom, resetAuthState } from './userAtom'; // Import the atom itself
6
+ import { validateSession } from './auth';
7
+ export default function AuthSessionManager() {
8
+ const [, initializeAuthSession] = useAtom(initializeAuthSessionAtom);
9
+ // --- Initial Session Load ---
10
+ useEffect(() => {
11
+ initializeAuthSession();
12
+ }, [initializeAuthSession]);
13
+ // --- Continuous Background Re-validation ---
14
+ const { isError } = useQuery({
15
+ queryKey: ['session'],
16
+ queryFn: validateSession,
17
+ // --- Configuration for a seamless experience ---
18
+ refetchOnWindowFocus: true,
19
+ refetchOnReconnect: true,
20
+ retry: (failureCount, error) => {
21
+ if (error.response?.status === 401)
22
+ return false;
23
+ return failureCount < 2;
24
+ },
25
+ staleTime: 15 * 60 * 1000,
26
+ });
27
+ useEffect(() => {
28
+ if (isError) {
29
+ console.log("Session validation failed. Logging out.");
30
+ resetAuthState();
31
+ }
32
+ }, [isError, resetAuthState]);
33
+ return null;
34
+ }
@@ -0,0 +1,9 @@
1
+ type FetchMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
2
+ export declare function refreshToken<T>(input: string, method: FetchMethod, body?: any): Promise<T>;
3
+ export declare function get<T>(url: string): Promise<T>;
4
+ export declare function post<T>(url: string, body: any): Promise<T>;
5
+ export declare function put<T>(url: string, body: any): Promise<T>;
6
+ export declare function patch<T>(url: string, body: any): Promise<T>;
7
+ export declare function del<T>(url: string, body?: any): Promise<T>;
8
+ export {};
9
+ //# sourceMappingURL=fetcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../src/lib/fetcher.ts"],"names":[],"mappings":"AAKA,KAAK,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AA0D/D,wBAAsB,YAAY,CAAC,CAAC,EAChC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,EACnB,IAAI,CAAC,EAAE,GAAG,GACX,OAAO,CAAC,CAAC,CAAC,CAgBZ;AAGD,wBAAsB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,cAEvC;AAED,wBAAsB,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,cAEnD;AAED,wBAAsB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,cAElD;AAED,wBAAsB,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,cAEpD;AAED,wBAAsB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,cAEnD"}