@myrjfa/state 3.0.8 → 3.0.10

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 (180) hide show
  1. package/dist/lib/actions/application.d.ts +5 -3
  2. package/dist/lib/actions/application.d.ts.map +1 -1
  3. package/dist/lib/actions/application.js +45 -2
  4. package/dist/lib/actions/auth.d.ts +20 -3
  5. package/dist/lib/actions/auth.d.ts.map +1 -1
  6. package/dist/lib/actions/auth.js +31 -0
  7. package/dist/lib/actions/blog.d.ts.map +1 -1
  8. package/dist/lib/actions/blog.js +3 -2
  9. package/dist/lib/actions/booking.d.ts +29 -1
  10. package/dist/lib/actions/booking.d.ts.map +1 -1
  11. package/dist/lib/actions/booking.js +186 -0
  12. package/dist/lib/actions/brand.d.ts +7 -0
  13. package/dist/lib/actions/brand.d.ts.map +1 -1
  14. package/dist/lib/actions/brand.js +4 -0
  15. package/dist/lib/actions/chat.d.ts +3 -0
  16. package/dist/lib/actions/chat.d.ts.map +1 -1
  17. package/dist/lib/actions/chat.js +40 -1
  18. package/dist/lib/actions/community.d.ts +2 -1
  19. package/dist/lib/actions/community.d.ts.map +1 -1
  20. package/dist/lib/actions/community.js +10 -4
  21. package/dist/lib/actions/companion.d.ts +13 -7
  22. package/dist/lib/actions/companion.d.ts.map +1 -1
  23. package/dist/lib/actions/companion.js +6 -4
  24. package/dist/lib/actions/companionUpload.d.ts +2 -1
  25. package/dist/lib/actions/companionUpload.d.ts.map +1 -1
  26. package/dist/lib/actions/companionUpload.js +2 -1
  27. package/dist/lib/actions/event.d.ts +1 -1
  28. package/dist/lib/actions/event.d.ts.map +1 -1
  29. package/dist/lib/actions/event.js +5 -2
  30. package/dist/lib/actions/fetcher.d.ts +7 -1
  31. package/dist/lib/actions/fetcher.d.ts.map +1 -1
  32. package/dist/lib/actions/fetcher.js +82 -62
  33. package/dist/lib/actions/guide.js +1 -0
  34. package/dist/lib/actions/homeBanner.d.ts +8 -0
  35. package/dist/lib/actions/homeBanner.d.ts.map +1 -0
  36. package/dist/lib/actions/homeBanner.js +33 -0
  37. package/dist/lib/actions/hostDashboard.d.ts +1 -11
  38. package/dist/lib/actions/hostDashboard.d.ts.map +1 -1
  39. package/dist/lib/actions/hostDashboard.js +1 -146
  40. package/dist/lib/actions/itinerary.d.ts +1 -1
  41. package/dist/lib/actions/itinerary.d.ts.map +1 -1
  42. package/dist/lib/actions/itinerary.js +2 -2
  43. package/dist/lib/actions/listingInterest.d.ts +2 -5
  44. package/dist/lib/actions/listingInterest.d.ts.map +1 -1
  45. package/dist/lib/actions/listingInterest.js +18 -3
  46. package/dist/lib/actions/location.d.ts +4 -0
  47. package/dist/lib/actions/location.d.ts.map +1 -1
  48. package/dist/lib/actions/location.js +10 -6
  49. package/dist/lib/actions/marketplaceContract.d.ts.map +1 -1
  50. package/dist/lib/actions/marketplaceContract.js +3 -2
  51. package/dist/lib/actions/nativeTransport.d.ts +25 -0
  52. package/dist/lib/actions/nativeTransport.d.ts.map +1 -0
  53. package/dist/lib/actions/nativeTransport.js +50 -0
  54. package/dist/lib/actions/notification.d.ts +3 -3
  55. package/dist/lib/actions/package.d.ts +5 -3
  56. package/dist/lib/actions/package.d.ts.map +1 -1
  57. package/dist/lib/actions/package.js +11 -6
  58. package/dist/lib/actions/profile.d.ts +5 -0
  59. package/dist/lib/actions/profile.d.ts.map +1 -1
  60. package/dist/lib/actions/profile.js +12 -0
  61. package/dist/lib/actions/review.d.ts +7 -0
  62. package/dist/lib/actions/review.d.ts.map +1 -1
  63. package/dist/lib/actions/review.js +64 -31
  64. package/dist/lib/actions/serverActions.d.ts.map +1 -1
  65. package/dist/lib/actions/serverActions.js +3 -2
  66. package/dist/lib/actions/serverActions.native.d.ts +4 -0
  67. package/dist/lib/actions/serverActions.native.d.ts.map +1 -0
  68. package/dist/lib/actions/serverActions.native.js +5 -0
  69. package/dist/lib/actions/socket.d.ts.map +1 -1
  70. package/dist/lib/actions/socket.js +6 -5
  71. package/dist/lib/actions/stay.d.ts +14 -1
  72. package/dist/lib/actions/stay.d.ts.map +1 -1
  73. package/dist/lib/actions/stay.js +29 -2
  74. package/dist/lib/actions/store.d.ts +1 -0
  75. package/dist/lib/actions/store.d.ts.map +1 -1
  76. package/dist/lib/actions/store.js +9 -0
  77. package/dist/lib/actions/user.d.ts +2 -0
  78. package/dist/lib/actions/user.d.ts.map +1 -1
  79. package/dist/lib/actions/user.js +5 -0
  80. package/dist/lib/authSessionManager.d.ts.map +1 -1
  81. package/dist/lib/authSessionManager.js +42 -39
  82. package/dist/lib/authSessionPolicy.d.ts +2 -0
  83. package/dist/lib/authSessionPolicy.d.ts.map +1 -1
  84. package/dist/lib/authSessionPolicy.js +3 -1
  85. package/dist/lib/data/catalogueLocations.d.ts +3 -0
  86. package/dist/lib/data/catalogueLocations.d.ts.map +1 -0
  87. package/dist/lib/data/catalogueLocations.js +21 -0
  88. package/dist/lib/data/skills.d.ts +5 -0
  89. package/dist/lib/data/skills.d.ts.map +1 -0
  90. package/dist/lib/data/skills.js +97 -0
  91. package/dist/lib/forms/application.d.ts +4 -0
  92. package/dist/lib/forms/application.d.ts.map +1 -0
  93. package/dist/lib/forms/application.js +17 -0
  94. package/dist/lib/forms/packageEnquiry.d.ts +4 -0
  95. package/dist/lib/forms/packageEnquiry.d.ts.map +1 -0
  96. package/dist/lib/forms/packageEnquiry.js +12 -0
  97. package/dist/lib/forms/review.d.ts +6 -0
  98. package/dist/lib/forms/review.d.ts.map +1 -0
  99. package/dist/lib/forms/review.js +20 -0
  100. package/dist/lib/models/application.d.ts +21 -0
  101. package/dist/lib/models/application.d.ts.map +1 -1
  102. package/dist/lib/models/authorization.d.ts +1 -1
  103. package/dist/lib/models/authorization.d.ts.map +1 -1
  104. package/dist/lib/models/authorization.js +2 -0
  105. package/dist/lib/models/booking.d.ts +3 -0
  106. package/dist/lib/models/booking.d.ts.map +1 -1
  107. package/dist/lib/models/chat.d.ts +8 -0
  108. package/dist/lib/models/chat.d.ts.map +1 -1
  109. package/dist/lib/models/chat.js +10 -0
  110. package/dist/lib/models/community.d.ts +2 -0
  111. package/dist/lib/models/community.d.ts.map +1 -1
  112. package/dist/lib/models/community.js +2 -1
  113. package/dist/lib/models/companion.d.ts +42 -0
  114. package/dist/lib/models/companion.d.ts.map +1 -1
  115. package/dist/lib/models/discount.d.ts +8 -8
  116. package/dist/lib/models/enquiry.d.ts +13 -0
  117. package/dist/lib/models/enquiry.d.ts.map +1 -1
  118. package/dist/lib/models/homeBanner.d.ts +17 -0
  119. package/dist/lib/models/homeBanner.d.ts.map +1 -0
  120. package/dist/lib/models/homeBanner.js +1 -0
  121. package/dist/lib/models/interest.d.ts +42 -0
  122. package/dist/lib/models/interest.d.ts.map +1 -0
  123. package/dist/lib/models/interest.js +1 -0
  124. package/dist/lib/models/location.d.ts +1 -0
  125. package/dist/lib/models/location.d.ts.map +1 -1
  126. package/dist/lib/models/notifications.d.ts +2 -2
  127. package/dist/lib/models/opportunities/freelance.d.ts +37 -4
  128. package/dist/lib/models/opportunities/freelance.d.ts.map +1 -1
  129. package/dist/lib/models/opportunities/internship.d.ts +37 -4
  130. package/dist/lib/models/opportunities/internship.d.ts.map +1 -1
  131. package/dist/lib/models/opportunities/job.d.ts +37 -4
  132. package/dist/lib/models/opportunities/job.d.ts.map +1 -1
  133. package/dist/lib/models/opportunities/opportunity.d.ts +38 -5
  134. package/dist/lib/models/opportunities/opportunity.d.ts.map +1 -1
  135. package/dist/lib/models/opportunities/opportunity.js +1 -1
  136. package/dist/lib/models/opportunities/volunteerJob.d.ts +37 -4
  137. package/dist/lib/models/opportunities/volunteerJob.d.ts.map +1 -1
  138. package/dist/lib/models/pricing.d.ts +2 -0
  139. package/dist/lib/models/pricing.d.ts.map +1 -1
  140. package/dist/lib/models/pricing.js +4 -0
  141. package/dist/lib/models/props.d.ts +4 -43
  142. package/dist/lib/models/props.d.ts.map +1 -1
  143. package/dist/lib/models/props.js +3 -121
  144. package/dist/lib/models/question.d.ts +14 -0
  145. package/dist/lib/models/question.d.ts.map +1 -0
  146. package/dist/lib/models/question.js +6 -0
  147. package/dist/lib/models/review.d.ts +13 -1
  148. package/dist/lib/models/review.d.ts.map +1 -1
  149. package/dist/lib/models/review.js +4 -0
  150. package/dist/lib/models/tile.d.ts +7 -1
  151. package/dist/lib/models/tile.d.ts.map +1 -1
  152. package/dist/lib/models/travelPackage.d.ts +37 -4
  153. package/dist/lib/models/travelPackage.d.ts.map +1 -1
  154. package/dist/lib/models/travelPackage.js +1 -1
  155. package/dist/lib/models/user.d.ts +25 -2
  156. package/dist/lib/models/user.d.ts.map +1 -1
  157. package/dist/lib/models/user.js +1 -0
  158. package/dist/lib/userAtom.d.ts +30 -5
  159. package/dist/lib/userAtom.d.ts.map +1 -1
  160. package/dist/lib/userAtom.js +16 -25
  161. package/dist/lib/utils/authCookies.d.ts +3 -0
  162. package/dist/lib/utils/authCookies.d.ts.map +1 -0
  163. package/dist/lib/utils/authCookies.js +4 -0
  164. package/dist/lib/utils/entityTiles.d.ts.map +1 -1
  165. package/dist/lib/utils/entityTiles.js +3 -2
  166. package/dist/lib/utils/htmlDescription.d.ts +3 -0
  167. package/dist/lib/utils/htmlDescription.d.ts.map +1 -0
  168. package/dist/lib/utils/htmlDescription.js +7 -0
  169. package/dist/lib/utils/htmlDescription.native.d.ts +3 -0
  170. package/dist/lib/utils/htmlDescription.native.d.ts.map +1 -0
  171. package/dist/lib/utils/htmlDescription.native.js +7 -0
  172. package/dist/lib/utils/text.d.ts +3 -1
  173. package/dist/lib/utils/text.d.ts.map +1 -1
  174. package/dist/lib/utils/text.js +5 -6
  175. package/dist/lib/utils/uploadFile.d.ts +9 -0
  176. package/dist/lib/utils/uploadFile.d.ts.map +1 -0
  177. package/dist/lib/utils/uploadFile.js +9 -0
  178. package/dist/lib/utils/uploadTasks.d.ts.map +1 -1
  179. package/dist/lib/utils/uploadTasks.js +9 -1
  180. package/package.json +1 -2
@@ -1,4 +1,4 @@
1
- import type { Application } from "../models/application";
1
+ import type { Application, ApplicationInput } from "../models/application";
2
2
  export declare function getVolunteerApplicationForm(slug: string): Promise<{
3
3
  success: boolean;
4
4
  message?: string;
@@ -17,20 +17,22 @@ export declare function getApplicationsForOpportunity(slug: string): Promise<{
17
17
  error?: string;
18
18
  applications: Application[];
19
19
  }>;
20
- export declare function saveApplicationForm(formData: FormData): Promise<{
20
+ export declare function saveApplicationForm(formData: FormData | ApplicationInput): Promise<{
21
21
  success: boolean;
22
22
  message?: string;
23
23
  error?: string;
24
+ application?: Application;
24
25
  }>;
25
26
  export declare function updateApplicationStatus(status: string, id: string): Promise<{
26
27
  success: boolean;
27
28
  message?: string;
28
29
  error?: string;
29
30
  }>;
30
- export declare function editApplication(formData: FormData, id: string): Promise<{
31
+ export declare function editApplication(formData: FormData | ApplicationInput, id: string): Promise<{
31
32
  success: boolean;
32
33
  message?: string;
33
34
  error?: string;
35
+ application?: Application;
34
36
  }>;
35
37
  export declare function getApplicationsOfVolunteer(): Promise<{
36
38
  success: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/application.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,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;AACD,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;AAED,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;AAED,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,CAgBjE;AAED,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;AAED,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,CAgBjE;AAED,wBAAsB,0BAA0B,IAAI,OAAO,CAAC;IAC1D,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;AAED,wBAAsB,uBAAuB,CAC3C,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,CAcjE"}
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/application.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG3E,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,CA2BD;AACD,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,CAmBD;AAED,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;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,QAAQ,GAAG,gBAAgB,GACpC,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC,CA0BD;AAED,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;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,QAAQ,GAAG,gBAAgB,EACrC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC,CA4BD;AAED,wBAAsB,0BAA0B,IAAI,OAAO,CAAC;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B,CAAC,CAsBD;AAED,wBAAsB,uBAAuB,CAC3C,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,CAcjE"}
@@ -1,12 +1,25 @@
1
1
  import { runUploadTask } from "../utils/uploadTasks";
2
2
  import { del, get, patch, post } from "./fetcher";
3
+ import { getNativeTransport } from "./nativeTransport";
4
+ import { applicationFormData } from "../forms/application";
3
5
  export async function getVolunteerApplicationForm(slug) {
4
6
  try {
5
7
  const endpoint = `/applications/getApplicationByUserAndSlug/${slug}`;
6
8
  const data = await get(endpoint);
9
+ if (data.data !== null &&
10
+ (!data.data ||
11
+ typeof data.data._id !== "string" ||
12
+ typeof data.data.opportunityId !== "string"))
13
+ throw new Error("Application response could not be read.");
7
14
  return { success: true, message: data.message, application: data.data };
8
15
  }
9
16
  catch (error) {
17
+ // The deployed legacy controller wraps its precise not-found outcome in
18
+ // HTTP500. Only this exact outcome is absence; outages/auth remain errors.
19
+ if (getNativeTransport() &&
20
+ [404, 500].includes(error.statusCode) &&
21
+ error.message === "Application not found")
22
+ return { success: true, application: null };
10
23
  return {
11
24
  success: false,
12
25
  error: error.message,
@@ -18,6 +31,11 @@ export async function applicationDetails(applicationId) {
18
31
  try {
19
32
  const endpoint = `/applications/getSingleApplication/${applicationId}`;
20
33
  const data = await get(endpoint);
34
+ if (data.data !== null &&
35
+ (!data.data ||
36
+ typeof data.data._id !== "string" ||
37
+ typeof data.data.opportunityId !== "string"))
38
+ throw new Error("Application response could not be read.");
21
39
  return { success: true, message: data.message, application: data.data };
22
40
  }
23
41
  catch (error) {
@@ -44,9 +62,18 @@ export async function getApplicationsForOpportunity(slug) {
44
62
  }
45
63
  export async function saveApplicationForm(formData) {
46
64
  try {
65
+ const body = formData instanceof FormData ? formData : applicationFormData(formData);
47
66
  const endpoint = `/applications/applyForOpportunity`;
48
- const data = await runUploadTask({ title: 'Application', retrySafe: false, href: typeof window === "undefined" ? undefined : window.location.pathname, operation: ({ progress }) => post(endpoint, formData, true, { onUploadProgress: progress }) });
67
+ const data = await runUploadTask({
68
+ title: "Application",
69
+ retrySafe: false,
70
+ href: typeof window === "undefined" || !window.location
71
+ ? "/applications"
72
+ : window.location.pathname,
73
+ operation: ({ progress }) => post(endpoint, body, true, { onUploadProgress: progress }),
74
+ });
49
75
  return {
76
+ application: data.data,
50
77
  success: true,
51
78
  message: data.message,
52
79
  };
@@ -78,9 +105,20 @@ export async function updateApplicationStatus(status, id) {
78
105
  }
79
106
  export async function editApplication(formData, id) {
80
107
  try {
108
+ const body = formData instanceof FormData
109
+ ? formData
110
+ : applicationFormData(formData, true);
81
111
  const endpoint = `/applications/updateApplication/${id}`;
82
- const data = await runUploadTask({ title: 'Application', retrySafe: true, href: typeof window === "undefined" ? undefined : window.location.pathname, operation: ({ progress }) => patch(endpoint, formData, { onUploadProgress: progress }) });
112
+ const data = await runUploadTask({
113
+ title: "Application",
114
+ retrySafe: !getNativeTransport(),
115
+ href: typeof window === "undefined" || !window.location
116
+ ? "/applications"
117
+ : window.location.pathname,
118
+ operation: ({ progress }) => patch(endpoint, body, { onUploadProgress: progress }),
119
+ });
83
120
  return {
121
+ application: data.data,
84
122
  success: true,
85
123
  message: data.message,
86
124
  };
@@ -96,6 +134,11 @@ export async function getApplicationsOfVolunteer() {
96
134
  try {
97
135
  const endpoint = `/applications/getApplicationsOfVolunteer`;
98
136
  const data = await get(endpoint);
137
+ if (!Array.isArray(data.data) ||
138
+ data.data.some((row) => !row ||
139
+ typeof row._id !== "string" ||
140
+ typeof row.opportunityId !== "string"))
141
+ throw new Error("Application list could not be read.");
99
142
  return { success: true, message: data.message, applications: data.data };
100
143
  }
101
144
  catch (error) {
@@ -1,3 +1,4 @@
1
+ import { User } from "../models/user";
1
2
  import type { AuthenticationAccountType, RegisterPayload, RecoveryDevice } from "../models/authentication";
2
3
  import type { SessionIdentity } from "../authSessionPolicy";
3
4
  export declare function signIn(formData: {
@@ -40,6 +41,11 @@ export declare function signIn(formData: {
40
41
  accessToken?: string | undefined;
41
42
  refreshToken?: string | undefined;
42
43
  verifiedIdCard?: boolean | undefined;
44
+ identityVerification?: {
45
+ documentSubmitted: boolean;
46
+ selfieSubmitted: boolean;
47
+ verified: boolean;
48
+ } | undefined;
43
49
  permissions?: string[] | undefined;
44
50
  baseUserId?: string | null | undefined;
45
51
  baseHostId?: string | null | undefined;
@@ -73,7 +79,7 @@ export declare function signIn(formData: {
73
79
  businessDocument?: string | undefined;
74
80
  businessIdType?: "PAN" | "GST" | "Udyam" | "PersonalPAN" | undefined;
75
81
  businessIdNumber?: string | undefined;
76
- businessApiVerificationStatus?: "pending" | "verified" | "failed" | undefined;
82
+ businessApiVerificationStatus?: "verified" | "pending" | "failed" | undefined;
77
83
  businessVerificationDenialReason?: string | undefined;
78
84
  };
79
85
  message: string;
@@ -128,6 +134,11 @@ export declare function signInStaff(formData: {
128
134
  accessToken?: string | undefined;
129
135
  refreshToken?: string | undefined;
130
136
  verifiedIdCard?: boolean | undefined;
137
+ identityVerification?: {
138
+ documentSubmitted: boolean;
139
+ selfieSubmitted: boolean;
140
+ verified: boolean;
141
+ } | undefined;
131
142
  permissions?: string[] | undefined;
132
143
  baseUserId?: string | null | undefined;
133
144
  baseHostId?: string | null | undefined;
@@ -161,7 +172,7 @@ export declare function signInStaff(formData: {
161
172
  businessDocument?: string | undefined;
162
173
  businessIdType?: "PAN" | "GST" | "Udyam" | "PersonalPAN" | undefined;
163
174
  businessIdNumber?: string | undefined;
164
- businessApiVerificationStatus?: "pending" | "verified" | "failed" | undefined;
175
+ businessApiVerificationStatus?: "verified" | "pending" | "failed" | undefined;
165
176
  businessVerificationDenialReason?: string | undefined;
166
177
  };
167
178
  message: string;
@@ -218,6 +229,11 @@ export declare function verifyEmailOtp(email: string, otp: string, role: "user"
218
229
  accessToken?: string | undefined;
219
230
  refreshToken?: string | undefined;
220
231
  verifiedIdCard?: boolean | undefined;
232
+ identityVerification?: {
233
+ documentSubmitted: boolean;
234
+ selfieSubmitted: boolean;
235
+ verified: boolean;
236
+ } | undefined;
221
237
  permissions?: string[] | undefined;
222
238
  baseUserId?: string | null | undefined;
223
239
  baseHostId?: string | null | undefined;
@@ -251,7 +267,7 @@ export declare function verifyEmailOtp(email: string, otp: string, role: "user"
251
267
  businessDocument?: string | undefined;
252
268
  businessIdType?: "PAN" | "GST" | "Udyam" | "PersonalPAN" | undefined;
253
269
  businessIdNumber?: string | undefined;
254
- businessApiVerificationStatus?: "pending" | "verified" | "failed" | undefined;
270
+ businessApiVerificationStatus?: "verified" | "pending" | "failed" | undefined;
255
271
  businessVerificationDenialReason?: string | undefined;
256
272
  };
257
273
  message: string;
@@ -283,6 +299,7 @@ export declare function resetPassword(password: string, token: string, role: str
283
299
  export declare function validateSession(): Promise<{
284
300
  success: boolean;
285
301
  identity?: SessionIdentity;
302
+ user?: User;
286
303
  message?: string;
287
304
  error?: string;
288
305
  statusCode?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/auth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,yBAAyB,EAEzB,eAAe,EACf,cAAc,EACjB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA4B5D,wBAAsB,MAAM,CAAC,QAAQ,EAAE;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmBA;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiBA;AAED,wBAAsB,UAAU,CAC5B,IAAI,EAAE,MAAM,EACZ,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAC5C,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBjE;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,CAiBzJ;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;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC,CAuBD;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,eAAe;;;;;;;;;;GAY9D;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;;;;;;;;;;GAejF;AAED,mFAAmF;AACnF,wBAAsB,kBAAkB,CACpC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,yBAAyB,GACvC,OAAO,CAAC,cAAc,EAAE,CAAC,CAO3B;AAED,qFAAqF;AACrF,wBAAsB,oBAAoB,CACtC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,yBAAyB,EACtC,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,0EAA0E;AAC1E,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6BzD"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/auth.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,10 @@
1
1
  import { del, get, patch, post } from "./fetcher";
2
2
  import { getAccountType } from "./serverActions";
3
3
  import { isExpectedSignedOutError } from "../authSessionPolicy";
4
+ import { acceptNativeSession, getNativeTransport, invalidateNativeSession, nativeSessionGeneration } from "./nativeTransport";
4
5
  function clearSensitiveBrowserState() {
6
+ if (getNativeTransport())
7
+ return;
5
8
  if (typeof window === "undefined")
6
9
  return;
7
10
  window.sessionStorage.removeItem("latest_booking_confirmation");
@@ -24,6 +27,9 @@ function getDeviceRecoveryEndpoint(accountType) {
24
27
  return "/users/device-recovery/devices";
25
28
  }
26
29
  export async function signIn(formData) {
30
+ if (getNativeTransport())
31
+ invalidateNativeSession();
32
+ const nativeGeneration = nativeSessionGeneration();
27
33
  try {
28
34
  // A cache-miss cleanup may still be reconciling stale cookies when the
29
35
  // public form becomes interactive. Abort it before issuing the login
@@ -33,6 +39,7 @@ export async function signIn(formData) {
33
39
  if (formData.role === 'host')
34
40
  endpoint = '/hosts/login';
35
41
  const data = await post(endpoint, formData);
42
+ await acceptNativeSession(data.data.session, nativeGeneration, true);
36
43
  // console.log('Response:', data);
37
44
  return {
38
45
  user: data.data.user,
@@ -62,6 +69,11 @@ export async function signInStaff(formData) {
62
69
  }
63
70
  export async function logoutUser(role, accountTypeHint) {
64
71
  clearSensitiveBrowserState();
72
+ const native = getNativeTransport();
73
+ if (native)
74
+ invalidateNativeSession();
75
+ const logoutGeneration = nativeSessionGeneration();
76
+ const ownsLogout = () => getNativeTransport() === native && nativeSessionGeneration() === logoutGeneration;
65
77
  try {
66
78
  const accountType = accountTypeHint ?? await getAccountType();
67
79
  let endpoint = '/users/logout';
@@ -69,6 +81,8 @@ export async function logoutUser(role, accountTypeHint) {
69
81
  endpoint = '/auth/staff/logout';
70
82
  else if (accountType === 'host' || (!accountType && role === 'host'))
71
83
  endpoint = '/hosts/logout';
84
+ if (native && !ownsLogout())
85
+ throw new Error("Session changed");
72
86
  const response = await get(endpoint);
73
87
  return {
74
88
  success: true,
@@ -79,13 +93,21 @@ export async function logoutUser(role, accountTypeHint) {
79
93
  console.error(error.message);
80
94
  return { success: false, error: error.message };
81
95
  }
96
+ finally {
97
+ if (native && ownsLogout())
98
+ await native.clearSession();
99
+ }
82
100
  }
83
101
  export async function verifyEmailOtp(email, otp, role) {
102
+ if (getNativeTransport())
103
+ invalidateNativeSession();
104
+ const nativeGeneration = nativeSessionGeneration();
84
105
  try {
85
106
  let endpoint = `/users/verify-otp`;
86
107
  if (role === 'host')
87
108
  endpoint = `/hosts/verify-otp`;
88
109
  const data = await post(endpoint, { email: email, emailOtp: otp });
110
+ await acceptNativeSession(data.data.session, nativeGeneration, true);
89
111
  // console.log('Response:', data);
90
112
  return {
91
113
  user: data.data.user,
@@ -158,8 +180,17 @@ export async function resetPassword(password, token, role) {
158
180
  export async function validateSession() {
159
181
  try {
160
182
  const data = await get("/auth/session");
183
+ if (!getNativeTransport() && typeof window !== "undefined" && typeof localStorage !== "undefined" && data.data.deviceId) {
184
+ // Browser cache is optional; a denied/quota-limited write must not
185
+ // turn successful cookie authentication into a failed session.
186
+ try {
187
+ localStorage.setItem("_trippeaze_device_id", data.data.deviceId);
188
+ }
189
+ catch { /* The scoped device cookie remains canonical. */ }
190
+ }
161
191
  return {
162
192
  success: true,
193
+ user: data.data.user,
163
194
  identity: data.data,
164
195
  message: data.message
165
196
  };
@@ -1 +1 @@
1
- {"version":3,"file":"blog.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/blog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blog.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/blog.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { getNativeTransport } from './nativeTransport';
1
2
  import { runUploadTask } from "../utils/uploadTasks";
2
3
  import { del, get, patch, post } from "./fetcher";
3
4
  import { convertBlogToTileProps } from "../utils/entityTiles";
@@ -192,7 +193,7 @@ export async function blogMetaData(slug) {
192
193
  export async function createBlog(formData) {
193
194
  try {
194
195
  const endpoint = `/blog/create`;
195
- const data = await runUploadTask({ title: 'Blog', retrySafe: false, href: "/dashboard/host/blogs", body: formData, operation: ({ progress }) => post(endpoint, formData, true, { onUploadProgress: progress }) });
196
+ const data = await runUploadTask({ title: 'Blog', retrySafe: false, href: getNativeTransport() ? "/blogs" : "/dashboard/host/blogs", body: formData, operation: ({ progress }) => post(endpoint, formData, true, { onUploadProgress: progress }) });
196
197
  return {
197
198
  success: true,
198
199
  slug: data.data,
@@ -210,7 +211,7 @@ export async function createBlog(formData) {
210
211
  export async function editBlog(formData, slug) {
211
212
  try {
212
213
  const endpoint = `/blog/update/${slug}`;
213
- const data = await runUploadTask({ title: 'Blog', retrySafe: false, href: "/dashboard/host/blogs", body: formData, operation: ({ progress }) => patch(endpoint, formData, { onUploadProgress: progress }) });
214
+ const data = await runUploadTask({ title: 'Blog', retrySafe: false, href: getNativeTransport() ? "/blogs" : "/dashboard/host/blogs", body: formData, operation: ({ progress }) => patch(endpoint, formData, { onUploadProgress: progress }) });
214
215
  return {
215
216
  success: true,
216
217
  slug: data.data,
@@ -1,4 +1,5 @@
1
- import { Booking, CreateBookingRequest } from "../models/booking";
1
+ import type { Booking, CreateBookingRequest } from "../models/booking";
2
+ export declare function isConfirmedWithoutOnlinePayment(booking: Pick<Booking, 'status' | 'paymentStatus' | 'totalPrice' | 'entityType' | 'upfrontPaymentAmount'>): boolean;
2
3
  export declare function createBooking(bookingData: CreateBookingRequest): Promise<{
3
4
  success: boolean;
4
5
  booking: Booking | null;
@@ -83,4 +84,31 @@ export declare function updateBookingStatus(bookingId: string, statusData: {
83
84
  message?: string;
84
85
  error?: string;
85
86
  }>;
87
+ export declare function getMyBookings(options?: {
88
+ paymentEvidence?: "legacy" | "server";
89
+ }): Promise<{
90
+ success: boolean;
91
+ bookings: any[];
92
+ packageEnquiries: any[];
93
+ allPackageEnquiries: any[];
94
+ warnings: string[];
95
+ error?: undefined;
96
+ } | {
97
+ success: boolean;
98
+ bookings: never[];
99
+ packageEnquiries: never[];
100
+ allPackageEnquiries: never[];
101
+ error: any;
102
+ warnings?: undefined;
103
+ }>;
104
+ /** Resolve only the chosen history domain. A legacy ID is never a generic Booking ID. */
105
+ export declare function getTravellerHistoryRecord(id: string, source: "generic" | "stay" | "event" | "enquiry"): Promise<{
106
+ success: boolean;
107
+ booking: Booking | null;
108
+ message?: string;
109
+ error?: string;
110
+ } | {
111
+ success: boolean;
112
+ booking: any;
113
+ }>;
86
114
  //# sourceMappingURL=booking.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"booking.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/booking.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAkBlE,wBAAsB,aAAa,CAAC,WAAW,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAajT;AAED,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,oBAAoB;;;;;;;;;;;;;;GAMzE;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAQvP;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;GAOjK;AAED,wBAAsB,kBAAkB,CACpC,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO;;;;;;;;;;GAaxC;AAED,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAIlG;AAED,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiBhJ;AAED,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiBlO"}
1
+ {"version":3,"file":"booking.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/booking.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  import { get, patch, post } from "./fetcher";
2
+ export function isConfirmedWithoutOnlinePayment(booking) {
3
+ return booking.status === 'confirmed' && (booking.totalPrice === 0 && booking.paymentStatus === 'paid' || booking.entityType === 'Rental' && booking.totalPrice > 0 && booking.upfrontPaymentAmount === 0 && booking.paymentStatus === 'pending');
4
+ }
2
5
  function normalizeBookingCreation(data) {
3
6
  return {
4
7
  success: true,
@@ -106,3 +109,186 @@ export async function updateBookingStatus(bookingId, statusData) {
106
109
  };
107
110
  }
108
111
  }
112
+ function resolvePaymentStatus(record, evidence = "legacy") {
113
+ if (evidence === "server")
114
+ return record.paymentStatus || "unknown";
115
+ if (record.paymentStatus === "paid" || record.paymentStatus === "refunded" || record.paymentStatus === "failed") {
116
+ return record.paymentStatus;
117
+ }
118
+ if (record.paymentId && record.paymentStatus !== "failed") {
119
+ return "paid";
120
+ }
121
+ if (["confirmed", "completed", "attended"].includes(record.status)) {
122
+ return "paid";
123
+ }
124
+ return "pending";
125
+ }
126
+ function normalizeGenericBooking(booking, evidence = "legacy") {
127
+ const rawHostId = booking.hostId || booking.operatorId || booking.entityId?.host || booking.entityId?.hostId || booking.host;
128
+ const hostId = typeof rawHostId === "object" ? (rawHostId?._id || "") : (rawHostId || "");
129
+ return {
130
+ ...booking,
131
+ recordSource: "generic",
132
+ hostId: hostId || booking.hostId,
133
+ paymentStatus: resolvePaymentStatus(booking, evidence),
134
+ };
135
+ }
136
+ function normalizeStayBooking(booking, evidence = "legacy") {
137
+ const rawHostId = booking.hostId || booking.stayId?.host || booking.stayId?.hostId || booking.entityId?.host || booking.host;
138
+ const hostId = typeof rawHostId === "object" ? (rawHostId?._id || "") : (rawHostId || "");
139
+ return {
140
+ ...booking,
141
+ recordSource: "stay",
142
+ hostId: hostId || booking.hostId,
143
+ entityId: booking.entityId || booking.stayId,
144
+ entityType: "Stay",
145
+ startDate: booking.startDate || booking.checkIn,
146
+ endDate: booking.endDate || booking.checkOut,
147
+ numberOfPeople: booking.numberOfPeople || booking.guests || 1,
148
+ totalPrice: booking.totalPrice || 0,
149
+ currency: booking.currency || "INR",
150
+ paymentStatus: resolvePaymentStatus(booking, evidence),
151
+ bookingCode: booking.bookingCode,
152
+ };
153
+ }
154
+ function normalizeEventBooking(booking, evidence = "legacy") {
155
+ const rawHostId = booking.hostId || booking.eventId?.host || booking.eventId?.hostId || booking.entityId?.host || booking.host;
156
+ const hostId = typeof rawHostId === "object" ? (rawHostId?._id || "") : (rawHostId || "");
157
+ return {
158
+ ...booking,
159
+ recordSource: "event",
160
+ hostId: hostId || booking.hostId,
161
+ entityId: booking.entityId || booking.eventId,
162
+ entityType: "Event",
163
+ startDate: booking.startDate || booking.eventDate,
164
+ numberOfPeople: booking.numberOfPeople || booking.numberOfSeats || 1,
165
+ totalPrice: booking.totalPrice || 0,
166
+ currency: booking.currency || "INR",
167
+ paymentStatus: resolvePaymentStatus(booking, evidence),
168
+ bookingCode: booking.bookingCode,
169
+ };
170
+ }
171
+ function normalizePackageEnquiry(enquiry) {
172
+ const rawHostId = enquiry.operatorId || enquiry.hostId || enquiry.packageId?.host || enquiry.packageId?.hostId;
173
+ const hostId = typeof rawHostId === "object" ? (rawHostId?._id || "") : (rawHostId || "");
174
+ return {
175
+ ...enquiry,
176
+ enquirySnapshot: {
177
+ _id: enquiry._id,
178
+ packageSlug: enquiry.packageSlug,
179
+ status: enquiry.status,
180
+ males: enquiry.males,
181
+ females: enquiry.females,
182
+ desiredStartDate: enquiry.desiredStartDate,
183
+ message: enquiry.message,
184
+ selectedActivities: enquiry.selectedActivities,
185
+ createdAt: enquiry.createdAt,
186
+ updatedAt: enquiry.updatedAt,
187
+ },
188
+ recordSource: "enquiry",
189
+ hostId: hostId || enquiry.operatorId,
190
+ operatorId: hostId || enquiry.operatorId,
191
+ entityId: {
192
+ _id: enquiry.packageId?._id || enquiry.packageId,
193
+ title: enquiry.packageTitle,
194
+ slug: enquiry.packageSlug,
195
+ host: hostId || enquiry.operatorId,
196
+ },
197
+ entityType: "TravelPackage",
198
+ bookingKind: "package_enquiry",
199
+ entityLabel: "Package Enquiry",
200
+ startDate: enquiry.createdAt,
201
+ endDate: undefined,
202
+ numberOfPeople: (Number(enquiry.males) || 0) + (Number(enquiry.females) || 0) || 1,
203
+ totalPrice: enquiry.totalPrice || 0,
204
+ currency: enquiry.currency || "INR",
205
+ paymentStatus: "not_applicable",
206
+ bookingCode: enquiry.bookingCode,
207
+ status: enquiry.status === "denied" ? "cancelled" : enquiry.status,
208
+ };
209
+ }
210
+ function dedupeBookings(bookings) {
211
+ const seen = new Set();
212
+ return bookings.filter((booking) => {
213
+ const key = String(booking._id || "") || `${booking.entityType}:${booking.bookingCode || booking.startDate}`;
214
+ if (seen.has(key))
215
+ return false;
216
+ seen.add(key);
217
+ return true;
218
+ });
219
+ }
220
+ function hideSupersededPackageEnquiries(bookings) {
221
+ const bookedPackageIds = new Set(bookings
222
+ .filter((booking) => booking.entityType === "TravelPackage" &&
223
+ booking.bookingKind !== "package_enquiry")
224
+ .map((booking) => {
225
+ const packageId = booking.entityId?._id || booking.entityId;
226
+ return String(packageId || "");
227
+ })
228
+ .filter(Boolean));
229
+ return bookings.filter((booking) => {
230
+ if (booking.bookingKind !== "package_enquiry")
231
+ return true;
232
+ const packageId = booking.entityId?._id || booking.packageId || booking.entityId;
233
+ return !bookedPackageIds.has(String(packageId || ""));
234
+ });
235
+ }
236
+ export async function getMyBookings(options = {}) {
237
+ try {
238
+ const [genericResult, stayResult, eventResult, packageResult] = await Promise.allSettled([
239
+ get("/bookings/my"),
240
+ get("/stays/bookings/me"),
241
+ get("/events/bookings/me"),
242
+ get("/enquiries/my"),
243
+ ]);
244
+ const failures = [genericResult, stayResult, eventResult, packageResult].flatMap((result, index) => result.status === "rejected" ? [["bookings", "stay bookings", "event bookings", "package enquiries"][index]] : []);
245
+ const malformedPackage = packageResult.status === "fulfilled" && !Array.isArray(packageResult.value?.data);
246
+ if (options.paymentEvidence === "server" && malformedPackage)
247
+ failures.push("package enquiries");
248
+ if (options.paymentEvidence === "server" && failures.length === 4)
249
+ throw new Error("Booking history could not be loaded");
250
+ const genericBookings = genericResult.status === "fulfilled"
251
+ ? (genericResult.value?.data || []).map((booking) => ({
252
+ ...normalizeGenericBooking(booking, options.paymentEvidence),
253
+ entityLabel: booking.entityType === "TravelPackage"
254
+ ? "Package Booking"
255
+ : booking.entityType,
256
+ }))
257
+ : [];
258
+ const stayBookings = stayResult.status === "fulfilled"
259
+ ? (stayResult.value?.data || []).map(item => normalizeStayBooking(item, options.paymentEvidence))
260
+ : [];
261
+ const eventBookings = eventResult.status === "fulfilled"
262
+ ? (eventResult.value?.data || []).map(item => normalizeEventBooking(item, options.paymentEvidence))
263
+ : [];
264
+ const packageBookings = packageResult.status === "fulfilled"
265
+ ? (options.paymentEvidence === "server" && malformedPackage ? [] : packageResult.value?.data || []).map(normalizePackageEnquiry)
266
+ : [];
267
+ const combined = hideSupersededPackageEnquiries(dedupeBookings([
268
+ ...genericBookings,
269
+ ...stayBookings,
270
+ ...eventBookings,
271
+ ...packageBookings,
272
+ ])).sort((a, b) => new Date(b.createdAt || b.startDate || 0).getTime() -
273
+ new Date(a.createdAt || a.startDate || 0).getTime());
274
+ const packageEnquiries = combined.filter((booking) => booking.bookingKind === "package_enquiry");
275
+ const bookings = combined.filter((booking) => booking.bookingKind !== "package_enquiry");
276
+ const allPackageEnquiries = dedupeBookings(packageBookings).sort((left, right) => new Date(right.createdAt || 0).getTime() - new Date(left.createdAt || 0).getTime());
277
+ return { success: true, bookings, packageEnquiries, allPackageEnquiries, warnings: failures };
278
+ }
279
+ catch (error) {
280
+ return { success: false, bookings: [], packageEnquiries: [], allPackageEnquiries: [], error: error.message };
281
+ }
282
+ }
283
+ /** Resolve only the chosen history domain. A legacy ID is never a generic Booking ID. */
284
+ export async function getTravellerHistoryRecord(id, source) {
285
+ if (source === 'generic')
286
+ return getBookingById(id);
287
+ const history = await getMyBookings({ paymentEvidence: 'server' });
288
+ const domain = source === 'stay' ? 'stay bookings' : source === 'event' ? 'event bookings' : 'package enquiries';
289
+ if (!history.success || history.warnings?.includes(domain))
290
+ return { success: false, booking: null, error: `The selected ${domain} record could not be loaded. Please retry.` };
291
+ const records = source === 'enquiry' ? history.allPackageEnquiries : history.bookings;
292
+ const booking = records.find(record => record._id === id && record.recordSource === source);
293
+ return booking ? { success: true, booking } : { success: false, booking: null, error: 'This record is no longer available.' };
294
+ }
@@ -1,4 +1,11 @@
1
1
  import type { AdOfferDetail, BrandPageData, CreatorPlacementReviewItem } from "../models/brand";
2
+ import type { BrandSummary } from "../models/place";
3
+ export declare function fetchBrands(page?: number, location?: string): Promise<{
4
+ items: BrandSummary[];
5
+ total: number;
6
+ page: number;
7
+ totalPages: number;
8
+ }>;
2
9
  export type { AdOfferDetail, BrandPageData, CreatorPlacementReviewItem, } from "../models/brand";
3
10
  export declare function fetchBrandPage(slug: string): Promise<{
4
11
  success: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/brand.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,0BAA0B,EAC3B,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,aAAa,EACb,aAAa,EACb,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AAEzB,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAOD;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAOD;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,eAAe,GAAG,qBAAqB,GAAG,YAAY,GAAG,UAAU,CAAC;IACvF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,GACA,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAO3D;AAED,wBAAsB,8BAA8B,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAG5F;AAED,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,SAAS,GAAG,QAAQ,EAC9B,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,0BAA0B,CAAC,CAMrC"}
1
+ {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/brand.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,0BAA0B,EAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,wBAAsB,WAAW,CAAC,IAAI,SAAI,EAAE,QAAQ,SAAK;WAEpB,YAAY,EAAE;WAAS,MAAM;UAAQ,MAAM;gBAAc,MAAM;GACnG;AAED,YAAY,EACV,aAAa,EACb,aAAa,EACb,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AAEzB,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAOD;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAOD;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,eAAe,GAAG,qBAAqB,GAAG,YAAY,GAAG,UAAU,CAAC;IACvF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,GACA,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAO3D;AAED,wBAAsB,8BAA8B,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAG5F;AAED,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,SAAS,GAAG,QAAQ,EAC9B,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,0BAA0B,CAAC,CAMrC"}
@@ -1,4 +1,8 @@
1
1
  import { get, post, put } from "./fetcher";
2
+ export async function fetchBrands(page = 1, location = "") {
3
+ const query = new URLSearchParams({ page: String(page), limit: "12", ...(location ? { location } : {}) });
4
+ return (await get(`/brands?${query}`, false)).data;
5
+ }
2
6
  export async function fetchBrandPage(slug) {
3
7
  try {
4
8
  const data = await get(`/brands/${slug}`);
@@ -1,4 +1,5 @@
1
1
  import { ChatActorModel, ChatActorRef, ChatEvent, ChatGroupInvite, ChatGroupJoinRequest, ChatPaymentIntent, ChatPaymentDetailRequest, ChatBusinessProfile, ChatQuickReply, ChatHostConversationState, ChatOwnedListing, ChatCopilotResult, ChatAIActionProposal, ChatLiveLocation, ChatCampaignDraft, ChatHostKnowledgeSource, ChatAssistantSnapshot, ChatAssistantMessage, ChatAssistantSendResult, ChatAssistantProposal, ChatAssistantOpportunityStatusResult, ChatSafetyAlert, ChatPaymentProfile, Conversation, ConversationPreference, ConversationSearchResponse, ConversationStorageSummary, Message, PinnedMessage, StarredMessage, SharedChatCardInput, LinkedListingGroup, ListingAudience, ManagedListingGroup } from "../models/chat";
2
+ import { type UploadFile } from '../utils/uploadFile';
2
3
  export declare const normalizeChatMessage: (message: any) => Message;
3
4
  export declare const normalizeConversation: (conversation: any) => Conversation;
4
5
  export declare const chatApi: {
@@ -123,6 +124,8 @@ export declare const chatApi: {
123
124
  data: null;
124
125
  error: unknown;
125
126
  }>;
127
+ /** Same upload/send phases used by web chat, with native URI multipart support. */
128
+ sendTravellerAttachments: (convId: string, text: string, files: UploadFile[], replyTo?: string) => Promise<Message>;
126
129
  sendSharedCard: (convId: string, data: SharedChatCardInput) => Promise<Message>;
127
130
  editMessage: (id: string, text: string) => Promise<Message | null>;
128
131
  addMessageReaction: (id: string, emoji: string) => Promise<Message | null>;