@myrjfa/state 1.0.6 → 1.0.8

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 (67) hide show
  1. package/dist/index.d.ts +9 -4
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +9 -4
  4. package/dist/lib/QueryProvider.d.ts +1 -1
  5. package/dist/lib/QueryProvider.d.ts.map +1 -1
  6. package/dist/lib/actions/actions.d.ts +141 -0
  7. package/dist/lib/actions/actions.d.ts.map +1 -0
  8. package/dist/lib/actions/actions.js +307 -0
  9. package/dist/lib/actions/auth.d.ts +150 -0
  10. package/dist/lib/actions/auth.d.ts.map +1 -0
  11. package/dist/lib/actions/auth.js +125 -0
  12. package/dist/lib/actions/chat.d.ts +48 -0
  13. package/dist/lib/actions/chat.d.ts.map +1 -0
  14. package/dist/lib/actions/chat.js +303 -0
  15. package/dist/lib/actions/fetcher.d.ts +9 -0
  16. package/dist/lib/actions/fetcher.d.ts.map +1 -0
  17. package/dist/lib/actions/fetcher.js +84 -0
  18. package/dist/lib/actions/severActions.d.ts +3 -0
  19. package/dist/lib/actions/severActions.d.ts.map +1 -0
  20. package/dist/lib/actions/severActions.js +19 -0
  21. package/dist/lib/actions/socket.d.ts +7 -0
  22. package/dist/lib/actions/socket.d.ts.map +1 -0
  23. package/dist/lib/actions/socket.js +22 -0
  24. package/dist/lib/actions.d.ts +3 -3
  25. package/dist/lib/actions.d.ts.map +1 -1
  26. package/dist/lib/actions.js +2 -2
  27. package/dist/lib/authSessionManager.js +1 -1
  28. package/dist/lib/context/ChatContext.d.ts +25 -0
  29. package/dist/lib/context/ChatContext.d.ts.map +1 -0
  30. package/dist/lib/context/ChatContext.js +229 -0
  31. package/dist/lib/data/countryStates.d.ts +8 -0
  32. package/dist/lib/data/countryStates.d.ts.map +1 -1
  33. package/dist/lib/data/countryStates.js +24 -0
  34. package/dist/lib/hooks/useChatSocket.d.ts +6 -0
  35. package/dist/lib/hooks/useChatSocket.d.ts.map +1 -0
  36. package/dist/lib/hooks/useChatSocket.js +35 -0
  37. package/dist/lib/models/application.d.ts +1 -0
  38. package/dist/lib/models/application.d.ts.map +1 -1
  39. package/dist/lib/models/blog.d.ts +4 -4
  40. package/dist/lib/models/chat.d.ts +122 -0
  41. package/dist/lib/models/chat.d.ts.map +1 -0
  42. package/dist/lib/models/chat.js +1 -0
  43. package/dist/lib/models/opportunities/freelance.d.ts +499 -0
  44. package/dist/lib/models/opportunities/freelance.d.ts.map +1 -0
  45. package/dist/lib/models/opportunities/freelance.js +12 -0
  46. package/dist/lib/models/opportunities/internship.d.ts +476 -0
  47. package/dist/lib/models/opportunities/internship.d.ts.map +1 -0
  48. package/dist/lib/models/opportunities/internship.js +7 -0
  49. package/dist/lib/models/opportunities/job.d.ts +612 -0
  50. package/dist/lib/models/opportunities/job.d.ts.map +1 -0
  51. package/dist/lib/models/opportunities/job.js +26 -0
  52. package/dist/lib/models/opportunities/opportunity.d.ts +582 -0
  53. package/dist/lib/models/opportunities/opportunity.d.ts.map +1 -0
  54. package/dist/lib/models/opportunities/opportunity.js +227 -0
  55. package/dist/lib/models/opportunities/volunteerJob.d.ts +453 -0
  56. package/dist/lib/models/opportunities/volunteerJob.d.ts.map +1 -0
  57. package/dist/lib/models/opportunities/volunteerJob.js +5 -0
  58. package/dist/lib/models/portfolio.d.ts +2 -2
  59. package/dist/lib/models/props.d.ts.map +1 -1
  60. package/dist/lib/models/props.js +1 -0
  61. package/dist/lib/models/tile.d.ts +3 -0
  62. package/dist/lib/models/tile.d.ts.map +1 -1
  63. package/dist/lib/socket.d.ts +7 -0
  64. package/dist/lib/socket.d.ts.map +1 -0
  65. package/dist/lib/socket.js +22 -0
  66. package/dist/lib/userAtom.js +2 -2
  67. package/package.json +4 -2
@@ -1 +1 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/lib/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/lib/actions.ts"],"names":[],"mappings":"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"}
@@ -13,11 +13,11 @@ export async function getCurrentUser() {
13
13
  return null;
14
14
  }
15
15
  }
16
- export async function userDetails(username, role) {
16
+ export async function userDetails(query, role) {
17
17
  try {
18
18
  if (role == "admin")
19
19
  role = "user";
20
- const endpoint = `/${role}s/other-${role}/${username}`;
20
+ const endpoint = `/${role}s/other-${role}/${query}`;
21
21
  const data = await get(endpoint);
22
22
  return {
23
23
  success: true,
@@ -3,7 +3,7 @@ import { useAtom } from 'jotai'; // Import useSetAtom
3
3
  import { useEffect } from 'react';
4
4
  import { useQuery } from '@tanstack/react-query';
5
5
  import { initializeAuthSessionAtom, resetAuthState } from './userAtom'; // Import the atom itself
6
- import { validateSession } from './auth';
6
+ import { validateSession } from './actions/auth';
7
7
  export default function AuthSessionManager() {
8
8
  const [, initializeAuthSession] = useAtom(initializeAuthSessionAtom);
9
9
  // --- Initial Session Load ---
@@ -0,0 +1,25 @@
1
+ import React from "react";
2
+ import type { Socket } from "socket.io-client";
3
+ import type { Conversation, Message } from "../models/chat";
4
+ interface ChatContextType {
5
+ socket: Socket | null;
6
+ isConnected: boolean;
7
+ conversations: Conversation[];
8
+ activeConversation: Conversation | null;
9
+ setActiveConversation: (conv: Conversation | null) => void;
10
+ messages: Message[];
11
+ setMessages: React.Dispatch<React.SetStateAction<Message[]>>;
12
+ typingUsers: Map<string, string[]>;
13
+ onlineUsers: Set<string>;
14
+ refreshConversations: () => Promise<void>;
15
+ sendMessage: (conversationId: string, text: string, files?: File[], replyTo?: string) => Promise<void>;
16
+ editMessage: (messageId: string, text: string) => void;
17
+ addMessageReaction: (messageId: string, reaction: string) => void;
18
+ deleteMessage: (messageId: string) => void;
19
+ }
20
+ export declare function useChatContext(): ChatContextType;
21
+ export declare function ChatProvider({ children }: {
22
+ children: React.ReactNode;
23
+ }): import("react/jsx-runtime").JSX.Element;
24
+ export {};
25
+ //# sourceMappingURL=ChatContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatContext.d.ts","sourceRoot":"","sources":["../../../src/lib/context/ChatContext.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8E,MAAM,OAAO,CAAC;AACnG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAK5D,UAAU,eAAe;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,kBAAkB,EAAE,YAAY,GAAG,IAAI,CAAC;IACxC,qBAAqB,EAAE,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3D,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7D,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,WAAW,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvG,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAClE,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAmBD,wBAAgB,cAAc,oBAE7B;AAED,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CA8OvE"}
@@ -0,0 +1,229 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { createContext, useContext, useEffect, useState, useCallback, useRef } from "react";
4
+ import { getSocket } from "../actions/socket";
5
+ import { chatApi } from "../actions/chat";
6
+ import { useAtomValue } from "jotai";
7
+ import { userAtom } from "../userAtom";
8
+ const ChatContext = createContext({
9
+ socket: null,
10
+ isConnected: false,
11
+ conversations: [],
12
+ activeConversation: null,
13
+ setActiveConversation: () => { },
14
+ messages: [],
15
+ setMessages: () => { },
16
+ typingUsers: new Map(),
17
+ onlineUsers: new Set(),
18
+ refreshConversations: async () => { },
19
+ sendMessage: async () => { },
20
+ editMessage: () => { },
21
+ addMessageReaction: () => { },
22
+ deleteMessage: () => { },
23
+ });
24
+ export function useChatContext() {
25
+ return useContext(ChatContext);
26
+ }
27
+ export function ChatProvider({ children }) {
28
+ const user = useAtomValue(userAtom);
29
+ const [isConnected, setIsConnected] = useState(false);
30
+ const [conversations, setConversations] = useState([]);
31
+ const [activeConversation, setActiveConversation] = useState(null);
32
+ const activeConversationRef = useRef(null);
33
+ const [messages, setMessages] = useState([]);
34
+ const [typingUsers, setTypingUsers] = useState(new Map());
35
+ const [onlineUsers, setOnlineUsers] = useState(new Set());
36
+ const socketRef = useRef(null);
37
+ // If user changes, we might want to reset state?
38
+ // For now, let's assume component remounts on logout.
39
+ useEffect(() => {
40
+ activeConversationRef.current = activeConversation;
41
+ }, [activeConversation]);
42
+ const refreshConversations = useCallback(async () => {
43
+ try {
44
+ const data = await chatApi.getConversations();
45
+ setConversations(data);
46
+ }
47
+ catch (err) {
48
+ console.error("Failed to fetch conversations:", err);
49
+ }
50
+ }, []);
51
+ const sendMessage = useCallback(async (conversationId, text, files, replyTo) => {
52
+ if (!socketRef.current)
53
+ return;
54
+ let media = [];
55
+ if (files && files.length > 0) {
56
+ // Upload files first
57
+ const formData = new FormData();
58
+ files.forEach(f => formData.append("chatFiles", f));
59
+ try {
60
+ // We need a dedicated upload endpoint.
61
+ // For now, let's assume /api/v1/chat/upload
62
+ const response = await chatApi.uploadFiles(formData);
63
+ if (response.error) {
64
+ console.error("File upload failed:", response.error);
65
+ return;
66
+ }
67
+ media = response.data.files.map((f) => ({
68
+ type: f.mimetype.startsWith("image") ? "image" : "file",
69
+ url: f.location,
70
+ name: f.originalname
71
+ }));
72
+ }
73
+ catch (err) {
74
+ console.error("File upload failed:", err);
75
+ }
76
+ }
77
+ socketRef.current.emit("message:send", {
78
+ conversationId,
79
+ content: { text, media },
80
+ type: media.length > 0 ? "media" : "text",
81
+ replyTo,
82
+ });
83
+ }, []);
84
+ const editMessage = useCallback((messageId, text) => {
85
+ if (!socketRef.current)
86
+ return;
87
+ socketRef.current.emit("message:edit", { messageId, text });
88
+ }, []);
89
+ const addMessageReaction = useCallback((messageId, reaction) => {
90
+ if (!socketRef.current)
91
+ return;
92
+ console.log("reaction:", reaction);
93
+ socketRef.current.emit("message:react", { messageId, reaction });
94
+ }, []);
95
+ const deleteMessage = useCallback((messageId) => {
96
+ if (!socketRef.current)
97
+ return;
98
+ socketRef.current.emit("message:delete", { messageId });
99
+ }, []);
100
+ useEffect(() => {
101
+ if (!user) {
102
+ setIsConnected(false);
103
+ setConversations([]);
104
+ return;
105
+ }
106
+ const socket = getSocket();
107
+ socketRef.current = socket;
108
+ function onConnect() {
109
+ setIsConnected(true);
110
+ refreshConversations();
111
+ }
112
+ function onDisconnect() {
113
+ setIsConnected(false);
114
+ }
115
+ socket.on("connect", onConnect);
116
+ socket.on("disconnect", onDisconnect);
117
+ if (!socket.connected) {
118
+ socket.connect();
119
+ }
120
+ else {
121
+ // Include logic for if already connected
122
+ onConnect();
123
+ }
124
+ // New message
125
+ socket.on("message:new", ({ conversationId, message }) => {
126
+ setMessages((prev) => {
127
+ const currentActiveId = activeConversationRef.current?._id;
128
+ // If we have messages, check if they belong to this conversation
129
+ // OR if we have no messages, check if this is the active conversation
130
+ if ((prev.length > 0 && prev[0]?.conversationId === conversationId) ||
131
+ (prev.length === 0 && currentActiveId === conversationId)) {
132
+ // Deduplicate
133
+ if (prev.some((m) => m._id === message._id))
134
+ return prev;
135
+ return [...prev, message];
136
+ }
137
+ return prev;
138
+ });
139
+ // Update conversations last message
140
+ setConversations((prev) => prev
141
+ .map((c) => c._id === conversationId
142
+ ? {
143
+ ...c,
144
+ lastMessage: {
145
+ content: message.content?.text || `[${message.type}]`,
146
+ senderId: message.senderId,
147
+ sentAt: message.createdAt,
148
+ },
149
+ updatedAt: message.createdAt,
150
+ }
151
+ : c)
152
+ .sort((a, b) => new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime()));
153
+ });
154
+ // Message updated
155
+ socket.on("message:updated", ({ message }) => {
156
+ setMessages((prev) => prev.map((m) => (m._id === message._id ? message : m)));
157
+ });
158
+ // Message deleted
159
+ socket.on("message:deleted", ({ messageId }) => {
160
+ setMessages((prev) => prev.filter((m) => m._id !== messageId));
161
+ });
162
+ // Typing indicators
163
+ socket.on("typing:start", ({ conversationId, userId }) => {
164
+ setTypingUsers((prev) => {
165
+ const next = new Map(prev);
166
+ const users = next.get(conversationId) || [];
167
+ if (!users.includes(userId)) {
168
+ next.set(conversationId, [...users, userId]);
169
+ }
170
+ return next;
171
+ });
172
+ });
173
+ socket.on("typing:stop", ({ conversationId, userId }) => {
174
+ setTypingUsers((prev) => {
175
+ const next = new Map(prev);
176
+ const users = next.get(conversationId) || [];
177
+ next.set(conversationId, users.filter((u) => u !== userId));
178
+ return next;
179
+ });
180
+ });
181
+ // Online/offline
182
+ socket.on("presence:online", ({ userId }) => {
183
+ setOnlineUsers((prev) => new Set(prev).add(userId));
184
+ });
185
+ socket.on("presence:offline", ({ userId }) => {
186
+ setOnlineUsers((prev) => {
187
+ const next = new Set(prev);
188
+ next.delete(userId);
189
+ return next;
190
+ });
191
+ });
192
+ return () => {
193
+ socket.off("connect", onConnect);
194
+ socket.off("disconnect", onDisconnect);
195
+ socket.off("message:new");
196
+ socket.off("message:updated");
197
+ socket.off("message:deleted");
198
+ socket.off("typing:start");
199
+ socket.off("typing:stop");
200
+ socket.off("presence:online");
201
+ socket.off("presence:offline");
202
+ // Disconnect on unmount? Maybe not if shared across pages.
203
+ // But if specific to chat...
204
+ // For shared state lib, we might want to keep it open?
205
+ // If user navigates away from chat pages, maybe close it?
206
+ // The original logic disconnected on unmount.
207
+ // But if we want global notifications (unread count), we need it open.
208
+ // Let's keep it open but manage listeners.
209
+ // Actually, if we unmount the provider, we should disconnect or remove listeners.
210
+ // Assuming this Provider wraps only Chat pages.
211
+ };
212
+ }, [user, refreshConversations]);
213
+ return (_jsx(ChatContext.Provider, { value: {
214
+ socket: socketRef.current,
215
+ isConnected,
216
+ conversations,
217
+ activeConversation,
218
+ setActiveConversation,
219
+ messages,
220
+ setMessages,
221
+ typingUsers,
222
+ onlineUsers,
223
+ refreshConversations,
224
+ sendMessage,
225
+ editMessage,
226
+ addMessageReaction,
227
+ deleteMessage
228
+ }, children: children }));
229
+ }
@@ -20,4 +20,12 @@ export declare function searchStatesOfCountry(countryName: string, query: string
20
20
  export declare function getCurrencies(): string[];
21
21
  export declare function getCurrency(countryName: string): string | null;
22
22
  export declare function getCountiesByCurrency(currencyName: string): string[];
23
+ /**
24
+ * Converts a price from one currency to another.
25
+ * @param amount - The amount to convert
26
+ * @param fromCurrency - The source currency code
27
+ * @param toCurrency - The target currency code
28
+ * @returns The converted amount
29
+ */
30
+ export declare function convertCurrency(amount: number, fromCurrency: string, toCurrency: string | undefined): number;
23
31
  //# sourceMappingURL=countryStates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"countryStates.d.ts","sourceRoot":"","sources":["../../../src/lib/data/countryStates.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,SAAS,EAAE,OAAO,EAo4N9B,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAGrB,CAAC;AAElC,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAGrB,CAAC;AAGnC,wBAAgB,YAAY,IAAI,OAAO,EAAE,CAExC;AAED,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAEvD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAElE;AAED,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C;AAED,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAErD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAElE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAKxD;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAMlF;AAED,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC;AAED,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE9D;AAED,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpE"}
1
+ {"version":3,"file":"countryStates.d.ts","sourceRoot":"","sources":["../../../src/lib/data/countryStates.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,SAAS,EAAE,OAAO,EAo4N9B,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAGrB,CAAC;AAElC,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAGrB,CAAC;AAGnC,wBAAgB,YAAY,IAAI,OAAO,EAAE,CAExC;AAED,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAEvD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAElE;AAED,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C;AAED,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAErD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAElE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAKxD;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAMlF;AAED,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC;AAED,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE9D;AAED,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpE;AASD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAY5G"}
@@ -7091,3 +7091,27 @@ export function getCurrency(countryName) {
7091
7091
  export function getCountiesByCurrency(currencyName) {
7092
7092
  return COUNTRIES.filter(country => country.currency == currencyName).map(country => country.name);
7093
7093
  }
7094
+ const exchangeRates = {
7095
+ 'inr': 1,
7096
+ 'usd': 90,
7097
+ 'eur': 109,
7098
+ 'gbp': 120,
7099
+ };
7100
+ /**
7101
+ * Converts a price from one currency to another.
7102
+ * @param amount - The amount to convert
7103
+ * @param fromCurrency - The source currency code
7104
+ * @param toCurrency - The target currency code
7105
+ * @returns The converted amount
7106
+ */
7107
+ export function convertCurrency(amount, fromCurrency, toCurrency) {
7108
+ const from = fromCurrency?.toLowerCase() || 'inr';
7109
+ const to = toCurrency?.toLowerCase() || 'inr';
7110
+ // If same currency or invalid, return original amount
7111
+ if (from === to || !from)
7112
+ return amount;
7113
+ const fromRate = exchangeRates[from] || 1;
7114
+ const toRate = exchangeRates[to] || 1;
7115
+ // Convert: amount in 'from' currency -> INR -> 'to' currency
7116
+ return (amount * fromRate) / toRate;
7117
+ }
@@ -0,0 +1,6 @@
1
+ import type { Socket } from "socket.io-client";
2
+ export declare const useChatSocket: () => {
3
+ socket: Socket | null;
4
+ isConnected: boolean;
5
+ };
6
+ //# sourceMappingURL=useChatSocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChatSocket.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks/useChatSocket.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,eAAO,MAAM,aAAa,QAAO;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAuC7E,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { useEffect } from "react";
2
+ import { useAtom, useAtomValue } from "jotai";
3
+ import { getSocket, socketAtom, isConnectedAtom, disconnectSocket } from "../actions/socket";
4
+ import { userAtom } from "../userAtom";
5
+ export const useChatSocket = () => {
6
+ const user = useAtomValue(userAtom);
7
+ const [socket, setSocket] = useAtom(socketAtom);
8
+ const [isConnected, setIsConnected] = useAtom(isConnectedAtom);
9
+ useEffect(() => {
10
+ if (!user) {
11
+ disconnectSocket();
12
+ setSocket(null);
13
+ setIsConnected(false);
14
+ return;
15
+ }
16
+ const socketInstance = getSocket();
17
+ function onConnect() {
18
+ setIsConnected(true);
19
+ }
20
+ function onDisconnect() {
21
+ setIsConnected(false);
22
+ }
23
+ socketInstance.on("connect", onConnect);
24
+ socketInstance.on("disconnect", onDisconnect);
25
+ if (!socketInstance.connected) {
26
+ socketInstance.connect();
27
+ }
28
+ setSocket(socketInstance);
29
+ return () => {
30
+ socketInstance.off("connect", onConnect);
31
+ socketInstance.off("disconnect", onDisconnect);
32
+ };
33
+ }, [user, setSocket, setIsConnected]);
34
+ return { socket, isConnected };
35
+ };
@@ -10,6 +10,7 @@ export interface Application {
10
10
  hostId?: string;
11
11
  opportunityId: string;
12
12
  opportunityTitle: string;
13
+ opportunityType?: 'volunteer' | 'job' | 'internship' | 'freelance';
13
14
  location: string;
14
15
  status: ApplicationStatus;
15
16
  skills: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../src/lib/models/application.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,eAAe,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;AAElG,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAC;IAEZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IAEjB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,EAAE,WAAW,EAiIzC,CAAC"}
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../src/lib/models/application.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,eAAe,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;AAElG,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAC;IAEZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,WAAW,GAAG,KAAK,GAAG,YAAY,GAAG,WAAW,CAAC;IACnE,QAAQ,EAAE,MAAM,CAAC;IAEjB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,EAAE,WAAW,EAiIzC,CAAC"}
@@ -24,13 +24,13 @@ export declare const BlogSchema: z.ZodObject<{
24
24
  createdAt: Date;
25
25
  updatedAt: Date;
26
26
  slug: string;
27
+ views: number;
28
+ shares: number;
27
29
  overview: string;
28
30
  content: string;
29
31
  blogImages: string[];
30
- views: number;
31
32
  likes: number;
32
33
  comments: number;
33
- shares: number;
34
34
  author: string;
35
35
  authorImage: string;
36
36
  authorRole: "host" | "user" | "admin";
@@ -41,13 +41,13 @@ export declare const BlogSchema: z.ZodObject<{
41
41
  createdAt: Date;
42
42
  updatedAt: Date;
43
43
  slug: string;
44
+ views: number;
45
+ shares: number;
44
46
  overview: string;
45
47
  content: string;
46
48
  blogImages: string[];
47
- views: number;
48
49
  likes: number;
49
50
  comments: number;
50
- shares: number;
51
51
  author: string;
52
52
  authorImage: string;
53
53
  authorRole: "host" | "user" | "admin";
@@ -0,0 +1,122 @@
1
+ import { UserRole } from "./props";
2
+ export interface Participant {
3
+ userId: string;
4
+ chatRole: "admin" | "member";
5
+ role: UserRole;
6
+ profilePic?: string;
7
+ joinedAt: string;
8
+ lastReadMessageId?: string;
9
+ notifications: "all" | "mentions" | "none";
10
+ }
11
+ export interface ConversationFeatures {
12
+ milestones: boolean;
13
+ expenses: boolean;
14
+ }
15
+ export interface Conversation {
16
+ _id: string;
17
+ type: "individual" | "group";
18
+ name?: string;
19
+ description?: string;
20
+ image?: string;
21
+ participants: Participant[];
22
+ features: ConversationFeatures;
23
+ linkedTo?: {
24
+ type: "opportunity" | "travelPackage";
25
+ entityId: string;
26
+ };
27
+ lastMessage?: {
28
+ content: string;
29
+ senderId: string;
30
+ sentAt: string;
31
+ };
32
+ createdBy: string;
33
+ createdAt: string;
34
+ updatedAt: string;
35
+ }
36
+ export interface MediaItem {
37
+ url: string;
38
+ type: "image" | "video" | "document";
39
+ name: string;
40
+ size: number;
41
+ }
42
+ export interface MessageContent {
43
+ text?: string;
44
+ media?: MediaItem[];
45
+ referenceId?: string;
46
+ referenceType?: "milestone" | "expense";
47
+ }
48
+ export interface Reaction {
49
+ userId: string;
50
+ emoji: string;
51
+ createdAt: string;
52
+ }
53
+ export interface ReadReceipt {
54
+ userId: string;
55
+ readAt: string;
56
+ }
57
+ export interface Message {
58
+ _id: string;
59
+ conversationId: string;
60
+ senderId: string;
61
+ type: "text" | "image" | "file" | "media" | "milestone" | "expense" | "system" | "audio" | "location";
62
+ content: MessageContent;
63
+ replyTo?: Message;
64
+ reactions: Reaction[];
65
+ readBy: ReadReceipt[];
66
+ isEdited: boolean;
67
+ isDeleted: boolean;
68
+ createdAt: string;
69
+ updatedAt: string;
70
+ }
71
+ export interface MilestoneCheck {
72
+ userId: string;
73
+ checkedAt: string;
74
+ note?: string;
75
+ }
76
+ export interface Milestone {
77
+ _id: string;
78
+ conversationId: string;
79
+ title: string;
80
+ description?: string;
81
+ section?: string;
82
+ order: number;
83
+ checks: MilestoneCheck[];
84
+ isCompleted: boolean;
85
+ completedAt?: string;
86
+ createdBy: string;
87
+ createdAt: string;
88
+ updatedAt: string;
89
+ }
90
+ export type ExpenseCategory = "food" | "transport" | "accommodation" | "activity" | "shopping" | "other";
91
+ export type SplitType = "equal" | "exact" | "percentage" | "shares";
92
+ export interface ExpensePayer {
93
+ userId: string;
94
+ amount: number;
95
+ }
96
+ export interface ExpenseSplit {
97
+ userId: string;
98
+ amount: number;
99
+ shares?: number;
100
+ percentage?: number;
101
+ isPaid: boolean;
102
+ paidAt?: string;
103
+ }
104
+ export interface Expense {
105
+ _id: string;
106
+ conversationId: string;
107
+ title: string;
108
+ description?: string;
109
+ amount: number;
110
+ currency: string;
111
+ category: ExpenseCategory;
112
+ paidBy: ExpensePayer[];
113
+ splitType: SplitType;
114
+ splits: ExpenseSplit[];
115
+ receipt?: string;
116
+ location?: string;
117
+ date: string;
118
+ createdBy: string;
119
+ createdAt: string;
120
+ updatedAt: string;
121
+ }
122
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/lib/models/chat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};