@myrjfa/state 1.1.1 → 2.0.0

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 (86) hide show
  1. package/dist/index.d.ts +34 -18
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +34 -18
  4. package/dist/lib/actions/actions.d.ts +170 -170
  5. package/dist/lib/actions/actions.js +307 -307
  6. package/dist/lib/actions/auth.d.ts +20 -0
  7. package/dist/lib/actions/auth.d.ts.map +1 -1
  8. package/dist/lib/actions/booking.d.ts +30 -0
  9. package/dist/lib/actions/booking.d.ts.map +1 -0
  10. package/dist/lib/actions/booking.js +77 -0
  11. package/dist/lib/actions/fetcher.js +84 -84
  12. package/dist/lib/actions/severActions.js +2 -2
  13. package/dist/lib/authSessionManager.js +34 -34
  14. package/dist/lib/context/ChatContext.js +338 -338
  15. package/dist/lib/models/adventure.d.ts +75 -0
  16. package/dist/lib/models/adventure.d.ts.map +1 -0
  17. package/dist/lib/models/adventure.js +1 -0
  18. package/dist/lib/models/blog.d.ts +4 -4
  19. package/dist/lib/models/booking.d.ts +47 -0
  20. package/dist/lib/models/booking.d.ts.map +1 -0
  21. package/dist/lib/models/booking.js +1 -0
  22. package/dist/lib/models/guide.d.ts +43 -0
  23. package/dist/lib/models/guide.d.ts.map +1 -0
  24. package/dist/lib/models/guide.js +1 -0
  25. package/dist/lib/models/notfications.d.ts +93 -93
  26. package/dist/lib/models/opportunities/freelance.d.ts +74 -6
  27. package/dist/lib/models/opportunities/freelance.d.ts.map +1 -1
  28. package/dist/lib/models/opportunities/internship.d.ts +74 -6
  29. package/dist/lib/models/opportunities/internship.d.ts.map +1 -1
  30. package/dist/lib/models/opportunities/job.d.ts +74 -6
  31. package/dist/lib/models/opportunities/job.d.ts.map +1 -1
  32. package/dist/lib/models/opportunities/opportunity.d.ts +74 -6
  33. package/dist/lib/models/opportunities/opportunity.d.ts.map +1 -1
  34. package/dist/lib/models/opportunities/volunteerJob.d.ts +74 -6
  35. package/dist/lib/models/opportunities/volunteerJob.d.ts.map +1 -1
  36. package/dist/lib/models/package.d.ts +264 -0
  37. package/dist/lib/models/package.d.ts.map +1 -0
  38. package/dist/lib/models/package.js +58 -0
  39. package/dist/lib/models/portfolio.d.ts +42 -42
  40. package/dist/lib/models/props.d.ts +3 -0
  41. package/dist/lib/models/props.d.ts.map +1 -1
  42. package/dist/lib/models/props.js +36 -0
  43. package/dist/lib/models/rental.d.ts +85 -0
  44. package/dist/lib/models/rental.d.ts.map +1 -0
  45. package/dist/lib/models/rental.js +1 -0
  46. package/dist/lib/models/review.d.ts +1 -1
  47. package/dist/lib/models/review.d.ts.map +1 -1
  48. package/dist/lib/models/stay.d.ts +459 -0
  49. package/dist/lib/models/stay.d.ts.map +1 -0
  50. package/dist/lib/models/stay.js +214 -0
  51. package/dist/lib/models/tile.d.ts +53 -28
  52. package/dist/lib/models/tile.d.ts.map +1 -1
  53. package/dist/lib/models/user.d.ts +48 -0
  54. package/dist/lib/models/user.d.ts.map +1 -1
  55. package/dist/lib/models/user.js +10 -0
  56. package/dist/lib/userAtom.d.ts +238 -198
  57. package/dist/lib/userAtom.d.ts.map +1 -1
  58. package/dist/lib/userAtom.js +127 -127
  59. package/package.json +6 -1
  60. package/dist/lib/actions/property.d.ts +0 -77
  61. package/dist/lib/actions/property.d.ts.map +0 -1
  62. package/dist/lib/actions/property.js +0 -133
  63. package/dist/lib/actions.d.ts +0 -141
  64. package/dist/lib/actions.d.ts.map +0 -1
  65. package/dist/lib/actions.js +0 -307
  66. package/dist/lib/auth.d.ts +0 -150
  67. package/dist/lib/auth.d.ts.map +0 -1
  68. package/dist/lib/auth.js +0 -125
  69. package/dist/lib/fetcher.d.ts +0 -9
  70. package/dist/lib/fetcher.d.ts.map +0 -1
  71. package/dist/lib/fetcher.js +0 -84
  72. package/dist/lib/models/property.d.ts +0 -79
  73. package/dist/lib/models/property.d.ts.map +0 -1
  74. package/dist/lib/models/property.js +0 -134
  75. package/dist/lib/models/volunteerJob.d.ts +0 -398
  76. package/dist/lib/models/volunteerJob.d.ts.map +0 -1
  77. package/dist/lib/models/volunteerJob.js +0 -152
  78. package/dist/lib/severActions.d.ts +0 -3
  79. package/dist/lib/severActions.d.ts.map +0 -1
  80. package/dist/lib/severActions.js +0 -19
  81. package/dist/lib/socket.d.ts +0 -7
  82. package/dist/lib/socket.d.ts.map +0 -1
  83. package/dist/lib/socket.js +0 -22
  84. package/dist/lib/utils/socialMediaUrl.d.ts +0 -25
  85. package/dist/lib/utils/socialMediaUrl.d.ts.map +0 -1
  86. package/dist/lib/utils/socialMediaUrl.js +0 -97
@@ -1,127 +1,127 @@
1
- // atoms/userAtom.ts
2
- import CryptoJS from 'crypto-js';
3
- import { atom, getDefaultStore } from 'jotai';
4
- import { atomWithStorage } from 'jotai/utils';
5
- import { getCurrentUser } from './actions/actions';
6
- import { validateSession } from './actions/auth';
7
- const STORAGE_KEY = process.env.NEXT_PUBLIC_USER_KEY;
8
- const LOGIN_KEY = process.env.NEXT_PUBLIC_LOGIN_KEY;
9
- const SECRET_KEY = process.env.NEXT_PUBLIC_RACE;
10
- const EXPIRY_DAYS = 90;
11
- const EXPIRY_MS = EXPIRY_DAYS * 24 * 60 * 60 * 1000;
12
- const store = getDefaultStore();
13
- // 🔐 Encryption
14
- const encrypt = (data) => CryptoJS.AES.encrypt(JSON.stringify(data), SECRET_KEY).toString();
15
- const decrypt = (cipher) => {
16
- try {
17
- const bytes = CryptoJS.AES.decrypt(cipher, SECRET_KEY);
18
- const decrypted = bytes.toString(CryptoJS.enc.Utf8);
19
- return JSON.parse(decrypted);
20
- }
21
- catch (e) {
22
- console.warn('Decryption failed:', e);
23
- return null;
24
- }
25
- };
26
- // 🧠 Wrap expiry in localStorage
27
- const getWithExpiry = (key) => {
28
- if (typeof window === 'undefined')
29
- return null;
30
- try {
31
- const raw = localStorage.getItem(key);
32
- if (!raw)
33
- return null;
34
- const data = decrypt(raw);
35
- if (!data)
36
- return null;
37
- const { value, expiry } = data;
38
- if (Date.now() > expiry) {
39
- resetAuthState();
40
- return null;
41
- }
42
- return value;
43
- }
44
- catch (e) {
45
- console.warn('Invalid user data:', e);
46
- resetAuthState();
47
- return null;
48
- }
49
- };
50
- const setWithExpiry = (key, value) => {
51
- if (typeof window === 'undefined')
52
- return null;
53
- if (!value)
54
- return localStorage.removeItem(key);
55
- const expiry = Date.now() + EXPIRY_MS;
56
- const encrypted = encrypt({ value, expiry });
57
- localStorage.setItem(key, encrypted);
58
- };
59
- // Storage initialization atom - tracks if we've tried to load from storage
60
- export const storageInitializedAtom = atom(false);
61
- // 🍱 Base storage atom (persisted)
62
- export const userAtom = atomWithStorage(STORAGE_KEY, null, {
63
- getItem: (key) => getWithExpiry(key),
64
- setItem: setWithExpiry,
65
- removeItem: (key) => localStorage.removeItem(key),
66
- });
67
- export const isLoggedInAtom = atomWithStorage(LOGIN_KEY, false);
68
- // 🕒 Tracks if user is loading
69
- export const userLoadingAtom = atom((get) => {
70
- // The issue was here - we need to properly track initialization state
71
- const initialized = get(storageInitializedAtom);
72
- // We're loading if we haven't initialized storage yet
73
- return !initialized;
74
- });
75
- // Initialize storage atom effect
76
- export const initializeAuthSessionAtom = atom(null, async (get, set) => {
77
- // Only run in browser
78
- if (typeof window === 'undefined')
79
- return;
80
- // 1. Validate session (lightweight, no DB)
81
- const session = await validateSession();
82
- if (session.success) {
83
- console.log(session.message);
84
- }
85
- else {
86
- resetAuthState();
87
- set(storageInitializedAtom, true);
88
- return;
89
- }
90
- // 2. Try cache (localStorage)
91
- const userData = getWithExpiry(STORAGE_KEY);
92
- if (userData) {
93
- set(userAtom, userData);
94
- set(isLoggedInAtom, true);
95
- set(storageInitializedAtom, true);
96
- return;
97
- }
98
- // 3. If cache miss: fetch user from backend using session cookie
99
- try {
100
- // This endpoint can hit DB or another cache as needed
101
- const remoteUser = await getCurrentUser();
102
- if (remoteUser) {
103
- set(userAtom, remoteUser);
104
- set(isLoggedInAtom, true);
105
- setWithExpiry(STORAGE_KEY, remoteUser); // Write to local cache for next time
106
- }
107
- else {
108
- resetAuthState();
109
- }
110
- }
111
- catch {
112
- resetAuthState();
113
- }
114
- finally {
115
- set(storageInitializedAtom, true);
116
- }
117
- });
118
- export function resetAuthState() {
119
- if (typeof window === 'undefined') {
120
- console.warn('resetAuthState called on server — skipped');
121
- return;
122
- }
123
- localStorage.removeItem(STORAGE_KEY);
124
- localStorage.removeItem(LOGIN_KEY);
125
- store.set(userAtom, null);
126
- store.set(isLoggedInAtom, false);
127
- }
1
+ // atoms/userAtom.ts
2
+ import CryptoJS from 'crypto-js';
3
+ import { atom, getDefaultStore } from 'jotai';
4
+ import { atomWithStorage } from 'jotai/utils';
5
+ import { getCurrentUser } from './actions/actions';
6
+ import { validateSession } from './actions/auth';
7
+ const STORAGE_KEY = process.env.NEXT_PUBLIC_USER_KEY;
8
+ const LOGIN_KEY = process.env.NEXT_PUBLIC_LOGIN_KEY;
9
+ const SECRET_KEY = process.env.NEXT_PUBLIC_RACE;
10
+ const EXPIRY_DAYS = 90;
11
+ const EXPIRY_MS = EXPIRY_DAYS * 24 * 60 * 60 * 1000;
12
+ const store = getDefaultStore();
13
+ // 🔐 Encryption
14
+ const encrypt = (data) => CryptoJS.AES.encrypt(JSON.stringify(data), SECRET_KEY).toString();
15
+ const decrypt = (cipher) => {
16
+ try {
17
+ const bytes = CryptoJS.AES.decrypt(cipher, SECRET_KEY);
18
+ const decrypted = bytes.toString(CryptoJS.enc.Utf8);
19
+ return JSON.parse(decrypted);
20
+ }
21
+ catch (e) {
22
+ console.warn('Decryption failed:', e);
23
+ return null;
24
+ }
25
+ };
26
+ // 🧠 Wrap expiry in localStorage
27
+ const getWithExpiry = (key) => {
28
+ if (typeof window === 'undefined')
29
+ return null;
30
+ try {
31
+ const raw = localStorage.getItem(key);
32
+ if (!raw)
33
+ return null;
34
+ const data = decrypt(raw);
35
+ if (!data)
36
+ return null;
37
+ const { value, expiry } = data;
38
+ if (Date.now() > expiry) {
39
+ resetAuthState();
40
+ return null;
41
+ }
42
+ return value;
43
+ }
44
+ catch (e) {
45
+ console.warn('Invalid user data:', e);
46
+ resetAuthState();
47
+ return null;
48
+ }
49
+ };
50
+ const setWithExpiry = (key, value) => {
51
+ if (typeof window === 'undefined')
52
+ return null;
53
+ if (!value)
54
+ return localStorage.removeItem(key);
55
+ const expiry = Date.now() + EXPIRY_MS;
56
+ const encrypted = encrypt({ value, expiry });
57
+ localStorage.setItem(key, encrypted);
58
+ };
59
+ // Storage initialization atom - tracks if we've tried to load from storage
60
+ export const storageInitializedAtom = atom(false);
61
+ // 🍱 Base storage atom (persisted)
62
+ export const userAtom = atomWithStorage(STORAGE_KEY, null, {
63
+ getItem: (key) => getWithExpiry(key),
64
+ setItem: setWithExpiry,
65
+ removeItem: (key) => localStorage.removeItem(key),
66
+ });
67
+ export const isLoggedInAtom = atomWithStorage(LOGIN_KEY, false);
68
+ // 🕒 Tracks if user is loading
69
+ export const userLoadingAtom = atom((get) => {
70
+ // The issue was here - we need to properly track initialization state
71
+ const initialized = get(storageInitializedAtom);
72
+ // We're loading if we haven't initialized storage yet
73
+ return !initialized;
74
+ });
75
+ // Initialize storage atom effect
76
+ export const initializeAuthSessionAtom = atom(null, async (get, set) => {
77
+ // Only run in browser
78
+ if (typeof window === 'undefined')
79
+ return;
80
+ // 1. Validate session (lightweight, no DB)
81
+ const session = await validateSession();
82
+ if (session.success) {
83
+ console.log(session.message);
84
+ }
85
+ else {
86
+ resetAuthState();
87
+ set(storageInitializedAtom, true);
88
+ return;
89
+ }
90
+ // 2. Try cache (localStorage)
91
+ const userData = getWithExpiry(STORAGE_KEY);
92
+ if (userData) {
93
+ set(userAtom, userData);
94
+ set(isLoggedInAtom, true);
95
+ set(storageInitializedAtom, true);
96
+ return;
97
+ }
98
+ // 3. If cache miss: fetch user from backend using session cookie
99
+ try {
100
+ // This endpoint can hit DB or another cache as needed
101
+ const remoteUser = await getCurrentUser();
102
+ if (remoteUser) {
103
+ set(userAtom, remoteUser);
104
+ set(isLoggedInAtom, true);
105
+ setWithExpiry(STORAGE_KEY, remoteUser); // Write to local cache for next time
106
+ }
107
+ else {
108
+ resetAuthState();
109
+ }
110
+ }
111
+ catch {
112
+ resetAuthState();
113
+ }
114
+ finally {
115
+ set(storageInitializedAtom, true);
116
+ }
117
+ });
118
+ export function resetAuthState() {
119
+ if (typeof window === 'undefined') {
120
+ console.warn('resetAuthState called on server — skipped');
121
+ return;
122
+ }
123
+ localStorage.removeItem(STORAGE_KEY);
124
+ localStorage.removeItem(LOGIN_KEY);
125
+ store.set(userAtom, null);
126
+ store.set(isLoggedInAtom, false);
127
+ }
package/package.json CHANGED
@@ -1,6 +1,11 @@
1
1
  {
2
2
  "name": "@myrjfa/state",
3
- "version": "1.1.1",
3
+ "version": "2.0.0",
4
+ "type": "module",
5
+ "exports": {
6
+ ".": "./dist/index.js",
7
+ "./*": "./*.js"
8
+ },
4
9
  "description": "Shared state management for myrjfa apps",
5
10
  "main": "dist/index.js",
6
11
  "types": "dist/index.d.ts",
@@ -1,77 +0,0 @@
1
- import type { Property, PropertyStatus, PropertyPermission } from "../models/property";
2
- export declare function createProperty(formData: FormData): Promise<{
3
- success: boolean;
4
- property?: Property;
5
- message?: string;
6
- error?: string;
7
- }>;
8
- export declare function getMyProperties(): Promise<{
9
- success: boolean;
10
- properties?: Property[];
11
- error?: string;
12
- }>;
13
- export declare function getPropertyById(propertyId: string): Promise<{
14
- success: boolean;
15
- property?: Property;
16
- error?: string;
17
- }>;
18
- export declare function updateProperty(propertyId: string, formData: FormData | Record<string, any>): Promise<{
19
- success: boolean;
20
- property?: Property;
21
- message?: string;
22
- error?: string;
23
- }>;
24
- export declare function deleteProperty(propertyId: string): Promise<{
25
- success: boolean;
26
- message?: string;
27
- error?: string;
28
- }>;
29
- /** Host submits for review (draft/rejected → pending_review) */
30
- export declare function submitPropertyForReview(propertyId: string): Promise<{
31
- success: boolean;
32
- message?: string;
33
- error?: string;
34
- }>;
35
- /** Host withdraws a pending submission back to draft */
36
- export declare function withdrawPropertySubmission(propertyId: string): Promise<{
37
- success: boolean;
38
- message?: string;
39
- error?: string;
40
- }>;
41
- /** Host deactivates an active property */
42
- export declare function deactivateProperty(propertyId: string): Promise<{
43
- success: boolean;
44
- message?: string;
45
- error?: string;
46
- }>;
47
- /** Admin-only: approve, reject, or suspend a property */
48
- export declare function adminUpdatePropertyStatus(propertyId: string, status: PropertyStatus, adminNote?: string): Promise<{
49
- success: boolean;
50
- message?: string;
51
- error?: string;
52
- }>;
53
- /** Admin: get all pending_review properties */
54
- export declare function getPendingProperties(): Promise<{
55
- success: boolean;
56
- properties?: Property[];
57
- error?: string;
58
- }>;
59
- export declare function addPropertyManager(propertyId: string, username: string, managerRole: string, permissions: PropertyPermission[]): Promise<{
60
- success: boolean;
61
- message?: string;
62
- error?: string;
63
- }>;
64
- export declare function updatePropertyManager(propertyId: string, managerId: string, updates: {
65
- managerRole?: string;
66
- permissions?: PropertyPermission[];
67
- }): Promise<{
68
- success: boolean;
69
- message?: string;
70
- error?: string;
71
- }>;
72
- export declare function removePropertyManager(propertyId: string, managerId: string): Promise<{
73
- success: boolean;
74
- message?: string;
75
- error?: string;
76
- }>;
77
- //# sourceMappingURL=property.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"property.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/property.ts"],"names":[],"mappings":"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"}
@@ -1,133 +0,0 @@
1
- import { del, get, patch, post } from "./fetcher";
2
- // ─── CRUD ──────────────────────────────────────────────────────────────────
3
- export async function createProperty(formData) {
4
- try {
5
- const data = await post(`/properties`, formData);
6
- return { success: true, property: data?.data?.property, message: data?.message };
7
- }
8
- catch (error) {
9
- return { success: false, error: error?.message || "Failed to create property" };
10
- }
11
- }
12
- export async function getMyProperties() {
13
- try {
14
- const data = await get(`/properties`);
15
- return { success: true, properties: data?.data?.properties ?? [] };
16
- }
17
- catch (error) {
18
- return { success: false, error: error?.message || "Failed to fetch properties" };
19
- }
20
- }
21
- export async function getPropertyById(propertyId) {
22
- try {
23
- const data = await get(`/properties/${propertyId}`);
24
- return { success: true, property: data?.data?.property };
25
- }
26
- catch (error) {
27
- return { success: false, error: error?.message || "Failed to fetch property" };
28
- }
29
- }
30
- export async function updateProperty(propertyId, formData) {
31
- try {
32
- const data = await patch(`/properties/${propertyId}`, formData);
33
- return { success: true, property: data?.data?.property, message: data?.message };
34
- }
35
- catch (error) {
36
- return { success: false, error: error?.message || "Failed to update property" };
37
- }
38
- }
39
- export async function deleteProperty(propertyId) {
40
- try {
41
- const data = await del(`/properties/${propertyId}`);
42
- return { success: true, message: data?.message };
43
- }
44
- catch (error) {
45
- return { success: false, error: error?.message || "Failed to delete property" };
46
- }
47
- }
48
- // ─── Status lifecycle ──────────────────────────────────────────────────────
49
- /** Host submits for review (draft/rejected → pending_review) */
50
- export async function submitPropertyForReview(propertyId) {
51
- try {
52
- const data = await patch(`/properties/${propertyId}`, { status: "pending_review" });
53
- return { success: true, message: data?.message };
54
- }
55
- catch (error) {
56
- return { success: false, error: error?.message || "Failed to submit property for review" };
57
- }
58
- }
59
- /** Host withdraws a pending submission back to draft */
60
- export async function withdrawPropertySubmission(propertyId) {
61
- try {
62
- const data = await patch(`/properties/${propertyId}`, { status: "draft" });
63
- return { success: true, message: data?.message };
64
- }
65
- catch (error) {
66
- return { success: false, error: error?.message || "Failed to withdraw submission" };
67
- }
68
- }
69
- /** Host deactivates an active property */
70
- export async function deactivateProperty(propertyId) {
71
- try {
72
- const data = await patch(`/properties/${propertyId}`, { status: "inactive" });
73
- return { success: true, message: data?.message };
74
- }
75
- catch (error) {
76
- return { success: false, error: error?.message || "Failed to deactivate property" };
77
- }
78
- }
79
- /** Admin-only: approve, reject, or suspend a property */
80
- export async function adminUpdatePropertyStatus(propertyId, status, adminNote) {
81
- try {
82
- const data = await patch(`/admin/properties/${propertyId}/status`, {
83
- status,
84
- adminNote,
85
- });
86
- return { success: true, message: data?.message };
87
- }
88
- catch (error) {
89
- return { success: false, error: error?.message || "Failed to update property status" };
90
- }
91
- }
92
- /** Admin: get all pending_review properties */
93
- export async function getPendingProperties() {
94
- try {
95
- const data = await get(`/admin/properties/pending`);
96
- return { success: true, properties: data?.data?.properties ?? [] };
97
- }
98
- catch (error) {
99
- return { success: false, error: error?.message || "Failed to fetch pending properties" };
100
- }
101
- }
102
- // ─── Managers ──────────────────────────────────────────────────────────────
103
- export async function addPropertyManager(propertyId, username, managerRole, permissions) {
104
- try {
105
- const data = await post(`/properties/${propertyId}/managers`, {
106
- username,
107
- managerRole,
108
- permissions,
109
- });
110
- return { success: true, message: data?.message };
111
- }
112
- catch (error) {
113
- return { success: false, error: error?.message || "Failed to add manager" };
114
- }
115
- }
116
- export async function updatePropertyManager(propertyId, managerId, updates) {
117
- try {
118
- const data = await patch(`/properties/${propertyId}/managers/${managerId}`, updates);
119
- return { success: true, message: data?.message };
120
- }
121
- catch (error) {
122
- return { success: false, error: error?.message || "Failed to update manager" };
123
- }
124
- }
125
- export async function removePropertyManager(propertyId, managerId) {
126
- try {
127
- const data = await del(`/properties/${propertyId}/managers/${managerId}`);
128
- return { success: true, message: data?.message };
129
- }
130
- catch (error) {
131
- return { success: false, error: error?.message || "Failed to remove manager" };
132
- }
133
- }
@@ -1,141 +0,0 @@
1
- import { Review, reviewTargetType, reviewType } from "./models/review";
2
- import { tileType } from "./models/tile";
3
- import { User } from "./models/user";
4
- export declare function getCurrentUser(): Promise<User | null>;
5
- export declare function userDetails(query: string, role: "user" | "host" | "admin"): Promise<{
6
- success: boolean;
7
- user: User | null;
8
- message?: string;
9
- status?: string;
10
- error?: string;
11
- }>;
12
- export declare function subscribeToNewsLetter(email: string): Promise<{
13
- success: boolean;
14
- message?: string;
15
- error?: string;
16
- }>;
17
- export declare function toggleUserWishlist(slug: string, tileType: tileType): Promise<{
18
- success: boolean;
19
- message?: string;
20
- error?: string;
21
- wishlist: string[];
22
- }>;
23
- export declare function subscribeToCareersPage(email: string): Promise<{
24
- success: boolean;
25
- message?: string;
26
- error?: string;
27
- }>;
28
- export declare function contactUs(email: string, name: string, subject: string, message: string): Promise<{
29
- success: boolean;
30
- message?: string;
31
- error?: string;
32
- }>;
33
- export declare function saveUserResume(file: File): Promise<{
34
- success: boolean;
35
- message?: string;
36
- error?: string;
37
- user: User | null;
38
- }>;
39
- export declare function getUserContact(username: string, role: string): Promise<{
40
- success: boolean;
41
- message?: string;
42
- error?: string;
43
- details: {
44
- name: string;
45
- email: string;
46
- phoneNumber: string;
47
- } | null;
48
- }>;
49
- export declare function getReviewsById(id: string, type: reviewTargetType): Promise<{
50
- success: boolean;
51
- reviews: Review[];
52
- message?: string;
53
- error?: string;
54
- }>;
55
- export declare function getRatingById(id: string[], type: reviewTargetType): Promise<{
56
- success: boolean;
57
- message?: string;
58
- error?: string;
59
- ratings: {
60
- slug: string;
61
- rating: number;
62
- ratingCount: number;
63
- reviewCount: number;
64
- }[];
65
- }>;
66
- export declare function addReview(id: string, type: reviewTargetType, formData: reviewType): Promise<{
67
- success: boolean;
68
- review: Review | null;
69
- message?: string;
70
- error?: string;
71
- }>;
72
- export declare function editReview(id: string, formData: reviewType): Promise<{
73
- success: boolean;
74
- review: Review | null;
75
- message?: string;
76
- error?: string;
77
- }>;
78
- export declare function deleteReview(id: string): Promise<{
79
- success: boolean;
80
- message?: string;
81
- error?: string;
82
- }>;
83
- export declare function getAllNotifications(): Promise<{
84
- success: boolean;
85
- message: string;
86
- notifs: {
87
- _id: string;
88
- userId: string;
89
- message: string;
90
- timestamp: Date;
91
- read: boolean;
92
- url?: string | undefined;
93
- }[];
94
- unreadCount: number;
95
- error?: undefined;
96
- } | {
97
- success: boolean;
98
- error: any;
99
- notifs: never[];
100
- unreadCount: number;
101
- message?: undefined;
102
- }>;
103
- export declare function getNotifications(limit: number): Promise<{
104
- success: boolean;
105
- message: string;
106
- notifs: {
107
- _id: string;
108
- userId: string;
109
- message: string;
110
- timestamp: Date;
111
- read: boolean;
112
- url?: string | undefined;
113
- }[];
114
- unreadCount: number;
115
- error?: undefined;
116
- } | {
117
- success: boolean;
118
- error: any;
119
- notifs: never[];
120
- unreadCount: number;
121
- message?: undefined;
122
- }>;
123
- export declare function toggleNotification(id: string, read: boolean): Promise<{
124
- success: boolean;
125
- message: string;
126
- error?: undefined;
127
- } | {
128
- success: boolean;
129
- error: any;
130
- message?: undefined;
131
- }>;
132
- export declare function toggleAllNotification(read: boolean): Promise<{
133
- success: boolean;
134
- message: string;
135
- error?: undefined;
136
- } | {
137
- success: boolean;
138
- error: any;
139
- message?: undefined;
140
- }>;
141
- //# sourceMappingURL=actions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/lib/actions.ts"],"names":[],"mappings":"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"}