@myrjfa/state 2.2.0 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -201
- package/README.md +20 -3
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/lib/actions/actions.d.ts +13 -13
- package/dist/lib/actions/actions.d.ts.map +1 -1
- package/dist/lib/actions/actions.js +5 -4
- package/dist/lib/actions/adminDashboard.d.ts +4 -0
- package/dist/lib/actions/adminDashboard.d.ts.map +1 -0
- package/dist/lib/actions/adminDashboard.js +29 -0
- package/dist/lib/actions/adventure.d.ts +104 -0
- package/dist/lib/actions/adventure.d.ts.map +1 -0
- package/dist/lib/actions/adventure.js +203 -0
- package/dist/lib/actions/application.d.ts +35 -0
- package/dist/lib/actions/application.d.ts.map +1 -0
- package/dist/lib/actions/application.js +573 -0
- package/dist/lib/actions/auth.d.ts +108 -3
- package/dist/lib/actions/auth.d.ts.map +1 -1
- package/dist/lib/actions/auth.js +38 -8
- package/dist/lib/actions/blog.d.ts +61 -0
- package/dist/lib/actions/blog.d.ts.map +1 -0
- package/dist/lib/actions/blog.js +762 -0
- package/dist/lib/actions/brand.d.ts +83 -0
- package/dist/lib/actions/brand.d.ts.map +1 -0
- package/dist/lib/actions/brand.js +28 -0
- package/dist/lib/actions/chat.d.ts +261 -24
- package/dist/lib/actions/chat.d.ts.map +1 -1
- package/dist/lib/actions/chat.js +525 -41
- package/dist/lib/actions/companion.d.ts +174 -0
- package/dist/lib/actions/companion.d.ts.map +1 -0
- package/dist/lib/actions/companion.js +276 -0
- package/dist/lib/actions/event.d.ts +178 -0
- package/dist/lib/actions/event.d.ts.map +1 -0
- package/dist/lib/actions/event.js +214 -0
- package/dist/lib/actions/fetcher.d.ts.map +1 -1
- package/dist/lib/actions/fetcher.js +18 -8
- package/dist/lib/actions/guide.d.ts +55 -0
- package/dist/lib/actions/guide.d.ts.map +1 -0
- package/dist/lib/actions/guide.js +128 -0
- package/dist/lib/actions/hostDashboard.d.ts +122 -0
- package/dist/lib/actions/hostDashboard.d.ts.map +1 -0
- package/dist/lib/actions/hostDashboard.js +329 -0
- package/dist/lib/actions/location.d.ts +141 -0
- package/dist/lib/actions/location.d.ts.map +1 -0
- package/dist/lib/actions/location.js +113 -0
- package/dist/lib/actions/notifications.d.ts +91 -0
- package/dist/lib/actions/notifications.d.ts.map +1 -0
- package/dist/lib/actions/notifications.js +83 -0
- package/dist/lib/actions/opportunity.d.ts +44 -0
- package/dist/lib/actions/opportunity.d.ts.map +1 -0
- package/dist/lib/actions/opportunity.js +318 -0
- package/dist/lib/actions/package.d.ts +85 -0
- package/dist/lib/actions/package.d.ts.map +1 -0
- package/dist/lib/actions/package.js +167 -0
- package/dist/lib/actions/place.d.ts +191 -0
- package/dist/lib/actions/place.d.ts.map +1 -0
- package/dist/lib/actions/place.js +57 -0
- package/dist/lib/actions/portfolio.d.ts +65 -0
- package/dist/lib/actions/portfolio.d.ts.map +1 -0
- package/dist/lib/actions/portfolio.js +62 -0
- package/dist/lib/actions/property.d.ts +17 -0
- package/dist/lib/actions/property.d.ts.map +1 -0
- package/dist/lib/actions/property.js +16 -0
- package/dist/lib/actions/rental.d.ts +87 -0
- package/dist/lib/actions/rental.d.ts.map +1 -0
- package/dist/lib/actions/rental.js +205 -0
- package/dist/lib/actions/review.d.ts +8 -0
- package/dist/lib/actions/review.d.ts.map +1 -0
- package/dist/lib/actions/review.js +102 -0
- package/dist/lib/actions/room.d.ts +39 -0
- package/dist/lib/actions/room.d.ts.map +1 -0
- package/dist/lib/actions/room.js +74 -0
- package/dist/lib/actions/serverActions.d.ts +1 -0
- package/dist/lib/actions/serverActions.d.ts.map +1 -1
- package/dist/lib/actions/serverActions.js +15 -0
- package/dist/lib/actions/socket.d.ts.map +1 -1
- package/dist/lib/actions/socket.js +5 -1
- package/dist/lib/actions/stay.d.ts +97 -0
- package/dist/lib/actions/stay.d.ts.map +1 -0
- package/dist/lib/actions/stay.js +138 -0
- package/dist/lib/actions/travelPackage.d.ts +104 -0
- package/dist/lib/actions/travelPackage.d.ts.map +1 -0
- package/dist/lib/actions/travelPackage.js +487 -0
- package/dist/lib/actions.d.ts +24 -24
- package/dist/lib/actions.d.ts.map +1 -1
- package/dist/lib/actions.js +14 -11
- package/dist/lib/adminDashboardActions.d.ts +15 -3
- package/dist/lib/adminDashboardActions.d.ts.map +1 -1
- package/dist/lib/adminDashboardActions.js +16 -7
- package/dist/lib/authSessionManager.d.ts.map +1 -1
- package/dist/lib/authSessionManager.js +4 -3
- package/dist/lib/authSessionPolicy.d.ts +10 -0
- package/dist/lib/authSessionPolicy.d.ts.map +1 -0
- package/dist/lib/authSessionPolicy.js +9 -0
- package/dist/lib/authorizationActions.d.ts +77 -0
- package/dist/lib/authorizationActions.d.ts.map +1 -0
- package/dist/lib/authorizationActions.js +61 -0
- package/dist/lib/context/ChatContext.d.ts +25 -6
- package/dist/lib/context/ChatContext.d.ts.map +1 -1
- package/dist/lib/context/ChatContext.js +356 -245
- package/dist/lib/data/adventureDummyData.d.ts +3 -0
- package/dist/lib/data/adventureDummyData.d.ts.map +1 -0
- package/dist/lib/data/adventureDummyData.js +138 -0
- package/dist/lib/data/adventureFormPage.d.ts +28 -0
- package/dist/lib/data/adventureFormPage.d.ts.map +1 -0
- package/dist/lib/data/adventureFormPage.js +58 -0
- package/dist/lib/data/companionDummyData.d.ts +99 -0
- package/dist/lib/data/companionDummyData.d.ts.map +1 -0
- package/dist/lib/data/companionDummyData.js +203 -0
- package/dist/lib/data/destinations.d.ts +14 -0
- package/dist/lib/data/destinations.d.ts.map +1 -0
- package/dist/lib/data/destinations.js +203 -0
- package/dist/lib/data/eventFormPage.d.ts +38 -0
- package/dist/lib/data/eventFormPage.d.ts.map +1 -0
- package/dist/lib/data/eventFormPage.js +56 -0
- package/dist/lib/data/eventsDummyData.d.ts +54 -0
- package/dist/lib/data/eventsDummyData.d.ts.map +1 -0
- package/dist/lib/data/eventsDummyData.js +586 -0
- package/dist/lib/data/guideDummyData.d.ts +3 -0
- package/dist/lib/data/guideDummyData.d.ts.map +1 -0
- package/dist/lib/data/guideDummyData.js +66 -0
- package/dist/lib/data/opportunityFormData.d.ts +13 -0
- package/dist/lib/data/opportunityFormData.d.ts.map +1 -0
- package/dist/lib/data/opportunityFormData.js +62 -0
- package/dist/lib/data/opportunityFormPage.d.ts +12 -0
- package/dist/lib/data/opportunityFormPage.d.ts.map +1 -0
- package/dist/lib/data/opportunityFormPage.js +33 -0
- package/dist/lib/data/packageDummyData.d.ts +3 -0
- package/dist/lib/data/packageDummyData.d.ts.map +1 -0
- package/dist/lib/data/packageDummyData.js +56 -0
- package/dist/lib/data/rentalDummyData.d.ts +3 -0
- package/dist/lib/data/rentalDummyData.d.ts.map +1 -0
- package/dist/lib/data/rentalDummyData.js +382 -0
- package/dist/lib/data/rentalFormPage.d.ts +11 -0
- package/dist/lib/data/rentalFormPage.d.ts.map +1 -0
- package/dist/lib/data/rentalFormPage.js +86 -0
- package/dist/lib/data/staysDummyData.d.ts +72 -0
- package/dist/lib/data/staysDummyData.d.ts.map +1 -0
- package/dist/lib/data/staysDummyData.js +694 -0
- package/dist/lib/data/storeDummyData.d.ts +33 -0
- package/dist/lib/data/storeDummyData.d.ts.map +1 -0
- package/dist/lib/data/storeDummyData.js +336 -0
- package/dist/lib/data/travelPackageFormData.d.ts +19 -0
- package/dist/lib/data/travelPackageFormData.d.ts.map +1 -0
- package/dist/lib/data/travelPackageFormData.js +51 -0
- package/dist/lib/data/travelPackageFormPage.d.ts +22 -0
- package/dist/lib/data/travelPackageFormPage.d.ts.map +1 -0
- package/dist/lib/data/travelPackageFormPage.js +40 -0
- package/dist/lib/data/vehicleData.d.ts +2 -0
- package/dist/lib/data/vehicleData.d.ts.map +1 -0
- package/dist/lib/data/vehicleData.js +187 -0
- package/dist/lib/data/vehicleModels.d.ts +2 -0
- package/dist/lib/data/vehicleModels.d.ts.map +1 -0
- package/dist/lib/data/vehicleModels.js +128 -0
- package/dist/lib/discountActions.d.ts +43 -0
- package/dist/lib/discountActions.d.ts.map +1 -0
- package/dist/lib/discountActions.js +69 -0
- package/dist/lib/hooks/usePersistentDraftState.d.ts +20 -0
- package/dist/lib/hooks/usePersistentDraftState.d.ts.map +1 -0
- package/dist/lib/hooks/usePersistentDraftState.js +47 -0
- package/dist/lib/loyaltyActions.d.ts +32 -0
- package/dist/lib/loyaltyActions.d.ts.map +1 -0
- package/dist/lib/loyaltyActions.js +92 -0
- package/dist/lib/models/adventure.d.ts +0 -2
- package/dist/lib/models/adventure.d.ts.map +1 -1
- package/dist/lib/models/authorization.d.ts +107 -0
- package/dist/lib/models/authorization.d.ts.map +1 -0
- package/dist/lib/models/authorization.js +263 -0
- package/dist/lib/models/blog.d.ts +2 -2
- package/dist/lib/models/booking.d.ts +7 -2
- package/dist/lib/models/booking.d.ts.map +1 -1
- package/dist/lib/models/chat.d.ts +418 -32
- package/dist/lib/models/chat.d.ts.map +1 -1
- package/dist/lib/models/chat.js +5 -1
- package/dist/lib/models/discount.d.ts +587 -136
- package/dist/lib/models/discount.d.ts.map +1 -1
- package/dist/lib/models/discount.js +118 -96
- package/dist/lib/models/forms.d.ts +384 -0
- package/dist/lib/models/forms.d.ts.map +1 -0
- package/dist/lib/models/forms.js +121 -0
- package/dist/lib/models/guide.d.ts +0 -2
- package/dist/lib/models/guide.d.ts.map +1 -1
- package/dist/lib/models/loyalty.d.ts +88 -0
- package/dist/lib/models/loyalty.d.ts.map +1 -0
- package/dist/lib/models/loyalty.js +1 -0
- package/dist/lib/models/notifications.d.ts +4 -4
- package/dist/lib/models/opportunities/freelance.d.ts +66 -20
- package/dist/lib/models/opportunities/freelance.d.ts.map +1 -1
- package/dist/lib/models/opportunities/internship.d.ts +66 -20
- package/dist/lib/models/opportunities/internship.d.ts.map +1 -1
- package/dist/lib/models/opportunities/job.d.ts +66 -20
- package/dist/lib/models/opportunities/job.d.ts.map +1 -1
- package/dist/lib/models/opportunities/opportunity.d.ts +66 -20
- package/dist/lib/models/opportunities/opportunity.d.ts.map +1 -1
- package/dist/lib/models/opportunities/opportunity.js +2 -0
- package/dist/lib/models/opportunities/volunteerJob.d.ts +66 -20
- package/dist/lib/models/opportunities/volunteerJob.d.ts.map +1 -1
- package/dist/lib/models/package.d.ts +81 -220
- package/dist/lib/models/package.d.ts.map +1 -1
- package/dist/lib/models/package.js +0 -2
- package/dist/lib/models/props.d.ts +1 -1
- package/dist/lib/models/props.d.ts.map +1 -1
- package/dist/lib/models/rental.d.ts +0 -2
- package/dist/lib/models/rental.d.ts.map +1 -1
- package/dist/lib/models/stay.d.ts +4 -4
- package/dist/lib/models/store.d.ts +71 -0
- package/dist/lib/models/store.d.ts.map +1 -0
- package/dist/lib/models/store.js +1 -0
- package/dist/lib/models/tile.d.ts +0 -2
- package/dist/lib/models/tile.d.ts.map +1 -1
- package/dist/lib/models/travelPackage.d.ts +206 -305
- package/dist/lib/models/travelPackage.d.ts.map +1 -1
- package/dist/lib/models/travelPackage.js +0 -2
- package/dist/lib/models/user.d.ts +28 -4
- package/dist/lib/models/user.d.ts.map +1 -1
- package/dist/lib/models/user.js +10 -1
- package/dist/lib/opportunityFormPage.d.ts +1 -0
- package/dist/lib/opportunityFormPage.d.ts.map +1 -1
- package/dist/lib/opportunityFormPage.js +1 -0
- package/dist/lib/pricingActions.d.ts +13 -0
- package/dist/lib/pricingActions.d.ts.map +1 -0
- package/dist/lib/pricingActions.js +16 -0
- package/dist/lib/rentalActions.js +0 -1
- package/dist/lib/rentalDummyData.d.ts.map +1 -1
- package/dist/lib/rentalDummyData.js +0 -35
- package/dist/lib/rentalFormPage.d.ts +0 -2
- package/dist/lib/rentalFormPage.d.ts.map +1 -1
- package/dist/lib/rentalFormPage.js +0 -3
- package/dist/lib/storeActions.d.ts +25 -0
- package/dist/lib/storeActions.d.ts.map +1 -0
- package/dist/lib/storeActions.js +46 -0
- package/dist/lib/storeDummyData.d.ts +2 -26
- package/dist/lib/storeDummyData.d.ts.map +1 -1
- package/dist/lib/userAtom.d.ts +71 -36
- package/dist/lib/userAtom.d.ts.map +1 -1
- package/dist/lib/userAtom.js +11 -17
- package/dist/lib/utils/entitySubmission.d.ts +21 -0
- package/dist/lib/utils/entitySubmission.d.ts.map +1 -0
- package/dist/lib/utils/entitySubmission.js +10 -0
- package/dist/lib/utils/imageUpload.d.ts +4 -0
- package/dist/lib/utils/imageUpload.d.ts.map +1 -0
- package/dist/lib/utils/imageUpload.js +36 -0
- package/dist/lib/utils/tileConverters.d.ts +8 -0
- package/dist/lib/utils/tileConverters.d.ts.map +1 -0
- package/dist/lib/utils/tileConverters.js +59 -0
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1,762 @@
|
|
|
1
|
+
import { del, get, patch, post } from "./fetcher";
|
|
2
|
+
import { truncateText } from "../utils";
|
|
3
|
+
// all opportunities (may not be required or may delete in future)
|
|
4
|
+
// export async function getAllOpportunities(): Promise<{ success: boolean, opportunities: Opportunity[], message?: string, error?: string }> {
|
|
5
|
+
// try {
|
|
6
|
+
// const res = await fetch('/sample/opportunity.json');
|
|
7
|
+
// const opportunities = await res.json() as Opportunity[];
|
|
8
|
+
// return {
|
|
9
|
+
// success: true,
|
|
10
|
+
// message: "fetch success",
|
|
11
|
+
// opportunities: opportunities,
|
|
12
|
+
// }
|
|
13
|
+
// } catch (error: any) {
|
|
14
|
+
// console.error('Failed to fetch all oppotunities: ', error);
|
|
15
|
+
// return {
|
|
16
|
+
// success: false,
|
|
17
|
+
// error: error.message,
|
|
18
|
+
// opportunities: []
|
|
19
|
+
// };
|
|
20
|
+
// }
|
|
21
|
+
// };
|
|
22
|
+
// for admin dashboard
|
|
23
|
+
// export async function getOpportunitiesByStatus(status: string[], limit?: number): Promise<{ success: boolean, opportunities: Opportunity[], message?: string, error?: string }> {
|
|
24
|
+
// try {
|
|
25
|
+
// const endpoint = `/newHostPost/getAllOppTiles?status=${status}${limit ? ("&limit=" + limit) : ""}`;
|
|
26
|
+
// const data: {
|
|
27
|
+
// data: Opportunity[], message: string
|
|
28
|
+
// } = await get(endpoint);
|
|
29
|
+
// return {
|
|
30
|
+
// success: true,
|
|
31
|
+
// message: data.message,
|
|
32
|
+
// opportunities: data.data,
|
|
33
|
+
// }
|
|
34
|
+
// } catch (error: any) {
|
|
35
|
+
// console.error('Failed to fetch opportunities by status: ', error);
|
|
36
|
+
// return {
|
|
37
|
+
// success: false,
|
|
38
|
+
// error: error.message,
|
|
39
|
+
// opportunities: []
|
|
40
|
+
// };
|
|
41
|
+
// }
|
|
42
|
+
// };
|
|
43
|
+
// export async function approveOpportunity(formData: FormData, slug: string): Promise<{ success: boolean, slug?: string, message?: string, error?: string }> {
|
|
44
|
+
// try {
|
|
45
|
+
// const endpoint = `/admin/approve-post/${slug}`
|
|
46
|
+
// const data: { message: string, data: string } = await patch(endpoint, formData);
|
|
47
|
+
// return {
|
|
48
|
+
// success: true,
|
|
49
|
+
// slug: data.data,
|
|
50
|
+
// message: data.message,
|
|
51
|
+
// }
|
|
52
|
+
// }
|
|
53
|
+
// catch (error: any) {
|
|
54
|
+
// console.error('Failed to save opportuntiy: ', error);
|
|
55
|
+
// return {
|
|
56
|
+
// success: false,
|
|
57
|
+
// error: error.message,
|
|
58
|
+
// };
|
|
59
|
+
// }
|
|
60
|
+
// }
|
|
61
|
+
// blogs
|
|
62
|
+
export async function getBlogTilesByStatus(status, limit) {
|
|
63
|
+
try {
|
|
64
|
+
const endpoint = `/blog/getAllBlogTiles?status=${status}${limit ? "&limit=" + limit : ""}`;
|
|
65
|
+
const data = await get(endpoint);
|
|
66
|
+
console.log(data);
|
|
67
|
+
return {
|
|
68
|
+
success: true,
|
|
69
|
+
message: data.message,
|
|
70
|
+
tiles: data.data.map((blog) => ({
|
|
71
|
+
slug: blog.slug || "",
|
|
72
|
+
image: blog.blogImages?.[0] || "/images/placeholder.svg",
|
|
73
|
+
title: blog.title || "",
|
|
74
|
+
description: truncateText(blog.overview, 150),
|
|
75
|
+
location: "",
|
|
76
|
+
date: blog.createdAt,
|
|
77
|
+
rating: blog.likes || 0,
|
|
78
|
+
skills: [],
|
|
79
|
+
className: "",
|
|
80
|
+
host: blog.author
|
|
81
|
+
? {
|
|
82
|
+
name: blog.author,
|
|
83
|
+
image: blog.authorImage,
|
|
84
|
+
}
|
|
85
|
+
: null,
|
|
86
|
+
isJob: false,
|
|
87
|
+
})),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
console.error("Failed to fetch blogs: ", error);
|
|
92
|
+
return {
|
|
93
|
+
success: false,
|
|
94
|
+
error: error.message,
|
|
95
|
+
tiles: [],
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// all opportunities (may not be required or may delete in future)
|
|
100
|
+
// export async function getAllOpportunities(): Promise<{ success: boolean, opportunities: Opportunity[], message?: string, error?: string }> {
|
|
101
|
+
// try {
|
|
102
|
+
// const res = await fetch('/sample/opportunity.json');
|
|
103
|
+
// const opportunities = await res.json() as Opportunity[];
|
|
104
|
+
// return {
|
|
105
|
+
// success: true,
|
|
106
|
+
// message: "fetch success",
|
|
107
|
+
// opportunities: opportunities,
|
|
108
|
+
// }
|
|
109
|
+
// } catch (error: any) {
|
|
110
|
+
// console.error('Failed to fetch all oppotunities: ', error);
|
|
111
|
+
// return {
|
|
112
|
+
// success: false,
|
|
113
|
+
// error: error.message,
|
|
114
|
+
// opportunities: []
|
|
115
|
+
// };
|
|
116
|
+
// }
|
|
117
|
+
// };
|
|
118
|
+
// for admin dashboard
|
|
119
|
+
// export async function getOpportunitiesByStatus(status: string[], limit?: number): Promise<{ success: boolean, opportunities: Opportunity[], message?: string, error?: string }> {
|
|
120
|
+
// try {
|
|
121
|
+
// const endpoint = `/newHostPost/getAllOppTiles?status=${status}${limit ? ("&limit=" + limit) : ""}`;
|
|
122
|
+
// const data: {
|
|
123
|
+
// data: Opportunity[], message: string
|
|
124
|
+
// } = await get(endpoint);
|
|
125
|
+
// return {
|
|
126
|
+
// success: true,
|
|
127
|
+
// message: data.message,
|
|
128
|
+
// opportunities: data.data,
|
|
129
|
+
// }
|
|
130
|
+
// } catch (error: any) {
|
|
131
|
+
// console.error('Failed to fetch opportunities by status: ', error);
|
|
132
|
+
// return {
|
|
133
|
+
// success: false,
|
|
134
|
+
// error: error.message,
|
|
135
|
+
// opportunities: []
|
|
136
|
+
// };
|
|
137
|
+
// }
|
|
138
|
+
// };
|
|
139
|
+
// export async function approveOpportunity(formData: FormData, slug: string): Promise<{ success: boolean, slug?: string, message?: string, error?: string }> {
|
|
140
|
+
// try {
|
|
141
|
+
// const endpoint = `/admin/approve-post/${slug}`
|
|
142
|
+
// const data: { message: string, data: string } = await patch(endpoint, formData);
|
|
143
|
+
// return {
|
|
144
|
+
// success: true,
|
|
145
|
+
// slug: data.data,
|
|
146
|
+
// message: data.message,
|
|
147
|
+
// }
|
|
148
|
+
// }
|
|
149
|
+
// catch (error: any) {
|
|
150
|
+
// console.error('Failed to save opportuntiy: ', error);
|
|
151
|
+
// return {
|
|
152
|
+
// success: false,
|
|
153
|
+
// error: error.message,
|
|
154
|
+
// };
|
|
155
|
+
// }
|
|
156
|
+
// }
|
|
157
|
+
// blogs
|
|
158
|
+
export async function relatedBlogTiles(slug, limit) {
|
|
159
|
+
try {
|
|
160
|
+
const endpoint = `/blog/getAllBlogTiles?status=posted${limit ? "&limit=" + (limit + 1) : ""}`;
|
|
161
|
+
const data = await get(endpoint);
|
|
162
|
+
console.log(data);
|
|
163
|
+
return {
|
|
164
|
+
success: true,
|
|
165
|
+
message: data.message,
|
|
166
|
+
tiles: data.data
|
|
167
|
+
.filter((blog) => blog.slug != slug)
|
|
168
|
+
.slice(0, limit)
|
|
169
|
+
.map((blog) => ({
|
|
170
|
+
slug: blog.slug || "",
|
|
171
|
+
image: blog.blogImages?.[0] || "/images/placeholder.svg",
|
|
172
|
+
title: blog.title || "",
|
|
173
|
+
description: truncateText(blog.overview, 150),
|
|
174
|
+
location: "",
|
|
175
|
+
date: blog.createdAt,
|
|
176
|
+
rating: blog.likes || 0,
|
|
177
|
+
skills: [],
|
|
178
|
+
className: "",
|
|
179
|
+
host: blog.author
|
|
180
|
+
? {
|
|
181
|
+
name: blog.author,
|
|
182
|
+
image: blog.authorImage,
|
|
183
|
+
}
|
|
184
|
+
: null,
|
|
185
|
+
isJob: false,
|
|
186
|
+
})),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
console.error("Failed to fetch related blogs: ", error);
|
|
191
|
+
return {
|
|
192
|
+
success: false,
|
|
193
|
+
error: error.message,
|
|
194
|
+
tiles: [],
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
export async function blogsByUsername(username, role) {
|
|
199
|
+
try {
|
|
200
|
+
// pending and admin blogs
|
|
201
|
+
const endpoint = `/blog/getBlogsByUsername/${role}/${username}`;
|
|
202
|
+
const data = await get(endpoint);
|
|
203
|
+
return {
|
|
204
|
+
success: true,
|
|
205
|
+
message: "fetch success",
|
|
206
|
+
tiles: data.data.map((blog) => ({
|
|
207
|
+
slug: blog.slug || "",
|
|
208
|
+
image: blog.blogImages?.[0] || "/images/placeholder.svg",
|
|
209
|
+
title: blog.title || "",
|
|
210
|
+
description: truncateText(blog.overview, 150),
|
|
211
|
+
location: "",
|
|
212
|
+
date: blog.createdAt,
|
|
213
|
+
rating: blog.likes || 0,
|
|
214
|
+
skills: [],
|
|
215
|
+
className: "",
|
|
216
|
+
host: blog.author
|
|
217
|
+
? {
|
|
218
|
+
name: blog.author,
|
|
219
|
+
image: blog.authorImage,
|
|
220
|
+
}
|
|
221
|
+
: null,
|
|
222
|
+
isJob: false,
|
|
223
|
+
})),
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
console.error("Failed to fetch blogs: ", error);
|
|
228
|
+
return {
|
|
229
|
+
success: false,
|
|
230
|
+
error: error.message,
|
|
231
|
+
tiles: [],
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
export async function getMyBlogs() {
|
|
236
|
+
try {
|
|
237
|
+
const endpoint = `/blog/getUserBlogs`;
|
|
238
|
+
const data = await get(endpoint);
|
|
239
|
+
return {
|
|
240
|
+
success: true,
|
|
241
|
+
message: "fetch success",
|
|
242
|
+
blogs: data.data,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
console.error("Failed to fetch blogs: ", error);
|
|
247
|
+
return {
|
|
248
|
+
success: false,
|
|
249
|
+
error: error.message,
|
|
250
|
+
blogs: [],
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
export async function deleteBlog(slug) {
|
|
255
|
+
try {
|
|
256
|
+
const endpoint = `/blog/delete/${slug}`;
|
|
257
|
+
const data = await del(endpoint);
|
|
258
|
+
return {
|
|
259
|
+
success: true,
|
|
260
|
+
message: data.message,
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
catch (error) {
|
|
264
|
+
console.error("Failed to delete blog: ", error);
|
|
265
|
+
return {
|
|
266
|
+
success: false,
|
|
267
|
+
error: error.message,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
// all opportunities (may not be required or may delete in future)
|
|
272
|
+
// export async function getAllOpportunities(): Promise<{ success: boolean, opportunities: Opportunity[], message?: string, error?: string }> {
|
|
273
|
+
// try {
|
|
274
|
+
// const res = await fetch('/sample/opportunity.json');
|
|
275
|
+
// const opportunities = await res.json() as Opportunity[];
|
|
276
|
+
// return {
|
|
277
|
+
// success: true,
|
|
278
|
+
// message: "fetch success",
|
|
279
|
+
// opportunities: opportunities,
|
|
280
|
+
// }
|
|
281
|
+
// } catch (error: any) {
|
|
282
|
+
// console.error('Failed to fetch all oppotunities: ', error);
|
|
283
|
+
// return {
|
|
284
|
+
// success: false,
|
|
285
|
+
// error: error.message,
|
|
286
|
+
// opportunities: []
|
|
287
|
+
// };
|
|
288
|
+
// }
|
|
289
|
+
// };
|
|
290
|
+
// for admin dashboard
|
|
291
|
+
// export async function getOpportunitiesByStatus(status: string[], limit?: number): Promise<{ success: boolean, opportunities: Opportunity[], message?: string, error?: string }> {
|
|
292
|
+
// try {
|
|
293
|
+
// const endpoint = `/newHostPost/getAllOppTiles?status=${status}${limit ? ("&limit=" + limit) : ""}`;
|
|
294
|
+
// const data: {
|
|
295
|
+
// data: Opportunity[], message: string
|
|
296
|
+
// } = await get(endpoint);
|
|
297
|
+
// return {
|
|
298
|
+
// success: true,
|
|
299
|
+
// message: data.message,
|
|
300
|
+
// opportunities: data.data,
|
|
301
|
+
// }
|
|
302
|
+
// } catch (error: any) {
|
|
303
|
+
// console.error('Failed to fetch opportunities by status: ', error);
|
|
304
|
+
// return {
|
|
305
|
+
// success: false,
|
|
306
|
+
// error: error.message,
|
|
307
|
+
// opportunities: []
|
|
308
|
+
// };
|
|
309
|
+
// }
|
|
310
|
+
// };
|
|
311
|
+
// export async function approveOpportunity(formData: FormData, slug: string): Promise<{ success: boolean, slug?: string, message?: string, error?: string }> {
|
|
312
|
+
// try {
|
|
313
|
+
// const endpoint = `/admin/approve-post/${slug}`
|
|
314
|
+
// const data: { message: string, data: string } = await patch(endpoint, formData);
|
|
315
|
+
// return {
|
|
316
|
+
// success: true,
|
|
317
|
+
// slug: data.data,
|
|
318
|
+
// message: data.message,
|
|
319
|
+
// }
|
|
320
|
+
// }
|
|
321
|
+
// catch (error: any) {
|
|
322
|
+
// console.error('Failed to save opportuntiy: ', error);
|
|
323
|
+
// return {
|
|
324
|
+
// success: false,
|
|
325
|
+
// error: error.message,
|
|
326
|
+
// };
|
|
327
|
+
// }
|
|
328
|
+
// }
|
|
329
|
+
// blogs
|
|
330
|
+
// may not be needed
|
|
331
|
+
// export async function getAllBlogs(): Promise<{ success: boolean, blogs: Blog[], message?: string, error?: string }> {
|
|
332
|
+
// try {
|
|
333
|
+
// const res = await fetch('/sample/blogs.json');
|
|
334
|
+
// const blogs = await res.json() as Blog[];
|
|
335
|
+
// return {
|
|
336
|
+
// success: true,
|
|
337
|
+
// message: "fetch success",
|
|
338
|
+
// blogs: blogs,
|
|
339
|
+
// };
|
|
340
|
+
// } catch (error: any) {
|
|
341
|
+
// console.error('Failed to fetch blogs: ', error);
|
|
342
|
+
// return {
|
|
343
|
+
// success: false,
|
|
344
|
+
// error: error.message,
|
|
345
|
+
// blogs: [],
|
|
346
|
+
// };
|
|
347
|
+
// }
|
|
348
|
+
// }
|
|
349
|
+
// for admin dashboard
|
|
350
|
+
export async function blogDetails(id) {
|
|
351
|
+
try {
|
|
352
|
+
const endpoint = `/blog/getBlogBySlug/${id}`;
|
|
353
|
+
const data = await get(endpoint);
|
|
354
|
+
return {
|
|
355
|
+
success: true,
|
|
356
|
+
message: "fetch success",
|
|
357
|
+
blog: data.blog,
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
catch (error) {
|
|
361
|
+
console.error("Failed to fetch blogs: ", error);
|
|
362
|
+
return {
|
|
363
|
+
success: false,
|
|
364
|
+
error: error.message,
|
|
365
|
+
blog: null,
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
// all opportunities (may not be required or may delete in future)
|
|
370
|
+
// export async function getAllOpportunities(): Promise<{ success: boolean, opportunities: Opportunity[], message?: string, error?: string }> {
|
|
371
|
+
// try {
|
|
372
|
+
// const res = await fetch('/sample/opportunity.json');
|
|
373
|
+
// const opportunities = await res.json() as Opportunity[];
|
|
374
|
+
// return {
|
|
375
|
+
// success: true,
|
|
376
|
+
// message: "fetch success",
|
|
377
|
+
// opportunities: opportunities,
|
|
378
|
+
// }
|
|
379
|
+
// } catch (error: any) {
|
|
380
|
+
// console.error('Failed to fetch all oppotunities: ', error);
|
|
381
|
+
// return {
|
|
382
|
+
// success: false,
|
|
383
|
+
// error: error.message,
|
|
384
|
+
// opportunities: []
|
|
385
|
+
// };
|
|
386
|
+
// }
|
|
387
|
+
// };
|
|
388
|
+
// for admin dashboard
|
|
389
|
+
// export async function getOpportunitiesByStatus(status: string[], limit?: number): Promise<{ success: boolean, opportunities: Opportunity[], message?: string, error?: string }> {
|
|
390
|
+
// try {
|
|
391
|
+
// const endpoint = `/newHostPost/getAllOppTiles?status=${status}${limit ? ("&limit=" + limit) : ""}`;
|
|
392
|
+
// const data: {
|
|
393
|
+
// data: Opportunity[], message: string
|
|
394
|
+
// } = await get(endpoint);
|
|
395
|
+
// return {
|
|
396
|
+
// success: true,
|
|
397
|
+
// message: data.message,
|
|
398
|
+
// opportunities: data.data,
|
|
399
|
+
// }
|
|
400
|
+
// } catch (error: any) {
|
|
401
|
+
// console.error('Failed to fetch opportunities by status: ', error);
|
|
402
|
+
// return {
|
|
403
|
+
// success: false,
|
|
404
|
+
// error: error.message,
|
|
405
|
+
// opportunities: []
|
|
406
|
+
// };
|
|
407
|
+
// }
|
|
408
|
+
// };
|
|
409
|
+
// export async function approveOpportunity(formData: FormData, slug: string): Promise<{ success: boolean, slug?: string, message?: string, error?: string }> {
|
|
410
|
+
// try {
|
|
411
|
+
// const endpoint = `/admin/approve-post/${slug}`
|
|
412
|
+
// const data: { message: string, data: string } = await patch(endpoint, formData);
|
|
413
|
+
// return {
|
|
414
|
+
// success: true,
|
|
415
|
+
// slug: data.data,
|
|
416
|
+
// message: data.message,
|
|
417
|
+
// }
|
|
418
|
+
// }
|
|
419
|
+
// catch (error: any) {
|
|
420
|
+
// console.error('Failed to save opportuntiy: ', error);
|
|
421
|
+
// return {
|
|
422
|
+
// success: false,
|
|
423
|
+
// error: error.message,
|
|
424
|
+
// };
|
|
425
|
+
// }
|
|
426
|
+
// }
|
|
427
|
+
// blogs
|
|
428
|
+
// may not be needed
|
|
429
|
+
// export async function getAllBlogs(): Promise<{ success: boolean, blogs: Blog[], message?: string, error?: string }> {
|
|
430
|
+
// try {
|
|
431
|
+
// const res = await fetch('/sample/blogs.json');
|
|
432
|
+
// const blogs = await res.json() as Blog[];
|
|
433
|
+
// return {
|
|
434
|
+
// success: true,
|
|
435
|
+
// message: "fetch success",
|
|
436
|
+
// blogs: blogs,
|
|
437
|
+
// };
|
|
438
|
+
// } catch (error: any) {
|
|
439
|
+
// console.error('Failed to fetch blogs: ', error);
|
|
440
|
+
// return {
|
|
441
|
+
// success: false,
|
|
442
|
+
// error: error.message,
|
|
443
|
+
// blogs: [],
|
|
444
|
+
// };
|
|
445
|
+
// }
|
|
446
|
+
// }
|
|
447
|
+
// for admin dashboard
|
|
448
|
+
export async function blogMetaData(slug) {
|
|
449
|
+
try {
|
|
450
|
+
const endpoint = `/blog/getBlogMetaData/${slug}`;
|
|
451
|
+
const data = await get(endpoint);
|
|
452
|
+
const blog = data.data;
|
|
453
|
+
return {
|
|
454
|
+
success: true,
|
|
455
|
+
message: data.message,
|
|
456
|
+
metadata: {
|
|
457
|
+
image: blog.blogImages?.[0] || "/images/placeholder.svg",
|
|
458
|
+
title: blog.title || "Trippeaze Blog",
|
|
459
|
+
overview: blog.overview ||
|
|
460
|
+
"Volunteer travel exchange platform - connect with global hosts and opportunities.",
|
|
461
|
+
},
|
|
462
|
+
};
|
|
463
|
+
}
|
|
464
|
+
catch (error) {
|
|
465
|
+
console.error("Failed to add oppotunities by status: ", error);
|
|
466
|
+
return {
|
|
467
|
+
success: false,
|
|
468
|
+
error: error.message,
|
|
469
|
+
metadata: null,
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
// all opportunities (may not be required or may delete in future)
|
|
474
|
+
// export async function getAllOpportunities(): Promise<{ success: boolean, opportunities: Opportunity[], message?: string, error?: string }> {
|
|
475
|
+
// try {
|
|
476
|
+
// const res = await fetch('/sample/opportunity.json');
|
|
477
|
+
// const opportunities = await res.json() as Opportunity[];
|
|
478
|
+
// return {
|
|
479
|
+
// success: true,
|
|
480
|
+
// message: "fetch success",
|
|
481
|
+
// opportunities: opportunities,
|
|
482
|
+
// }
|
|
483
|
+
// } catch (error: any) {
|
|
484
|
+
// console.error('Failed to fetch all oppotunities: ', error);
|
|
485
|
+
// return {
|
|
486
|
+
// success: false,
|
|
487
|
+
// error: error.message,
|
|
488
|
+
// opportunities: []
|
|
489
|
+
// };
|
|
490
|
+
// }
|
|
491
|
+
// };
|
|
492
|
+
// for admin dashboard
|
|
493
|
+
// export async function getOpportunitiesByStatus(status: string[], limit?: number): Promise<{ success: boolean, opportunities: Opportunity[], message?: string, error?: string }> {
|
|
494
|
+
// try {
|
|
495
|
+
// const endpoint = `/newHostPost/getAllOppTiles?status=${status}${limit ? ("&limit=" + limit) : ""}`;
|
|
496
|
+
// const data: {
|
|
497
|
+
// data: Opportunity[], message: string
|
|
498
|
+
// } = await get(endpoint);
|
|
499
|
+
// return {
|
|
500
|
+
// success: true,
|
|
501
|
+
// message: data.message,
|
|
502
|
+
// opportunities: data.data,
|
|
503
|
+
// }
|
|
504
|
+
// } catch (error: any) {
|
|
505
|
+
// console.error('Failed to fetch opportunities by status: ', error);
|
|
506
|
+
// return {
|
|
507
|
+
// success: false,
|
|
508
|
+
// error: error.message,
|
|
509
|
+
// opportunities: []
|
|
510
|
+
// };
|
|
511
|
+
// }
|
|
512
|
+
// };
|
|
513
|
+
// export async function approveOpportunity(formData: FormData, slug: string): Promise<{ success: boolean, slug?: string, message?: string, error?: string }> {
|
|
514
|
+
// try {
|
|
515
|
+
// const endpoint = `/admin/approve-post/${slug}`
|
|
516
|
+
// const data: { message: string, data: string } = await patch(endpoint, formData);
|
|
517
|
+
// return {
|
|
518
|
+
// success: true,
|
|
519
|
+
// slug: data.data,
|
|
520
|
+
// message: data.message,
|
|
521
|
+
// }
|
|
522
|
+
// }
|
|
523
|
+
// catch (error: any) {
|
|
524
|
+
// console.error('Failed to save opportuntiy: ', error);
|
|
525
|
+
// return {
|
|
526
|
+
// success: false,
|
|
527
|
+
// error: error.message,
|
|
528
|
+
// };
|
|
529
|
+
// }
|
|
530
|
+
// }
|
|
531
|
+
// blogs
|
|
532
|
+
// may not be needed
|
|
533
|
+
// export async function getAllBlogs(): Promise<{ success: boolean, blogs: Blog[], message?: string, error?: string }> {
|
|
534
|
+
// try {
|
|
535
|
+
// const res = await fetch('/sample/blogs.json');
|
|
536
|
+
// const blogs = await res.json() as Blog[];
|
|
537
|
+
// return {
|
|
538
|
+
// success: true,
|
|
539
|
+
// message: "fetch success",
|
|
540
|
+
// blogs: blogs,
|
|
541
|
+
// };
|
|
542
|
+
// } catch (error: any) {
|
|
543
|
+
// console.error('Failed to fetch blogs: ', error);
|
|
544
|
+
// return {
|
|
545
|
+
// success: false,
|
|
546
|
+
// error: error.message,
|
|
547
|
+
// blogs: [],
|
|
548
|
+
// };
|
|
549
|
+
// }
|
|
550
|
+
// }
|
|
551
|
+
// for admin dashboard
|
|
552
|
+
export async function createBlog(formData) {
|
|
553
|
+
try {
|
|
554
|
+
const endpoint = `/blog/create`;
|
|
555
|
+
const data = await post(endpoint, formData);
|
|
556
|
+
return {
|
|
557
|
+
success: true,
|
|
558
|
+
slug: data.data,
|
|
559
|
+
message: data.message,
|
|
560
|
+
};
|
|
561
|
+
}
|
|
562
|
+
catch (error) {
|
|
563
|
+
console.error("Failed to save blog: ", error);
|
|
564
|
+
return {
|
|
565
|
+
success: false,
|
|
566
|
+
error: error.message,
|
|
567
|
+
};
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
// all opportunities (may not be required or may delete in future)
|
|
571
|
+
// export async function getAllOpportunities(): Promise<{ success: boolean, opportunities: Opportunity[], message?: string, error?: string }> {
|
|
572
|
+
// try {
|
|
573
|
+
// const res = await fetch('/sample/opportunity.json');
|
|
574
|
+
// const opportunities = await res.json() as Opportunity[];
|
|
575
|
+
// return {
|
|
576
|
+
// success: true,
|
|
577
|
+
// message: "fetch success",
|
|
578
|
+
// opportunities: opportunities,
|
|
579
|
+
// }
|
|
580
|
+
// } catch (error: any) {
|
|
581
|
+
// console.error('Failed to fetch all oppotunities: ', error);
|
|
582
|
+
// return {
|
|
583
|
+
// success: false,
|
|
584
|
+
// error: error.message,
|
|
585
|
+
// opportunities: []
|
|
586
|
+
// };
|
|
587
|
+
// }
|
|
588
|
+
// };
|
|
589
|
+
// for admin dashboard
|
|
590
|
+
// export async function getOpportunitiesByStatus(status: string[], limit?: number): Promise<{ success: boolean, opportunities: Opportunity[], message?: string, error?: string }> {
|
|
591
|
+
// try {
|
|
592
|
+
// const endpoint = `/newHostPost/getAllOppTiles?status=${status}${limit ? ("&limit=" + limit) : ""}`;
|
|
593
|
+
// const data: {
|
|
594
|
+
// data: Opportunity[], message: string
|
|
595
|
+
// } = await get(endpoint);
|
|
596
|
+
// return {
|
|
597
|
+
// success: true,
|
|
598
|
+
// message: data.message,
|
|
599
|
+
// opportunities: data.data,
|
|
600
|
+
// }
|
|
601
|
+
// } catch (error: any) {
|
|
602
|
+
// console.error('Failed to fetch opportunities by status: ', error);
|
|
603
|
+
// return {
|
|
604
|
+
// success: false,
|
|
605
|
+
// error: error.message,
|
|
606
|
+
// opportunities: []
|
|
607
|
+
// };
|
|
608
|
+
// }
|
|
609
|
+
// };
|
|
610
|
+
// export async function approveOpportunity(formData: FormData, slug: string): Promise<{ success: boolean, slug?: string, message?: string, error?: string }> {
|
|
611
|
+
// try {
|
|
612
|
+
// const endpoint = `/admin/approve-post/${slug}`
|
|
613
|
+
// const data: { message: string, data: string } = await patch(endpoint, formData);
|
|
614
|
+
// return {
|
|
615
|
+
// success: true,
|
|
616
|
+
// slug: data.data,
|
|
617
|
+
// message: data.message,
|
|
618
|
+
// }
|
|
619
|
+
// }
|
|
620
|
+
// catch (error: any) {
|
|
621
|
+
// console.error('Failed to save opportuntiy: ', error);
|
|
622
|
+
// return {
|
|
623
|
+
// success: false,
|
|
624
|
+
// error: error.message,
|
|
625
|
+
// };
|
|
626
|
+
// }
|
|
627
|
+
// }
|
|
628
|
+
// blogs
|
|
629
|
+
// may not be needed
|
|
630
|
+
// export async function getAllBlogs(): Promise<{ success: boolean, blogs: Blog[], message?: string, error?: string }> {
|
|
631
|
+
// try {
|
|
632
|
+
// const res = await fetch('/sample/blogs.json');
|
|
633
|
+
// const blogs = await res.json() as Blog[];
|
|
634
|
+
// return {
|
|
635
|
+
// success: true,
|
|
636
|
+
// message: "fetch success",
|
|
637
|
+
// blogs: blogs,
|
|
638
|
+
// };
|
|
639
|
+
// } catch (error: any) {
|
|
640
|
+
// console.error('Failed to fetch blogs: ', error);
|
|
641
|
+
// return {
|
|
642
|
+
// success: false,
|
|
643
|
+
// error: error.message,
|
|
644
|
+
// blogs: [],
|
|
645
|
+
// };
|
|
646
|
+
// }
|
|
647
|
+
// }
|
|
648
|
+
// for admin dashboard
|
|
649
|
+
export async function editBlog(formData, slug) {
|
|
650
|
+
try {
|
|
651
|
+
const endpoint = `/blog/update/${slug}`;
|
|
652
|
+
const data = await patch(endpoint, formData);
|
|
653
|
+
return {
|
|
654
|
+
success: true,
|
|
655
|
+
slug: data.data,
|
|
656
|
+
message: data.message,
|
|
657
|
+
};
|
|
658
|
+
}
|
|
659
|
+
catch (error) {
|
|
660
|
+
console.error("Failed to save blog: ", error);
|
|
661
|
+
return {
|
|
662
|
+
success: false,
|
|
663
|
+
error: error.message,
|
|
664
|
+
};
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
// all opportunities (may not be required or may delete in future)
|
|
668
|
+
// export async function getAllOpportunities(): Promise<{ success: boolean, opportunities: Opportunity[], message?: string, error?: string }> {
|
|
669
|
+
// try {
|
|
670
|
+
// const res = await fetch('/sample/opportunity.json');
|
|
671
|
+
// const opportunities = await res.json() as Opportunity[];
|
|
672
|
+
// return {
|
|
673
|
+
// success: true,
|
|
674
|
+
// message: "fetch success",
|
|
675
|
+
// opportunities: opportunities,
|
|
676
|
+
// }
|
|
677
|
+
// } catch (error: any) {
|
|
678
|
+
// console.error('Failed to fetch all oppotunities: ', error);
|
|
679
|
+
// return {
|
|
680
|
+
// success: false,
|
|
681
|
+
// error: error.message,
|
|
682
|
+
// opportunities: []
|
|
683
|
+
// };
|
|
684
|
+
// }
|
|
685
|
+
// };
|
|
686
|
+
// for admin dashboard
|
|
687
|
+
// export async function getOpportunitiesByStatus(status: string[], limit?: number): Promise<{ success: boolean, opportunities: Opportunity[], message?: string, error?: string }> {
|
|
688
|
+
// try {
|
|
689
|
+
// const endpoint = `/newHostPost/getAllOppTiles?status=${status}${limit ? ("&limit=" + limit) : ""}`;
|
|
690
|
+
// const data: {
|
|
691
|
+
// data: Opportunity[], message: string
|
|
692
|
+
// } = await get(endpoint);
|
|
693
|
+
// return {
|
|
694
|
+
// success: true,
|
|
695
|
+
// message: data.message,
|
|
696
|
+
// opportunities: data.data,
|
|
697
|
+
// }
|
|
698
|
+
// } catch (error: any) {
|
|
699
|
+
// console.error('Failed to fetch opportunities by status: ', error);
|
|
700
|
+
// return {
|
|
701
|
+
// success: false,
|
|
702
|
+
// error: error.message,
|
|
703
|
+
// opportunities: []
|
|
704
|
+
// };
|
|
705
|
+
// }
|
|
706
|
+
// };
|
|
707
|
+
// export async function approveOpportunity(formData: FormData, slug: string): Promise<{ success: boolean, slug?: string, message?: string, error?: string }> {
|
|
708
|
+
// try {
|
|
709
|
+
// const endpoint = `/admin/approve-post/${slug}`
|
|
710
|
+
// const data: { message: string, data: string } = await patch(endpoint, formData);
|
|
711
|
+
// return {
|
|
712
|
+
// success: true,
|
|
713
|
+
// slug: data.data,
|
|
714
|
+
// message: data.message,
|
|
715
|
+
// }
|
|
716
|
+
// }
|
|
717
|
+
// catch (error: any) {
|
|
718
|
+
// console.error('Failed to save opportuntiy: ', error);
|
|
719
|
+
// return {
|
|
720
|
+
// success: false,
|
|
721
|
+
// error: error.message,
|
|
722
|
+
// };
|
|
723
|
+
// }
|
|
724
|
+
// }
|
|
725
|
+
// blogs
|
|
726
|
+
// may not be needed
|
|
727
|
+
// export async function getAllBlogs(): Promise<{ success: boolean, blogs: Blog[], message?: string, error?: string }> {
|
|
728
|
+
// try {
|
|
729
|
+
// const res = await fetch('/sample/blogs.json');
|
|
730
|
+
// const blogs = await res.json() as Blog[];
|
|
731
|
+
// return {
|
|
732
|
+
// success: true,
|
|
733
|
+
// message: "fetch success",
|
|
734
|
+
// blogs: blogs,
|
|
735
|
+
// };
|
|
736
|
+
// } catch (error: any) {
|
|
737
|
+
// console.error('Failed to fetch blogs: ', error);
|
|
738
|
+
// return {
|
|
739
|
+
// success: false,
|
|
740
|
+
// error: error.message,
|
|
741
|
+
// blogs: [],
|
|
742
|
+
// };
|
|
743
|
+
// }
|
|
744
|
+
// }
|
|
745
|
+
// for admin dashboard
|
|
746
|
+
export async function toogleBlogLike(slug) {
|
|
747
|
+
try {
|
|
748
|
+
const endpoint = `/blog/${slug}/toogleLike`;
|
|
749
|
+
const data = await get(endpoint);
|
|
750
|
+
return {
|
|
751
|
+
success: true,
|
|
752
|
+
message: data.message,
|
|
753
|
+
};
|
|
754
|
+
}
|
|
755
|
+
catch (error) {
|
|
756
|
+
console.error(error);
|
|
757
|
+
return {
|
|
758
|
+
success: false,
|
|
759
|
+
error: error,
|
|
760
|
+
};
|
|
761
|
+
}
|
|
762
|
+
}
|