@myrjfa/state 3.0.8 → 3.0.9

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 (169) 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 +18 -3
  5. package/dist/lib/actions/auth.d.ts.map +1 -1
  6. package/dist/lib/actions/auth.js +22 -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 +56 -11
  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.native.d.ts +4 -0
  65. package/dist/lib/actions/serverActions.native.d.ts.map +1 -0
  66. package/dist/lib/actions/serverActions.native.js +5 -0
  67. package/dist/lib/actions/socket.d.ts.map +1 -1
  68. package/dist/lib/actions/socket.js +6 -5
  69. package/dist/lib/actions/stay.d.ts +14 -1
  70. package/dist/lib/actions/stay.d.ts.map +1 -1
  71. package/dist/lib/actions/stay.js +29 -2
  72. package/dist/lib/actions/store.d.ts +1 -0
  73. package/dist/lib/actions/store.d.ts.map +1 -1
  74. package/dist/lib/actions/store.js +9 -0
  75. package/dist/lib/actions/user.d.ts +2 -0
  76. package/dist/lib/actions/user.d.ts.map +1 -1
  77. package/dist/lib/actions/user.js +5 -0
  78. package/dist/lib/data/catalogueLocations.d.ts +3 -0
  79. package/dist/lib/data/catalogueLocations.d.ts.map +1 -0
  80. package/dist/lib/data/catalogueLocations.js +21 -0
  81. package/dist/lib/data/skills.d.ts +5 -0
  82. package/dist/lib/data/skills.d.ts.map +1 -0
  83. package/dist/lib/data/skills.js +97 -0
  84. package/dist/lib/forms/application.d.ts +4 -0
  85. package/dist/lib/forms/application.d.ts.map +1 -0
  86. package/dist/lib/forms/application.js +17 -0
  87. package/dist/lib/forms/packageEnquiry.d.ts +4 -0
  88. package/dist/lib/forms/packageEnquiry.d.ts.map +1 -0
  89. package/dist/lib/forms/packageEnquiry.js +12 -0
  90. package/dist/lib/forms/review.d.ts +6 -0
  91. package/dist/lib/forms/review.d.ts.map +1 -0
  92. package/dist/lib/forms/review.js +20 -0
  93. package/dist/lib/models/application.d.ts +21 -0
  94. package/dist/lib/models/application.d.ts.map +1 -1
  95. package/dist/lib/models/authorization.d.ts +1 -1
  96. package/dist/lib/models/authorization.d.ts.map +1 -1
  97. package/dist/lib/models/authorization.js +2 -0
  98. package/dist/lib/models/booking.d.ts +3 -0
  99. package/dist/lib/models/booking.d.ts.map +1 -1
  100. package/dist/lib/models/chat.d.ts +8 -0
  101. package/dist/lib/models/chat.d.ts.map +1 -1
  102. package/dist/lib/models/chat.js +10 -0
  103. package/dist/lib/models/community.d.ts +2 -0
  104. package/dist/lib/models/community.d.ts.map +1 -1
  105. package/dist/lib/models/community.js +2 -1
  106. package/dist/lib/models/companion.d.ts +42 -0
  107. package/dist/lib/models/companion.d.ts.map +1 -1
  108. package/dist/lib/models/discount.d.ts +8 -8
  109. package/dist/lib/models/enquiry.d.ts +13 -0
  110. package/dist/lib/models/enquiry.d.ts.map +1 -1
  111. package/dist/lib/models/homeBanner.d.ts +17 -0
  112. package/dist/lib/models/homeBanner.d.ts.map +1 -0
  113. package/dist/lib/models/homeBanner.js +1 -0
  114. package/dist/lib/models/interest.d.ts +42 -0
  115. package/dist/lib/models/interest.d.ts.map +1 -0
  116. package/dist/lib/models/interest.js +1 -0
  117. package/dist/lib/models/location.d.ts +1 -0
  118. package/dist/lib/models/location.d.ts.map +1 -1
  119. package/dist/lib/models/notifications.d.ts +2 -2
  120. package/dist/lib/models/opportunities/freelance.d.ts +37 -4
  121. package/dist/lib/models/opportunities/freelance.d.ts.map +1 -1
  122. package/dist/lib/models/opportunities/internship.d.ts +37 -4
  123. package/dist/lib/models/opportunities/internship.d.ts.map +1 -1
  124. package/dist/lib/models/opportunities/job.d.ts +37 -4
  125. package/dist/lib/models/opportunities/job.d.ts.map +1 -1
  126. package/dist/lib/models/opportunities/opportunity.d.ts +38 -5
  127. package/dist/lib/models/opportunities/opportunity.d.ts.map +1 -1
  128. package/dist/lib/models/opportunities/opportunity.js +1 -1
  129. package/dist/lib/models/opportunities/volunteerJob.d.ts +37 -4
  130. package/dist/lib/models/opportunities/volunteerJob.d.ts.map +1 -1
  131. package/dist/lib/models/pricing.d.ts +2 -0
  132. package/dist/lib/models/pricing.d.ts.map +1 -1
  133. package/dist/lib/models/pricing.js +4 -0
  134. package/dist/lib/models/props.d.ts +4 -43
  135. package/dist/lib/models/props.d.ts.map +1 -1
  136. package/dist/lib/models/props.js +3 -121
  137. package/dist/lib/models/question.d.ts +14 -0
  138. package/dist/lib/models/question.d.ts.map +1 -0
  139. package/dist/lib/models/question.js +6 -0
  140. package/dist/lib/models/review.d.ts +13 -1
  141. package/dist/lib/models/review.d.ts.map +1 -1
  142. package/dist/lib/models/review.js +4 -0
  143. package/dist/lib/models/tile.d.ts +7 -1
  144. package/dist/lib/models/tile.d.ts.map +1 -1
  145. package/dist/lib/models/travelPackage.d.ts +37 -4
  146. package/dist/lib/models/travelPackage.d.ts.map +1 -1
  147. package/dist/lib/models/travelPackage.js +1 -1
  148. package/dist/lib/models/user.d.ts +25 -2
  149. package/dist/lib/models/user.d.ts.map +1 -1
  150. package/dist/lib/models/user.js +1 -0
  151. package/dist/lib/userAtom.d.ts +30 -5
  152. package/dist/lib/userAtom.d.ts.map +1 -1
  153. package/dist/lib/utils/entityTiles.d.ts.map +1 -1
  154. package/dist/lib/utils/entityTiles.js +3 -2
  155. package/dist/lib/utils/htmlDescription.d.ts +3 -0
  156. package/dist/lib/utils/htmlDescription.d.ts.map +1 -0
  157. package/dist/lib/utils/htmlDescription.js +7 -0
  158. package/dist/lib/utils/htmlDescription.native.d.ts +3 -0
  159. package/dist/lib/utils/htmlDescription.native.d.ts.map +1 -0
  160. package/dist/lib/utils/htmlDescription.native.js +7 -0
  161. package/dist/lib/utils/text.d.ts +3 -1
  162. package/dist/lib/utils/text.d.ts.map +1 -1
  163. package/dist/lib/utils/text.js +5 -6
  164. package/dist/lib/utils/uploadFile.d.ts +9 -0
  165. package/dist/lib/utils/uploadFile.d.ts.map +1 -0
  166. package/dist/lib/utils/uploadFile.js +9 -0
  167. package/dist/lib/utils/uploadTasks.d.ts.map +1 -1
  168. package/dist/lib/utils/uploadTasks.js +9 -1
  169. package/package.json +1 -1
@@ -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) {
@@ -40,6 +40,11 @@ export declare function signIn(formData: {
40
40
  accessToken?: string | undefined;
41
41
  refreshToken?: string | undefined;
42
42
  verifiedIdCard?: boolean | undefined;
43
+ identityVerification?: {
44
+ documentSubmitted: boolean;
45
+ selfieSubmitted: boolean;
46
+ verified: boolean;
47
+ } | undefined;
43
48
  permissions?: string[] | undefined;
44
49
  baseUserId?: string | null | undefined;
45
50
  baseHostId?: string | null | undefined;
@@ -73,7 +78,7 @@ export declare function signIn(formData: {
73
78
  businessDocument?: string | undefined;
74
79
  businessIdType?: "PAN" | "GST" | "Udyam" | "PersonalPAN" | undefined;
75
80
  businessIdNumber?: string | undefined;
76
- businessApiVerificationStatus?: "pending" | "verified" | "failed" | undefined;
81
+ businessApiVerificationStatus?: "verified" | "pending" | "failed" | undefined;
77
82
  businessVerificationDenialReason?: string | undefined;
78
83
  };
79
84
  message: string;
@@ -128,6 +133,11 @@ export declare function signInStaff(formData: {
128
133
  accessToken?: string | undefined;
129
134
  refreshToken?: string | undefined;
130
135
  verifiedIdCard?: boolean | undefined;
136
+ identityVerification?: {
137
+ documentSubmitted: boolean;
138
+ selfieSubmitted: boolean;
139
+ verified: boolean;
140
+ } | undefined;
131
141
  permissions?: string[] | undefined;
132
142
  baseUserId?: string | null | undefined;
133
143
  baseHostId?: string | null | undefined;
@@ -161,7 +171,7 @@ export declare function signInStaff(formData: {
161
171
  businessDocument?: string | undefined;
162
172
  businessIdType?: "PAN" | "GST" | "Udyam" | "PersonalPAN" | undefined;
163
173
  businessIdNumber?: string | undefined;
164
- businessApiVerificationStatus?: "pending" | "verified" | "failed" | undefined;
174
+ businessApiVerificationStatus?: "verified" | "pending" | "failed" | undefined;
165
175
  businessVerificationDenialReason?: string | undefined;
166
176
  };
167
177
  message: string;
@@ -218,6 +228,11 @@ export declare function verifyEmailOtp(email: string, otp: string, role: "user"
218
228
  accessToken?: string | undefined;
219
229
  refreshToken?: string | undefined;
220
230
  verifiedIdCard?: boolean | undefined;
231
+ identityVerification?: {
232
+ documentSubmitted: boolean;
233
+ selfieSubmitted: boolean;
234
+ verified: boolean;
235
+ } | undefined;
221
236
  permissions?: string[] | undefined;
222
237
  baseUserId?: string | null | undefined;
223
238
  baseHostId?: string | null | undefined;
@@ -251,7 +266,7 @@ export declare function verifyEmailOtp(email: string, otp: string, role: "user"
251
266
  businessDocument?: string | undefined;
252
267
  businessIdType?: "PAN" | "GST" | "Udyam" | "PersonalPAN" | undefined;
253
268
  businessIdNumber?: string | undefined;
254
- businessApiVerificationStatus?: "pending" | "verified" | "failed" | undefined;
269
+ businessApiVerificationStatus?: "verified" | "pending" | "failed" | undefined;
255
270
  businessVerificationDenialReason?: string | undefined;
256
271
  };
257
272
  message: string;
@@ -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,
@@ -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>;