@myrjfa/state 2.3.1 → 2.3.3
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/lib/actions/actions.d.ts +6 -6
- package/dist/lib/actions/auth.d.ts +23 -19
- package/dist/lib/actions/auth.d.ts.map +1 -1
- package/dist/lib/actions/auth.js +24 -5
- package/dist/lib/actions/chat.d.ts +20 -14
- package/dist/lib/actions/chat.d.ts.map +1 -1
- package/dist/lib/actions/chat.js +2 -2
- package/dist/lib/actions/fetcher.d.ts.map +1 -1
- package/dist/lib/actions/fetcher.js +15 -8
- package/dist/lib/actions.d.ts +12 -12
- package/dist/lib/actions.d.ts.map +1 -1
- package/dist/lib/actions.js +3 -1
- package/dist/lib/authSessionManager.d.ts.map +1 -1
- package/dist/lib/authSessionManager.js +77 -13
- package/dist/lib/authSessionPolicy.d.ts +34 -0
- package/dist/lib/authSessionPolicy.d.ts.map +1 -1
- package/dist/lib/authSessionPolicy.js +52 -0
- package/dist/lib/context/ChatContext.d.ts.map +1 -1
- package/dist/lib/context/ChatContext.js +12 -6
- package/dist/lib/models/authorization.d.ts +4 -3
- package/dist/lib/models/authorization.d.ts.map +1 -1
- package/dist/lib/models/authorization.js +10 -4
- package/dist/lib/models/blog.d.ts +4 -4
- package/dist/lib/models/chat.d.ts +10 -2
- package/dist/lib/models/chat.d.ts.map +1 -1
- package/dist/lib/models/chat.js +8 -0
- package/dist/lib/models/discount.d.ts +52 -52
- package/dist/lib/models/notifications.d.ts +2 -2
- package/dist/lib/models/opportunities/freelance.d.ts +34 -34
- package/dist/lib/models/opportunities/internship.d.ts +34 -34
- package/dist/lib/models/opportunities/job.d.ts +34 -34
- package/dist/lib/models/opportunities/opportunity.d.ts +34 -34
- package/dist/lib/models/opportunities/volunteerJob.d.ts +34 -34
- package/dist/lib/models/package.d.ts +16 -16
- package/dist/lib/models/portfolio.d.ts +2 -2
- package/dist/lib/models/pricing.d.ts +12 -12
- package/dist/lib/models/review.d.ts +2 -2
- package/dist/lib/models/stay.d.ts +18 -18
- package/dist/lib/models/travelPackage.d.ts +36 -36
- package/dist/lib/models/user.d.ts +12 -12
- package/dist/lib/userAtom.d.ts +126 -25
- package/dist/lib/userAtom.d.ts.map +1 -1
- package/dist/lib/userAtom.js +79 -45
- package/package.json +1 -1
- package/dist/lib/actions/adminDashboard.d.ts +0 -4
- package/dist/lib/actions/adminDashboard.d.ts.map +0 -1
- package/dist/lib/actions/adminDashboard.js +0 -29
- package/dist/lib/actions/adventure.d.ts +0 -104
- package/dist/lib/actions/adventure.d.ts.map +0 -1
- package/dist/lib/actions/adventure.js +0 -203
- package/dist/lib/actions/application.d.ts +0 -35
- package/dist/lib/actions/application.d.ts.map +0 -1
- package/dist/lib/actions/application.js +0 -573
- package/dist/lib/actions/blog.d.ts +0 -61
- package/dist/lib/actions/blog.d.ts.map +0 -1
- package/dist/lib/actions/blog.js +0 -762
- package/dist/lib/actions/brand.d.ts +0 -83
- package/dist/lib/actions/brand.d.ts.map +0 -1
- package/dist/lib/actions/brand.js +0 -28
- package/dist/lib/actions/companion.d.ts +0 -174
- package/dist/lib/actions/companion.d.ts.map +0 -1
- package/dist/lib/actions/companion.js +0 -276
- package/dist/lib/actions/event.d.ts +0 -178
- package/dist/lib/actions/event.d.ts.map +0 -1
- package/dist/lib/actions/event.js +0 -214
- package/dist/lib/actions/guide.d.ts +0 -55
- package/dist/lib/actions/guide.d.ts.map +0 -1
- package/dist/lib/actions/guide.js +0 -128
- package/dist/lib/actions/hostDashboard.d.ts +0 -122
- package/dist/lib/actions/hostDashboard.d.ts.map +0 -1
- package/dist/lib/actions/hostDashboard.js +0 -329
- package/dist/lib/actions/location.d.ts +0 -141
- package/dist/lib/actions/location.d.ts.map +0 -1
- package/dist/lib/actions/location.js +0 -113
- package/dist/lib/actions/notifications.d.ts +0 -91
- package/dist/lib/actions/notifications.d.ts.map +0 -1
- package/dist/lib/actions/notifications.js +0 -83
- package/dist/lib/actions/opportunity.d.ts +0 -44
- package/dist/lib/actions/opportunity.d.ts.map +0 -1
- package/dist/lib/actions/opportunity.js +0 -318
- package/dist/lib/actions/package.d.ts +0 -85
- package/dist/lib/actions/package.d.ts.map +0 -1
- package/dist/lib/actions/package.js +0 -167
- package/dist/lib/actions/place.d.ts +0 -191
- package/dist/lib/actions/place.d.ts.map +0 -1
- package/dist/lib/actions/place.js +0 -57
- package/dist/lib/actions/portfolio.d.ts +0 -65
- package/dist/lib/actions/portfolio.d.ts.map +0 -1
- package/dist/lib/actions/portfolio.js +0 -62
- package/dist/lib/actions/property.d.ts +0 -17
- package/dist/lib/actions/property.d.ts.map +0 -1
- package/dist/lib/actions/property.js +0 -16
- package/dist/lib/actions/rental.d.ts +0 -87
- package/dist/lib/actions/rental.d.ts.map +0 -1
- package/dist/lib/actions/rental.js +0 -205
- package/dist/lib/actions/review.d.ts +0 -8
- package/dist/lib/actions/review.d.ts.map +0 -1
- package/dist/lib/actions/review.js +0 -102
- package/dist/lib/actions/room.d.ts +0 -39
- package/dist/lib/actions/room.d.ts.map +0 -1
- package/dist/lib/actions/room.js +0 -74
- package/dist/lib/actions/stay.d.ts +0 -97
- package/dist/lib/actions/stay.d.ts.map +0 -1
- package/dist/lib/actions/stay.js +0 -138
- package/dist/lib/actions/travelPackage.d.ts +0 -104
- package/dist/lib/actions/travelPackage.d.ts.map +0 -1
- package/dist/lib/actions/travelPackage.js +0 -487
- package/dist/lib/data/adventureDummyData.d.ts +0 -3
- package/dist/lib/data/adventureDummyData.d.ts.map +0 -1
- package/dist/lib/data/adventureDummyData.js +0 -138
- package/dist/lib/data/adventureFormPage.d.ts +0 -28
- package/dist/lib/data/adventureFormPage.d.ts.map +0 -1
- package/dist/lib/data/adventureFormPage.js +0 -58
- package/dist/lib/data/companionDummyData.d.ts +0 -99
- package/dist/lib/data/companionDummyData.d.ts.map +0 -1
- package/dist/lib/data/companionDummyData.js +0 -203
- package/dist/lib/data/destinations.d.ts +0 -14
- package/dist/lib/data/destinations.d.ts.map +0 -1
- package/dist/lib/data/destinations.js +0 -203
- package/dist/lib/data/eventFormPage.d.ts +0 -38
- package/dist/lib/data/eventFormPage.d.ts.map +0 -1
- package/dist/lib/data/eventFormPage.js +0 -56
- package/dist/lib/data/eventsDummyData.d.ts +0 -54
- package/dist/lib/data/eventsDummyData.d.ts.map +0 -1
- package/dist/lib/data/eventsDummyData.js +0 -586
- package/dist/lib/data/guideDummyData.d.ts +0 -3
- package/dist/lib/data/guideDummyData.d.ts.map +0 -1
- package/dist/lib/data/guideDummyData.js +0 -66
- package/dist/lib/data/opportunityFormData.d.ts +0 -13
- package/dist/lib/data/opportunityFormData.d.ts.map +0 -1
- package/dist/lib/data/opportunityFormData.js +0 -62
- package/dist/lib/data/opportunityFormPage.d.ts +0 -12
- package/dist/lib/data/opportunityFormPage.d.ts.map +0 -1
- package/dist/lib/data/opportunityFormPage.js +0 -33
- package/dist/lib/data/packageDummyData.d.ts +0 -3
- package/dist/lib/data/packageDummyData.d.ts.map +0 -1
- package/dist/lib/data/packageDummyData.js +0 -56
- package/dist/lib/data/rentalDummyData.d.ts +0 -3
- package/dist/lib/data/rentalDummyData.d.ts.map +0 -1
- package/dist/lib/data/rentalDummyData.js +0 -382
- package/dist/lib/data/rentalFormPage.d.ts +0 -11
- package/dist/lib/data/rentalFormPage.d.ts.map +0 -1
- package/dist/lib/data/rentalFormPage.js +0 -86
- package/dist/lib/data/staysDummyData.d.ts +0 -72
- package/dist/lib/data/staysDummyData.d.ts.map +0 -1
- package/dist/lib/data/staysDummyData.js +0 -694
- package/dist/lib/data/storeDummyData.d.ts +0 -33
- package/dist/lib/data/storeDummyData.d.ts.map +0 -1
- package/dist/lib/data/storeDummyData.js +0 -336
- package/dist/lib/data/travelPackageFormData.d.ts +0 -19
- package/dist/lib/data/travelPackageFormData.d.ts.map +0 -1
- package/dist/lib/data/travelPackageFormData.js +0 -51
- package/dist/lib/data/travelPackageFormPage.d.ts +0 -22
- package/dist/lib/data/travelPackageFormPage.d.ts.map +0 -1
- package/dist/lib/data/travelPackageFormPage.js +0 -40
- package/dist/lib/data/vehicleData.d.ts +0 -2
- package/dist/lib/data/vehicleData.d.ts.map +0 -1
- package/dist/lib/data/vehicleData.js +0 -187
- package/dist/lib/data/vehicleModels.d.ts +0 -2
- package/dist/lib/data/vehicleModels.d.ts.map +0 -1
- package/dist/lib/data/vehicleModels.js +0 -128
- package/dist/lib/hooks/usePersistentDraftState.d.ts +0 -20
- package/dist/lib/hooks/usePersistentDraftState.d.ts.map +0 -1
- package/dist/lib/hooks/usePersistentDraftState.js +0 -47
- package/dist/lib/models/forms.d.ts +0 -384
- package/dist/lib/models/forms.d.ts.map +0 -1
- package/dist/lib/models/forms.js +0 -121
- package/dist/lib/pricingActions.d.ts +0 -13
- package/dist/lib/pricingActions.d.ts.map +0 -1
- package/dist/lib/pricingActions.js +0 -16
- package/dist/lib/utils/entitySubmission.d.ts +0 -21
- package/dist/lib/utils/entitySubmission.d.ts.map +0 -1
- package/dist/lib/utils/entitySubmission.js +0 -10
- package/dist/lib/utils/imageUpload.d.ts +0 -4
- package/dist/lib/utils/imageUpload.d.ts.map +0 -1
- package/dist/lib/utils/imageUpload.js +0 -36
- package/dist/lib/utils/tileConverters.d.ts +0 -8
- package/dist/lib/utils/tileConverters.d.ts.map +0 -1
- package/dist/lib/utils/tileConverters.js +0 -59
package/dist/lib/userAtom.js
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
import CryptoJS from 'crypto-js';
|
|
3
3
|
import { atom, getDefaultStore } from 'jotai';
|
|
4
4
|
import { atomWithStorage } from 'jotai/utils';
|
|
5
|
-
import {
|
|
5
|
+
import { clearSessionCookies } from './actions/auth';
|
|
6
|
+
import { canFinishAuthCleanup, clearCacheMissSessionBoundary, isAuthSessionPending, } from './authSessionPolicy';
|
|
6
7
|
const STORAGE_KEY = process.env.NEXT_PUBLIC_USER_KEY;
|
|
7
8
|
const LOGIN_KEY = process.env.NEXT_PUBLIC_LOGIN_KEY;
|
|
8
9
|
const SECRET_KEY = process.env.NEXT_PUBLIC_RACE;
|
|
@@ -35,14 +36,14 @@ const getWithExpiry = (key) => {
|
|
|
35
36
|
return null;
|
|
36
37
|
const { value, expiry } = data;
|
|
37
38
|
if (Date.now() > expiry) {
|
|
38
|
-
|
|
39
|
+
localStorage.removeItem(key);
|
|
39
40
|
return null;
|
|
40
41
|
}
|
|
41
42
|
return value;
|
|
42
43
|
}
|
|
43
44
|
catch (e) {
|
|
44
45
|
console.warn('Invalid user data:', e);
|
|
45
|
-
|
|
46
|
+
localStorage.removeItem(key);
|
|
46
47
|
return null;
|
|
47
48
|
}
|
|
48
49
|
};
|
|
@@ -64,68 +65,99 @@ export const userAtom = atomWithStorage(STORAGE_KEY, null, {
|
|
|
64
65
|
removeItem: (key) => localStorage.removeItem(key),
|
|
65
66
|
});
|
|
66
67
|
export const isLoggedInAtom = atomWithStorage(LOGIN_KEY, false);
|
|
68
|
+
/**
|
|
69
|
+
* Changes whenever a login/logout boundary occurs.
|
|
70
|
+
*
|
|
71
|
+
* Background session requests capture this value. Responses belonging to an
|
|
72
|
+
* older revision must not clear a newer authenticated state.
|
|
73
|
+
*/
|
|
74
|
+
export const authRevisionAtom = atom(0);
|
|
75
|
+
/** Backend reconciliation state for the currently persisted identity. */
|
|
76
|
+
export const authSessionStatusAtom = atom("initializing");
|
|
77
|
+
/**
|
|
78
|
+
* Atomically commits a successful login to the active Jotai store.
|
|
79
|
+
*/
|
|
80
|
+
export const commitLoginAtom = atom(null, (_get, set, authenticatedUser) => {
|
|
81
|
+
set(userAtom, authenticatedUser);
|
|
82
|
+
set(isLoggedInAtom, true);
|
|
83
|
+
set(storageInitializedAtom, true);
|
|
84
|
+
set(authSessionStatusAtom, "authenticated");
|
|
85
|
+
set(authRevisionAtom, (revision) => revision + 1);
|
|
86
|
+
});
|
|
67
87
|
// 🕒 Tracks if user is loading
|
|
68
88
|
export const userLoadingAtom = atom((get) => {
|
|
69
|
-
// The issue was here - we need to properly track initialization state
|
|
70
89
|
const initialized = get(storageInitializedAtom);
|
|
71
|
-
|
|
72
|
-
|
|
90
|
+
const sessionStatus = get(authSessionStatusAtom);
|
|
91
|
+
// Reconciliation is an authentication boundary, not background cosmetic
|
|
92
|
+
// work. Keep login/register controls unavailable until validation or
|
|
93
|
+
// cookie cleanup settles so a late Set-Cookie response cannot erase a
|
|
94
|
+
// newly-created session.
|
|
95
|
+
return !initialized || isAuthSessionPending(sessionStatus);
|
|
96
|
+
});
|
|
97
|
+
export const resetAuthStateAtom = atom(null, (_get, set) => {
|
|
98
|
+
if (typeof window === "undefined")
|
|
99
|
+
return;
|
|
100
|
+
localStorage.removeItem(STORAGE_KEY);
|
|
101
|
+
localStorage.removeItem(LOGIN_KEY);
|
|
102
|
+
// Update the active Jotai store used by the calling React component.
|
|
103
|
+
set(userAtom, null);
|
|
104
|
+
set(isLoggedInAtom, false);
|
|
105
|
+
set(storageInitializedAtom, true);
|
|
106
|
+
set(authSessionStatusAtom, "signed-out");
|
|
107
|
+
set(authRevisionAtom, (revision) => revision + 1);
|
|
108
|
+
});
|
|
109
|
+
/**
|
|
110
|
+
* Clears provisional browser identity while keeping public auth controls
|
|
111
|
+
* disabled until the backend cookie/device cleanup request has settled.
|
|
112
|
+
*/
|
|
113
|
+
export const beginAuthCleanupAtom = atom(null, (_get, set) => {
|
|
114
|
+
if (typeof window === "undefined")
|
|
115
|
+
return;
|
|
116
|
+
localStorage.removeItem(STORAGE_KEY);
|
|
117
|
+
localStorage.removeItem(LOGIN_KEY);
|
|
118
|
+
set(userAtom, null);
|
|
119
|
+
set(isLoggedInAtom, false);
|
|
120
|
+
set(storageInitializedAtom, true);
|
|
121
|
+
set(authSessionStatusAtom, "clearing");
|
|
122
|
+
set(authRevisionAtom, (revision) => revision + 1);
|
|
123
|
+
});
|
|
124
|
+
export const finishAuthCleanupAtom = atom(null, (get, set, expectedRevision) => {
|
|
125
|
+
if (!canFinishAuthCleanup(expectedRevision, get(authRevisionAtom)))
|
|
126
|
+
return;
|
|
127
|
+
set(authSessionStatusAtom, "signed-out");
|
|
73
128
|
});
|
|
74
129
|
// Initialize storage atom effect
|
|
75
130
|
export const initializeAuthSessionAtom = atom(null, async (get, set) => {
|
|
76
131
|
// Only run in browser
|
|
77
132
|
if (typeof window === 'undefined')
|
|
78
133
|
return;
|
|
79
|
-
//
|
|
80
|
-
//
|
|
81
|
-
// if (session.success) {
|
|
82
|
-
// Session validated successfully
|
|
83
|
-
// } else {
|
|
84
|
-
// resetAuthState();
|
|
85
|
-
// set(storageInitializedAtom, true);
|
|
86
|
-
// return;
|
|
87
|
-
// }
|
|
88
|
-
// NOTE: if validateSession fails we do NOT reset — we just fall through
|
|
89
|
-
// to cache/API. A failed ping could mean the backend is temporarily down,
|
|
90
|
-
// the user is a host (different endpoint), etc. We only clear state if we
|
|
91
|
-
// POSITIVELY know the user is logged out (getCurrentUser fails).
|
|
92
|
-
// 2. Try cache (localStorage)
|
|
134
|
+
// Try the local identity cache first. It remains provisional until the
|
|
135
|
+
// backend confirms that the cookies belong to the same actor.
|
|
93
136
|
const userData = getWithExpiry(STORAGE_KEY);
|
|
94
137
|
if (userData) {
|
|
95
|
-
set(
|
|
96
|
-
set(
|
|
97
|
-
set(storageInitializedAtom, true);
|
|
138
|
+
set(commitLoginAtom, userData);
|
|
139
|
+
set(authSessionStatusAtom, "validating");
|
|
98
140
|
return;
|
|
99
141
|
}
|
|
100
|
-
//
|
|
142
|
+
// Missing persisted identity is always a cleanup boundary. The endpoint
|
|
143
|
+
// is idempotent for a fresh guest and revokes stale cookie-only sessions.
|
|
144
|
+
set(beginAuthCleanupAtom);
|
|
145
|
+
const cleanupRevision = get(authRevisionAtom);
|
|
101
146
|
try {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
setWithExpiry(STORAGE_KEY, remoteUser); // Write to local cache for next time
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
resetAuthState();
|
|
111
|
-
}
|
|
147
|
+
await clearCacheMissSessionBoundary({
|
|
148
|
+
cleanupRevision,
|
|
149
|
+
getCurrentRevision: () => get(authRevisionAtom),
|
|
150
|
+
clearSession: clearSessionCookies,
|
|
151
|
+
});
|
|
112
152
|
}
|
|
113
153
|
catch {
|
|
114
|
-
|
|
154
|
+
// clearSessionCookies is bounded. Local signed-out state is still
|
|
155
|
+
// published only after the cleanup attempt has settled.
|
|
115
156
|
}
|
|
116
157
|
finally {
|
|
117
|
-
set(
|
|
158
|
+
set(finishAuthCleanupAtom, cleanupRevision);
|
|
118
159
|
}
|
|
119
160
|
});
|
|
120
|
-
export const resetAuthStateAtom = atom(null, (_get, set) => {
|
|
121
|
-
if (typeof window === 'undefined')
|
|
122
|
-
return;
|
|
123
|
-
localStorage.removeItem(STORAGE_KEY);
|
|
124
|
-
localStorage.removeItem(LOGIN_KEY);
|
|
125
|
-
set(userAtom, null);
|
|
126
|
-
set(isLoggedInAtom, false);
|
|
127
|
-
set(storageInitializedAtom, true);
|
|
128
|
-
});
|
|
129
161
|
export function resetAuthState() {
|
|
130
162
|
if (typeof window === 'undefined') {
|
|
131
163
|
console.warn('resetAuthState called on server — skipped');
|
|
@@ -136,4 +168,6 @@ export function resetAuthState() {
|
|
|
136
168
|
store.set(userAtom, null);
|
|
137
169
|
store.set(isLoggedInAtom, false);
|
|
138
170
|
store.set(storageInitializedAtom, true);
|
|
171
|
+
store.set(authSessionStatusAtom, "signed-out");
|
|
172
|
+
store.set(authRevisionAtom, (revision) => revision + 1);
|
|
139
173
|
}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adminDashboard.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/adminDashboard.ts"],"names":[],"mappings":"AAIA,wBAAsB,mBAAmB,iBAOxC;AAED,wBAAsB,gBAAgB,iBAOrC;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,gBAO1D"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
// --- Payouts actions --- //
|
|
2
|
-
import { get, post } from "./fetcher";
|
|
3
|
-
export async function getPayoutRecipients() {
|
|
4
|
-
try {
|
|
5
|
-
const data = await get("/admin/payouts/recipients");
|
|
6
|
-
return { success: true, ...data };
|
|
7
|
-
}
|
|
8
|
-
catch (error) {
|
|
9
|
-
return { success: false, error: error.message };
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
export async function getPayoutHistory() {
|
|
13
|
-
try {
|
|
14
|
-
const data = await get("/admin/payouts/history");
|
|
15
|
-
return { success: true, ...data };
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
return { success: false, error: error.message };
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
export async function recordManualPayout(formData) {
|
|
22
|
-
try {
|
|
23
|
-
const data = await post("/admin/payouts/record", formData);
|
|
24
|
-
return { success: true, ...data };
|
|
25
|
-
}
|
|
26
|
-
catch (error) {
|
|
27
|
-
return { success: false, error: error.message };
|
|
28
|
-
}
|
|
29
|
-
}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { Adventure, AdventureMetaData } from "../models/adventure";
|
|
2
|
-
import { TileProps } from "../models/tile";
|
|
3
|
-
export declare function getAdventureTiles(limit?: number, filters?: {
|
|
4
|
-
activityType?: string;
|
|
5
|
-
difficulty?: string;
|
|
6
|
-
sort?: "popular" | "latest";
|
|
7
|
-
}): Promise<{
|
|
8
|
-
success: boolean;
|
|
9
|
-
tiles: TileProps[];
|
|
10
|
-
message?: string;
|
|
11
|
-
error?: string;
|
|
12
|
-
}>;
|
|
13
|
-
export declare function trendingAdventureTiles(limit: number): Promise<{
|
|
14
|
-
success: boolean;
|
|
15
|
-
tiles: TileProps[];
|
|
16
|
-
message?: string;
|
|
17
|
-
error?: string;
|
|
18
|
-
}>;
|
|
19
|
-
export declare function adventureDetails(slug: string, options?: {
|
|
20
|
-
edit?: boolean;
|
|
21
|
-
}): Promise<{
|
|
22
|
-
success: boolean;
|
|
23
|
-
adventure: Adventure | null;
|
|
24
|
-
message?: string;
|
|
25
|
-
error?: string;
|
|
26
|
-
}>;
|
|
27
|
-
export declare function adventureMetaData(slug: string): Promise<{
|
|
28
|
-
success: boolean;
|
|
29
|
-
metadata: AdventureMetaData | null;
|
|
30
|
-
message?: string;
|
|
31
|
-
error?: string;
|
|
32
|
-
}>;
|
|
33
|
-
export declare function adventuresByUsername(username: string, limit?: number): Promise<{
|
|
34
|
-
success: boolean;
|
|
35
|
-
tiles: TileProps[];
|
|
36
|
-
message?: string;
|
|
37
|
-
error?: string;
|
|
38
|
-
}>;
|
|
39
|
-
export declare function adminAdventuresByHost(username: string): Promise<{
|
|
40
|
-
success: boolean;
|
|
41
|
-
adventures: Adventure[];
|
|
42
|
-
error?: string;
|
|
43
|
-
}>;
|
|
44
|
-
export declare function adventuresByHost(): Promise<{
|
|
45
|
-
success: boolean;
|
|
46
|
-
adventures: Adventure[];
|
|
47
|
-
message?: string;
|
|
48
|
-
error?: string;
|
|
49
|
-
}>;
|
|
50
|
-
export declare function createAdventure(formData: FormData): Promise<{
|
|
51
|
-
success: boolean;
|
|
52
|
-
slug?: string;
|
|
53
|
-
message?: string;
|
|
54
|
-
error?: string;
|
|
55
|
-
}>;
|
|
56
|
-
export declare function editAdventure(formData: FormData, slug: string): Promise<{
|
|
57
|
-
success: boolean;
|
|
58
|
-
message?: string;
|
|
59
|
-
error?: string;
|
|
60
|
-
}>;
|
|
61
|
-
export declare function patchAdventureStatus(slug: string, status: string): Promise<{
|
|
62
|
-
success: boolean;
|
|
63
|
-
error?: string;
|
|
64
|
-
}>;
|
|
65
|
-
export declare function deleteAdventure(slug: string): Promise<{
|
|
66
|
-
success: boolean;
|
|
67
|
-
message?: string;
|
|
68
|
-
error?: string;
|
|
69
|
-
}>;
|
|
70
|
-
export declare function getPendingAdventures(): Promise<{
|
|
71
|
-
success: boolean;
|
|
72
|
-
adventures: Adventure[];
|
|
73
|
-
message?: string;
|
|
74
|
-
error?: string;
|
|
75
|
-
}>;
|
|
76
|
-
export declare function approveAdventure(slug: string): Promise<{
|
|
77
|
-
success: boolean;
|
|
78
|
-
message?: string;
|
|
79
|
-
error?: string;
|
|
80
|
-
}>;
|
|
81
|
-
export declare function rejectAdventure(slug: string, rejectionReason: string): Promise<{
|
|
82
|
-
success: boolean;
|
|
83
|
-
message?: string;
|
|
84
|
-
error?: string;
|
|
85
|
-
}>;
|
|
86
|
-
export declare function getAdventureBookingsAdmin(slugOrId: string): Promise<{
|
|
87
|
-
success: boolean;
|
|
88
|
-
bookings: any[];
|
|
89
|
-
error?: string;
|
|
90
|
-
}>;
|
|
91
|
-
export declare function submitAdventureQuery(slug: string, payload: {
|
|
92
|
-
name?: string;
|
|
93
|
-
email?: string;
|
|
94
|
-
phone?: string;
|
|
95
|
-
message: string;
|
|
96
|
-
preferredDate?: string | null;
|
|
97
|
-
preferredTime?: string | null;
|
|
98
|
-
numberOfPeople?: number;
|
|
99
|
-
}): Promise<{
|
|
100
|
-
success: boolean;
|
|
101
|
-
message?: string;
|
|
102
|
-
error?: string;
|
|
103
|
-
}>;
|
|
104
|
-
//# sourceMappingURL=adventure.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adventure.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/adventure.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
import { get, patch, post, del } from "./fetcher";
|
|
2
|
-
import { calculatePricingStrategyDisplayUnitPrice, getPrimaryPricingStrategy, getPricingCurrency } from "../models/pricing";
|
|
3
|
-
// ─── Public ───────────────────────────────────────────────────────────────────
|
|
4
|
-
export async function getAdventureTiles(limit, filters) {
|
|
5
|
-
try {
|
|
6
|
-
let endpoint = `/adventures/getAllAdventureTiles?status=open`;
|
|
7
|
-
if (limit)
|
|
8
|
-
endpoint += `&limit=${limit}`;
|
|
9
|
-
if (filters?.activityType)
|
|
10
|
-
endpoint += `&activityType=${filters.activityType}`;
|
|
11
|
-
if (filters?.difficulty)
|
|
12
|
-
endpoint += `&difficulty=${filters.difficulty}`;
|
|
13
|
-
if (filters?.sort)
|
|
14
|
-
endpoint += `&sort=${filters.sort}`;
|
|
15
|
-
const data = await get(endpoint);
|
|
16
|
-
return {
|
|
17
|
-
success: true,
|
|
18
|
-
message: data.message,
|
|
19
|
-
tiles: data.data.map(adventureToTile),
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
catch (error) {
|
|
23
|
-
console.error("Failed to fetch adventure tiles:", error);
|
|
24
|
-
return { success: false, error: error.message, tiles: [] };
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
export async function trendingAdventureTiles(limit) {
|
|
28
|
-
return getAdventureTiles(limit, { sort: "popular" });
|
|
29
|
-
}
|
|
30
|
-
export async function adventureDetails(slug, options = {}) {
|
|
31
|
-
try {
|
|
32
|
-
const query = options.edit ? "?context=edit" : "";
|
|
33
|
-
const data = await get(`/adventures/getAdventure/${slug}${query}`);
|
|
34
|
-
return { success: true, message: data.message, adventure: data.data };
|
|
35
|
-
}
|
|
36
|
-
catch (error) {
|
|
37
|
-
console.error("Failed to fetch adventure details:", error);
|
|
38
|
-
return { success: false, error: error.message, adventure: null };
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
export async function adventureMetaData(slug) {
|
|
42
|
-
try {
|
|
43
|
-
const data = await get(`/adventures/getAdventure/${slug}`);
|
|
44
|
-
const a = data.data;
|
|
45
|
-
return {
|
|
46
|
-
success: true,
|
|
47
|
-
metadata: {
|
|
48
|
-
image: a.images?.[0] || "/images/placeholder.svg",
|
|
49
|
-
title: a.title,
|
|
50
|
-
city: a.city,
|
|
51
|
-
state: a.state,
|
|
52
|
-
activityType: a.activityType,
|
|
53
|
-
difficulty: a.difficulty,
|
|
54
|
-
price: calculatePricingStrategyDisplayUnitPrice(getPrimaryPricingStrategy(a)),
|
|
55
|
-
currency: getPricingCurrency(a),
|
|
56
|
-
},
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
return { success: false, error: error.message, metadata: null };
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
export async function adventuresByUsername(username, limit) {
|
|
64
|
-
try {
|
|
65
|
-
let endpoint = `/adventures/getAdventuresByUsername/${username}`;
|
|
66
|
-
if (limit)
|
|
67
|
-
endpoint += `?limit=${limit}`;
|
|
68
|
-
const data = await get(endpoint);
|
|
69
|
-
return { success: true, tiles: data.data.map(adventureToTile) };
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
return { success: false, error: error.message, tiles: [] };
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
export async function adminAdventuresByHost(username) {
|
|
76
|
-
try {
|
|
77
|
-
const data = await get(`/adventures/getAdventuresByUsername/${username}?status=open,pending,draft,denied,archived,closed`);
|
|
78
|
-
return { success: true, adventures: data.data || [] };
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
return { success: false, adventures: [], error: error.message };
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
// ─── Host Dashboard ───────────────────────────────────────────────────────────
|
|
85
|
-
export async function adventuresByHost() {
|
|
86
|
-
try {
|
|
87
|
-
const data = await get(`/adventures/myAdventures`);
|
|
88
|
-
return { success: true, message: data.message, adventures: data.data };
|
|
89
|
-
}
|
|
90
|
-
catch (error) {
|
|
91
|
-
return { success: false, error: error.message, adventures: [] };
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
export async function createAdventure(formData) {
|
|
95
|
-
try {
|
|
96
|
-
const data = await post(`/adventures/create`, formData);
|
|
97
|
-
return { success: true, slug: data.data, message: data.message };
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
return { success: false, error: error.message };
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
export async function editAdventure(formData, slug) {
|
|
104
|
-
try {
|
|
105
|
-
const data = await patch(`/adventures/update/${slug}`, formData);
|
|
106
|
-
return { success: true, message: data.message };
|
|
107
|
-
}
|
|
108
|
-
catch (error) {
|
|
109
|
-
return { success: false, error: error.message };
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
export async function patchAdventureStatus(slug, status) {
|
|
113
|
-
try {
|
|
114
|
-
await patch(`/adventures/update/${slug}`, { status });
|
|
115
|
-
return { success: true };
|
|
116
|
-
}
|
|
117
|
-
catch (error) {
|
|
118
|
-
return { success: false, error: error.message };
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
export async function deleteAdventure(slug) {
|
|
122
|
-
try {
|
|
123
|
-
const data = await del(`/adventures/delete/${slug}`);
|
|
124
|
-
return { success: true, message: data.message };
|
|
125
|
-
}
|
|
126
|
-
catch (error) {
|
|
127
|
-
return { success: false, error: error.message };
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
// ─── Admin ────────────────────────────────────────────────────────────────────
|
|
131
|
-
export async function getPendingAdventures() {
|
|
132
|
-
try {
|
|
133
|
-
const data = await get(`/admin/adventures?status=all`);
|
|
134
|
-
return { success: true, message: data.message, adventures: data.data };
|
|
135
|
-
}
|
|
136
|
-
catch (error) {
|
|
137
|
-
return { success: false, error: error.message, adventures: [] };
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
export async function approveAdventure(slug) {
|
|
141
|
-
try {
|
|
142
|
-
const data = await patch(`/admin/adventures/approve/${slug}`, {});
|
|
143
|
-
return { success: true, message: data.message };
|
|
144
|
-
}
|
|
145
|
-
catch (error) {
|
|
146
|
-
return { success: false, error: error.message };
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
export async function rejectAdventure(slug, rejectionReason) {
|
|
150
|
-
try {
|
|
151
|
-
const data = await patch(`/admin/adventures/reject/${slug}`, { rejectionReason });
|
|
152
|
-
return { success: true, message: data.message };
|
|
153
|
-
}
|
|
154
|
-
catch (error) {
|
|
155
|
-
return { success: false, error: error.message };
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
export async function getAdventureBookingsAdmin(slugOrId) {
|
|
159
|
-
try {
|
|
160
|
-
const data = await get(`/adventures/host/${slugOrId}/bookings`);
|
|
161
|
-
return { success: true, bookings: data.data || [] };
|
|
162
|
-
}
|
|
163
|
-
catch (error) {
|
|
164
|
-
return { success: false, bookings: [], error: error.message };
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
export async function submitAdventureQuery(slug, payload) {
|
|
168
|
-
try {
|
|
169
|
-
const data = await post(`/adventures/getAdventure/${slug}/query`, payload);
|
|
170
|
-
return { success: true, message: data.message };
|
|
171
|
-
}
|
|
172
|
-
catch (error) {
|
|
173
|
-
return { success: false, error: error.message };
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
// ─── Helper ───────────────────────────────────────────────────────────────────
|
|
177
|
-
function adventureToTile(adventure) {
|
|
178
|
-
const rawHost = adventure.host ?? adventure.hostId;
|
|
179
|
-
const hostName = rawHost?.name ||
|
|
180
|
-
rawHost?.username ||
|
|
181
|
-
[rawHost?.firstName, rawHost?.lastName].filter(Boolean).join(" ") ||
|
|
182
|
-
"";
|
|
183
|
-
return {
|
|
184
|
-
slug: adventure.slug || "",
|
|
185
|
-
image: adventure.images?.[0] || "/images/placeholder.svg",
|
|
186
|
-
title: adventure.title || "",
|
|
187
|
-
description: adventure.description || "",
|
|
188
|
-
location: `${adventure.city}, ${adventure.state}`,
|
|
189
|
-
date: adventure.createdAt,
|
|
190
|
-
rating: adventure.rating,
|
|
191
|
-
price: calculatePricingStrategyDisplayUnitPrice(getPrimaryPricingStrategy(adventure)),
|
|
192
|
-
currency: getPricingCurrency(adventure),
|
|
193
|
-
duration: adventure.duration,
|
|
194
|
-
difficultyLevel: adventure.difficulty?.toLowerCase(),
|
|
195
|
-
tileType: "adventures",
|
|
196
|
-
host: rawHost
|
|
197
|
-
? {
|
|
198
|
-
name: hostName || "Host",
|
|
199
|
-
image: rawHost.image || rawHost.profilePic,
|
|
200
|
-
}
|
|
201
|
-
: undefined,
|
|
202
|
-
};
|
|
203
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { Application } from "../models/application";
|
|
2
|
-
export declare function getVolunteerApplicationForm(slug: string): Promise<{
|
|
3
|
-
success: boolean;
|
|
4
|
-
message?: string;
|
|
5
|
-
error?: string;
|
|
6
|
-
application: Application | null;
|
|
7
|
-
}>;
|
|
8
|
-
export declare function applicationDetails(applicationId: string): Promise<{
|
|
9
|
-
success: boolean;
|
|
10
|
-
message?: string;
|
|
11
|
-
error?: string;
|
|
12
|
-
application: Application | null;
|
|
13
|
-
}>;
|
|
14
|
-
export declare function getApplicationsForOpportunity(slug: string): Promise<{
|
|
15
|
-
success: boolean;
|
|
16
|
-
message?: string;
|
|
17
|
-
error?: string;
|
|
18
|
-
applications: Application[];
|
|
19
|
-
}>;
|
|
20
|
-
export declare function saveApplicationForm(formData: FormData): Promise<{
|
|
21
|
-
success: boolean;
|
|
22
|
-
message?: string;
|
|
23
|
-
error?: string;
|
|
24
|
-
}>;
|
|
25
|
-
export declare function updateApplicationStatus(status: string, id: string): Promise<{
|
|
26
|
-
success: boolean;
|
|
27
|
-
message?: string;
|
|
28
|
-
error?: string;
|
|
29
|
-
}>;
|
|
30
|
-
export declare function editApplication(formData: FormData, id: string): Promise<{
|
|
31
|
-
success: boolean;
|
|
32
|
-
message?: string;
|
|
33
|
-
error?: string;
|
|
34
|
-
}>;
|
|
35
|
-
//# sourceMappingURL=application.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/application.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAiGzD,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvE,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;CACjC,CAAC,CAYD;AAuFD,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IACvE,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;CACjC,CAAC,CAYD;AAuFD,wBAAsB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACzE,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B,CAAC,CAYD;AAuFD,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiBjE;AAuFD,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,GACT,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBjE;AAuFD,wBAAsB,eAAe,CACnC,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiBjE"}
|