@myrjfa/state 2.2.0 → 2.3.2
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/auth.d.ts +116 -7
- package/dist/lib/actions/auth.d.ts.map +1 -1
- package/dist/lib/actions/auth.js +59 -10
- 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/fetcher.d.ts.map +1 -1
- package/dist/lib/actions/fetcher.js +26 -9
- 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.d.ts +26 -26
- package/dist/lib/actions.d.ts.map +1 -1
- package/dist/lib/actions.js +17 -12
- 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 +77 -12
- package/dist/lib/authSessionPolicy.d.ts +44 -0
- package/dist/lib/authSessionPolicy.d.ts.map +1 -0
- package/dist/lib/authSessionPolicy.js +61 -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/discountActions.d.ts +43 -0
- package/dist/lib/discountActions.d.ts.map +1 -0
- package/dist/lib/discountActions.js +69 -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 +108 -0
- package/dist/lib/models/authorization.d.ts.map +1 -0
- package/dist/lib/models/authorization.js +266 -0
- package/dist/lib/models/blog.d.ts +6 -6
- 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 +589 -138
- package/dist/lib/models/discount.d.ts.map +1 -1
- package/dist/lib/models/discount.js +118 -96
- 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 +6 -6
- 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 +77 -216
- package/dist/lib/models/package.d.ts.map +1 -1
- package/dist/lib/models/package.js +0 -2
- package/dist/lib/models/portfolio.d.ts +2 -2
- package/dist/lib/models/pricing.d.ts +12 -12
- 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/review.d.ts +2 -2
- package/dist/lib/models/stay.d.ts +17 -17
- 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 +211 -310
- 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 +32 -8
- 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/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 +178 -42
- package/dist/lib/userAtom.d.ts.map +1 -1
- package/dist/lib/userAtom.js +80 -52
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface SessionFailureLike {
|
|
2
|
+
statusCode?: number;
|
|
3
|
+
}
|
|
4
|
+
export interface RevisionedSessionFailure extends SessionFailureLike {
|
|
5
|
+
authRevision: number;
|
|
6
|
+
}
|
|
7
|
+
export interface SessionValidationLike {
|
|
8
|
+
statusCode?: number;
|
|
9
|
+
success?: boolean;
|
|
10
|
+
identity?: SessionIdentity | null;
|
|
11
|
+
}
|
|
12
|
+
export interface SessionIdentity {
|
|
13
|
+
actorId: string;
|
|
14
|
+
accountType: "user" | "host" | "staff";
|
|
15
|
+
role: string;
|
|
16
|
+
}
|
|
17
|
+
export interface PersistedIdentityLike {
|
|
18
|
+
_id?: string;
|
|
19
|
+
role?: string;
|
|
20
|
+
accountType?: "user" | "host" | "staff";
|
|
21
|
+
baseAccountType?: "user" | "host";
|
|
22
|
+
staffProfileId?: string | null;
|
|
23
|
+
}
|
|
24
|
+
export type AuthSessionStatus = "initializing" | "clearing" | "signed-out" | "validating" | "authenticated";
|
|
25
|
+
export declare function isAuthSessionPending(status: AuthSessionStatus): boolean;
|
|
26
|
+
export declare function canFinishAuthCleanup(expectedRevision: number, currentRevision: number): boolean;
|
|
27
|
+
export declare function clearCacheMissSessionBoundary({ cleanupRevision, getCurrentRevision, clearSession, }: {
|
|
28
|
+
cleanupRevision: number;
|
|
29
|
+
getCurrentRevision: () => number;
|
|
30
|
+
clearSession: () => Promise<void>;
|
|
31
|
+
}): Promise<boolean>;
|
|
32
|
+
export declare function bindSessionFailureToRevision(error: unknown, authRevision: number): RevisionedSessionFailure;
|
|
33
|
+
export declare function shouldResetAuthStateForQuery({ session, sessionRevision, error, currentRevision, }: {
|
|
34
|
+
session?: SessionValidationLike | null;
|
|
35
|
+
sessionRevision?: number;
|
|
36
|
+
error?: RevisionedSessionFailure | null;
|
|
37
|
+
currentRevision: number;
|
|
38
|
+
}): boolean;
|
|
39
|
+
export declare function getPersistedAccountType(user: PersistedIdentityLike): "user" | "host" | "staff" | null;
|
|
40
|
+
export declare function normalizeRefreshFailureStatus(statusCode: number): number;
|
|
41
|
+
export declare function isExpectedSignedOutError(error: SessionFailureLike | null | undefined): boolean;
|
|
42
|
+
export declare function shouldResetAuthState(session: SessionValidationLike | null | undefined, error: SessionFailureLike | null | undefined): boolean;
|
|
43
|
+
export declare function sessionIdentityMatchesPersistedUser(identity: SessionIdentity | null | undefined, user: PersistedIdentityLike | null | undefined): boolean;
|
|
44
|
+
//# sourceMappingURL=authSessionPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authSessionPolicy.d.ts","sourceRoot":"","sources":["../../src/lib/authSessionPolicy.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,wBAAyB,SAAQ,kBAAkB;IAChE,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACxC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,MAAM,iBAAiB,GACvB,cAAc,GACd,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,eAAe,CAAC;AAEtB,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAIvE;AAED,wBAAgB,oBAAoB,CAChC,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM,GACxB,OAAO,CAET;AAED,wBAAsB,6BAA6B,CAAC,EAChD,eAAe,EACf,kBAAkB,EAClB,YAAY,GACf,EAAE;IACC,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,MAAM,CAAC;IACjC,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC,GAAG,OAAO,CAAC,OAAO,CAAC,CAInB;AAED,wBAAgB,4BAA4B,CACxC,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,MAAM,GACrB,wBAAwB,CAO1B;AAED,wBAAgB,4BAA4B,CAAC,EACzC,OAAO,EACP,eAAe,EACf,KAAK,EACL,eAAe,GAClB,EAAE;IACC,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC;CAC3B,GAAG,OAAO,CAIV;AAED,wBAAgB,uBAAuB,CACnC,IAAI,EAAE,qBAAqB,GAC5B,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAMlC;AAED,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAExE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE9F;AAED,wBAAgB,oBAAoB,CAChC,OAAO,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,EACjD,KAAK,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,GAC7C,OAAO,CAET;AAED,wBAAgB,mCAAmC,CAC/C,QAAQ,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,EAC5C,IAAI,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,GAC/C,OAAO,CAcT"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export function isAuthSessionPending(status) {
|
|
2
|
+
return status === "initializing"
|
|
3
|
+
|| status === "validating"
|
|
4
|
+
|| status === "clearing";
|
|
5
|
+
}
|
|
6
|
+
export function canFinishAuthCleanup(expectedRevision, currentRevision) {
|
|
7
|
+
return expectedRevision === currentRevision;
|
|
8
|
+
}
|
|
9
|
+
export async function clearCacheMissSessionBoundary({ cleanupRevision, getCurrentRevision, clearSession, }) {
|
|
10
|
+
if (getCurrentRevision() !== cleanupRevision)
|
|
11
|
+
return false;
|
|
12
|
+
await clearSession();
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
export function bindSessionFailureToRevision(error, authRevision) {
|
|
16
|
+
return {
|
|
17
|
+
authRevision,
|
|
18
|
+
statusCode: typeof error === "object" && error !== null
|
|
19
|
+
? error.statusCode
|
|
20
|
+
: undefined,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export function shouldResetAuthStateForQuery({ session, sessionRevision, error, currentRevision, }) {
|
|
24
|
+
const owningRevision = sessionRevision ?? error?.authRevision;
|
|
25
|
+
if (owningRevision !== currentRevision)
|
|
26
|
+
return false;
|
|
27
|
+
return shouldResetAuthState(session, error);
|
|
28
|
+
}
|
|
29
|
+
export function getPersistedAccountType(user) {
|
|
30
|
+
if (user.accountType)
|
|
31
|
+
return user.accountType;
|
|
32
|
+
if (user.staffProfileId)
|
|
33
|
+
return "staff";
|
|
34
|
+
if (user.baseAccountType)
|
|
35
|
+
return user.baseAccountType;
|
|
36
|
+
if (user.role === "user" || user.role === "host")
|
|
37
|
+
return user.role;
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
export function normalizeRefreshFailureStatus(statusCode) {
|
|
41
|
+
return statusCode >= 400 && statusCode < 500 ? 401 : statusCode;
|
|
42
|
+
}
|
|
43
|
+
export function isExpectedSignedOutError(error) {
|
|
44
|
+
return error?.statusCode === 401;
|
|
45
|
+
}
|
|
46
|
+
export function shouldResetAuthState(session, error) {
|
|
47
|
+
return session?.statusCode === 401 || isExpectedSignedOutError(error);
|
|
48
|
+
}
|
|
49
|
+
export function sessionIdentityMatchesPersistedUser(identity, user) {
|
|
50
|
+
if (!identity || !user)
|
|
51
|
+
return false;
|
|
52
|
+
const persistedAccountType = getPersistedAccountType(user);
|
|
53
|
+
if (!persistedAccountType)
|
|
54
|
+
return false;
|
|
55
|
+
const persistedActorId = persistedAccountType === "staff"
|
|
56
|
+
? user.staffProfileId
|
|
57
|
+
: user._id;
|
|
58
|
+
return Boolean(persistedActorId
|
|
59
|
+
&& String(persistedActorId) === String(identity.actorId)
|
|
60
|
+
&& persistedAccountType === identity.accountType);
|
|
61
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { AssignableAccountDto, AuthorizationPermissionDto, AuthorizationRoleDto, StaffProfileDto, StaffRoleAssignmentDto } from "./models/authorization";
|
|
2
|
+
export declare function getAuthorizationRoles(): Promise<{
|
|
3
|
+
success: boolean;
|
|
4
|
+
data: AuthorizationRoleDto[];
|
|
5
|
+
message: string | undefined;
|
|
6
|
+
error?: undefined;
|
|
7
|
+
} | {
|
|
8
|
+
success: boolean;
|
|
9
|
+
error: any;
|
|
10
|
+
data?: undefined;
|
|
11
|
+
message?: undefined;
|
|
12
|
+
}>;
|
|
13
|
+
export declare function getAuthorizationPermissions(): Promise<{
|
|
14
|
+
success: boolean;
|
|
15
|
+
data: AuthorizationPermissionDto[];
|
|
16
|
+
message: string | undefined;
|
|
17
|
+
error?: undefined;
|
|
18
|
+
} | {
|
|
19
|
+
success: boolean;
|
|
20
|
+
error: any;
|
|
21
|
+
data?: undefined;
|
|
22
|
+
message?: undefined;
|
|
23
|
+
}>;
|
|
24
|
+
export declare function getAuthorizationStaffProfiles(): Promise<{
|
|
25
|
+
success: boolean;
|
|
26
|
+
data: StaffProfileDto[];
|
|
27
|
+
message: string | undefined;
|
|
28
|
+
error?: undefined;
|
|
29
|
+
} | {
|
|
30
|
+
success: boolean;
|
|
31
|
+
error: any;
|
|
32
|
+
data: StaffProfileDto[];
|
|
33
|
+
message?: undefined;
|
|
34
|
+
}>;
|
|
35
|
+
export declare function searchAssignableAuthorizationAccounts(input: {
|
|
36
|
+
baseAccountType: "user" | "host";
|
|
37
|
+
query?: string;
|
|
38
|
+
limit?: number;
|
|
39
|
+
}): Promise<{
|
|
40
|
+
success: boolean;
|
|
41
|
+
data: AssignableAccountDto[];
|
|
42
|
+
message: string | undefined;
|
|
43
|
+
error?: undefined;
|
|
44
|
+
} | {
|
|
45
|
+
success: boolean;
|
|
46
|
+
error: any;
|
|
47
|
+
data: AssignableAccountDto[];
|
|
48
|
+
message?: undefined;
|
|
49
|
+
}>;
|
|
50
|
+
export declare function updateRolePermissions(roleSlug: string, permissions: string[]): Promise<{
|
|
51
|
+
success: boolean;
|
|
52
|
+
data: AuthorizationRoleDto;
|
|
53
|
+
message: string | undefined;
|
|
54
|
+
error?: undefined;
|
|
55
|
+
} | {
|
|
56
|
+
success: boolean;
|
|
57
|
+
error: any;
|
|
58
|
+
data?: undefined;
|
|
59
|
+
message?: undefined;
|
|
60
|
+
}>;
|
|
61
|
+
export declare function assignStaffRole(input: {
|
|
62
|
+
baseAccountType: "user" | "host";
|
|
63
|
+
baseAccountId: string;
|
|
64
|
+
staffRole: string;
|
|
65
|
+
staffProfileId?: string;
|
|
66
|
+
}): Promise<{
|
|
67
|
+
success: boolean;
|
|
68
|
+
data: StaffRoleAssignmentDto;
|
|
69
|
+
message: string | undefined;
|
|
70
|
+
error?: undefined;
|
|
71
|
+
} | {
|
|
72
|
+
success: boolean;
|
|
73
|
+
error: any;
|
|
74
|
+
data?: undefined;
|
|
75
|
+
message?: undefined;
|
|
76
|
+
}>;
|
|
77
|
+
//# sourceMappingURL=authorizationActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorizationActions.d.ts","sourceRoot":"","sources":["../../src/lib/authorizationActions.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACvB,MAAM,wBAAwB,CAAC;AAOhC,wBAAsB,qBAAqB;;;;;;;;;;GAO1C;AAED,wBAAsB,2BAA2B;;;;;;;;;;GAOhD;AAED,wBAAsB,6BAA6B;;;;;;;;UAOY,eAAe,EAAE;;GAE/E;AAED,wBAAsB,qCAAqC,CAAC,KAAK,EAAE;IACjE,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;UAY8D,oBAAoB,EAAE;;GAEpF;AAED,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE;;;;;;;;;;GAUlF;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE;IAC3C,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;;;;;;;;;;GAUA"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { get, patch } from "./actions/fetcher";
|
|
2
|
+
export async function getAuthorizationRoles() {
|
|
3
|
+
try {
|
|
4
|
+
const response = await get("/authorization/roles");
|
|
5
|
+
return { success: true, data: response.data.roles, message: response.message };
|
|
6
|
+
}
|
|
7
|
+
catch (error) {
|
|
8
|
+
return { success: false, error: error.message };
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export async function getAuthorizationPermissions() {
|
|
12
|
+
try {
|
|
13
|
+
const response = await get("/authorization/permissions");
|
|
14
|
+
return { success: true, data: response.data.permissions, message: response.message };
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
return { success: false, error: error.message };
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export async function getAuthorizationStaffProfiles() {
|
|
21
|
+
try {
|
|
22
|
+
const response = await get("/authorization/staff-profiles");
|
|
23
|
+
return { success: true, data: response.data.staffProfiles, message: response.message };
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
return { success: false, error: error.message, data: [] };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export async function searchAssignableAuthorizationAccounts(input) {
|
|
30
|
+
try {
|
|
31
|
+
const params = new URLSearchParams({
|
|
32
|
+
baseAccountType: input.baseAccountType,
|
|
33
|
+
limit: String(input.limit ?? 20),
|
|
34
|
+
});
|
|
35
|
+
if (input.query)
|
|
36
|
+
params.set("query", input.query);
|
|
37
|
+
const response = await get(`/authorization/accounts?${params.toString()}`);
|
|
38
|
+
return { success: true, data: response.data.accounts, message: response.message };
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
return { success: false, error: error.message, data: [] };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export async function updateRolePermissions(roleSlug, permissions) {
|
|
45
|
+
try {
|
|
46
|
+
const response = await patch(`/authorization/roles/${encodeURIComponent(roleSlug)}/permissions`, { permissions });
|
|
47
|
+
return { success: true, data: response.data.role, message: response.message };
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
return { success: false, error: error.message };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export async function assignStaffRole(input) {
|
|
54
|
+
try {
|
|
55
|
+
const response = await patch("/authorization/staff-role", input);
|
|
56
|
+
return { success: true, data: response.data.assignment, message: response.message };
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
return { success: false, error: error.message };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -1,21 +1,38 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { Socket } from "socket.io-client";
|
|
3
|
-
import type
|
|
3
|
+
import { type ChatActorModel, type Conversation, type Message, type Poll } from "../models/chat";
|
|
4
4
|
import type { Notif } from "../models/notifications";
|
|
5
|
+
export interface ConversationListParams {
|
|
6
|
+
filter?: "all" | "unread" | "hosts" | "groups" | "favourites" | "archived";
|
|
7
|
+
q?: string;
|
|
8
|
+
before?: string;
|
|
9
|
+
limit?: number;
|
|
10
|
+
}
|
|
5
11
|
interface ChatContextType {
|
|
6
12
|
socket: Socket | null;
|
|
7
13
|
isConnected: boolean;
|
|
8
14
|
conversations: Conversation[];
|
|
9
15
|
activeConversation: Conversation | null;
|
|
10
|
-
setActiveConversation: (
|
|
16
|
+
setActiveConversation: (conversation: Conversation | null) => void;
|
|
11
17
|
messages: Message[];
|
|
12
18
|
setMessages: React.Dispatch<React.SetStateAction<Message[]>>;
|
|
13
19
|
typingUsers: Map<string, string[]>;
|
|
14
20
|
onlineUsers: Set<string>;
|
|
15
|
-
refreshConversations: () => Promise<void>;
|
|
16
|
-
sendMessage: (conversationId: string, text: string, files?: File[], replyTo?: string
|
|
21
|
+
refreshConversations: (params?: ConversationListParams) => Promise<void>;
|
|
22
|
+
sendMessage: (conversationId: string, text: string, files?: File[], replyTo?: string, options?: {
|
|
23
|
+
mentions?: Array<{
|
|
24
|
+
actorId: string;
|
|
25
|
+
actorModel: ChatActorModel;
|
|
26
|
+
}>;
|
|
27
|
+
type?: "text" | "media" | "announcement";
|
|
28
|
+
}) => Promise<void>;
|
|
17
29
|
createPoll: (conversationId: string, question: string, options: string[], allowMultiple: boolean) => void;
|
|
18
|
-
votePoll: (pollId: string, optionIndex: number) =>
|
|
30
|
+
votePoll: (pollId: string, optionIndex: number) => Promise<Poll | null>;
|
|
31
|
+
updatePoll: (pollId: string, data: {
|
|
32
|
+
question: string;
|
|
33
|
+
options: string[];
|
|
34
|
+
allowMultiple: boolean;
|
|
35
|
+
}) => Promise<Poll | null>;
|
|
19
36
|
editMessage: (messageId: string, text: string) => void;
|
|
20
37
|
toggleMessageReaction: (messageId: string, reaction?: string) => void;
|
|
21
38
|
deleteMessage: (messageId: string) => void;
|
|
@@ -23,8 +40,10 @@ interface ChatContextType {
|
|
|
23
40
|
unreadNotificationCount: number;
|
|
24
41
|
notifications: Notif[];
|
|
25
42
|
clearNotifications: () => void;
|
|
43
|
+
eventRevision: number;
|
|
44
|
+
paymentRevision: number;
|
|
26
45
|
}
|
|
27
|
-
export declare
|
|
46
|
+
export declare const useChatContext: () => ChatContextType;
|
|
28
47
|
export declare function ChatProvider({ children }: {
|
|
29
48
|
children: React.ReactNode;
|
|
30
49
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatContext.d.ts","sourceRoot":"","sources":["../../../src/lib/context/ChatContext.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"ChatContext.d.ts","sourceRoot":"","sources":["../../../src/lib/context/ChatContext.tsx"],"names":[],"mappings":"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"}
|