sea-react-components 1.3.39 → 1.3.41
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/dist/HOC/can-access-application/index.d.ts +3 -2
- package/dist/HOC/can-access-application/index.d.ts.map +1 -1
- package/dist/HOC/can-access-application/index.js +2 -2
- package/dist/HOC/with-authorization/index.d.ts +3 -2
- package/dist/HOC/with-authorization/index.d.ts.map +1 -1
- package/dist/HOC/with-authorization/index.js +5 -5
- package/dist/components/comments-container/comment-form/index.d.ts +2 -1
- package/dist/components/comments-container/comment-form/index.d.ts.map +1 -1
- package/dist/components/comments-container/comment-form/index.js +5 -3
- package/dist/components/comments-container/index.d.ts +2 -1
- package/dist/components/comments-container/index.d.ts.map +1 -1
- package/dist/components/comments-container/index.js +11 -9
- package/dist/components/comments-container/use-comments/index.d.ts +2 -1
- package/dist/components/comments-container/use-comments/index.d.ts.map +1 -1
- package/dist/components/comments-container/use-comments/index.js +3 -3
- package/dist/components/firebase-token-handler/index.d.ts +2 -1
- package/dist/components/firebase-token-handler/index.d.ts.map +1 -1
- package/dist/components/firebase-token-handler/index.js +18 -17
- package/dist/components/log-activities-container/index.d.ts +2 -1
- package/dist/components/log-activities-container/index.d.ts.map +1 -1
- package/dist/components/log-activities-container/index.js +2 -2
- package/dist/components/log-activities-container/log-activities-list/index.d.ts +2 -1
- package/dist/components/log-activities-container/log-activities-list/index.d.ts.map +1 -1
- package/dist/components/log-activities-container/log-activities-list/index.js +4 -2
- package/dist/components/log-activities-container/use-log-activities/index.d.ts +2 -1
- package/dist/components/log-activities-container/use-log-activities/index.d.ts.map +1 -1
- package/dist/components/log-activities-container/use-log-activities/index.js +5 -3
- package/dist/components/not-authorized/index.d.ts +5 -1
- package/dist/components/not-authorized/index.d.ts.map +1 -1
- package/dist/components/not-authorized/index.js +27 -2
- package/dist/components/notifications-menu/index.d.ts +2 -1
- package/dist/components/notifications-menu/index.d.ts.map +1 -1
- package/dist/components/notifications-menu/index.js +48 -27
- package/dist/components/skeleton/index.d.ts +4 -2
- package/dist/components/skeleton/index.d.ts.map +1 -1
- package/dist/components/skeleton/index.js +3 -3
- package/dist/hooks/use-has-permission-access/index.d.ts +2 -2
- package/dist/hooks/use-has-permission-access/index.d.ts.map +1 -1
- package/dist/hooks/use-has-permission-access/index.js +2 -6
- package/dist/hooks/use-translation/index.d.ts.map +1 -1
- package/dist/hooks/use-translation/index.js +5 -2
- package/dist/hooks/user-has-application-access/index.d.ts +1 -1
- package/dist/hooks/user-has-application-access/index.d.ts.map +1 -1
- package/dist/hooks/user-has-application-access/index.js +1 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/middleware/must-auth/index.d.ts +2 -1
- package/dist/middleware/must-auth/index.d.ts.map +1 -1
- package/dist/middleware/must-auth/index.js +2 -5
- package/dist/providers/abstract-socket-provider/index.d.ts +22 -0
- package/dist/providers/abstract-socket-provider/index.d.ts.map +1 -0
- package/dist/providers/abstract-socket-provider/index.js +118 -0
- package/dist/providers/sea-socket-provider/index.d.ts +22 -0
- package/dist/providers/sea-socket-provider/index.d.ts.map +1 -0
- package/dist/providers/sea-socket-provider/index.js +119 -0
- package/dist/providers/socket-provider/index.d.ts +2 -1
- package/dist/providers/socket-provider/index.d.ts.map +1 -1
- package/dist/providers/socket-provider/index.js +1 -4
- package/dist/services/remote-service/index.d.ts +1 -0
- package/dist/services/remote-service/index.d.ts.map +1 -1
- package/dist/services/remote-service/index.js +0 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/auth-axios/index.d.ts +1 -1
- package/dist/utils/auth-axios/index.d.ts.map +1 -1
- package/dist/utils/auth-axios/index.js +1 -3
- package/dist/utils/axios/index.d.ts +1 -1
- package/dist/utils/axios/index.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -6,18 +6,12 @@ import clsx from "clsx";
|
|
|
6
6
|
import Icon from "../icon";
|
|
7
7
|
import NativeMenu from "../native-menu";
|
|
8
8
|
import NativeMenuItem from "../native-menu/native-menu-item";
|
|
9
|
-
import { getCookie } from "../../utils/cookie";
|
|
10
9
|
import axios from "axios";
|
|
11
10
|
import Skeleton from "../skeleton";
|
|
12
11
|
import * as NotificationLocalStorageUtils from "../../utils/notification-localstorage";
|
|
13
12
|
const DEFAULT_FETCH_NOTIFICATIONS_LIMIT = 50;
|
|
14
13
|
const ICON_SIZE = "h-5 w-5";
|
|
15
|
-
|
|
16
|
-
headers: {
|
|
17
|
-
Authorization: `Bearer ${getCookie(CONSTANTS.JWT.JWTCookieKey)}`,
|
|
18
|
-
},
|
|
19
|
-
};
|
|
20
|
-
export default function NotificationMenu({ applicationKey, notificationBaseUrl, limit = DEFAULT_FETCH_NOTIFICATIONS_LIMIT, applicationsBaseUrls, navigate, }) {
|
|
14
|
+
export default function NotificationMenu({ applicationKey, notificationBaseUrl, limit = DEFAULT_FETCH_NOTIFICATIONS_LIMIT, applicationsBaseUrls, navigate, accessToken, }) {
|
|
21
15
|
const [closeMenu, setCloseMenu] = useState(true);
|
|
22
16
|
const [loading, setLoading] = useState(false);
|
|
23
17
|
const [page, setPage] = useState(1);
|
|
@@ -26,24 +20,30 @@ export default function NotificationMenu({ applicationKey, notificationBaseUrl,
|
|
|
26
20
|
const [unreadCount, setUnreadCount] = useState(0);
|
|
27
21
|
const [notifications, setNotifications] = useState([]);
|
|
28
22
|
useEffect(() => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
|
|
23
|
+
if (accessToken) {
|
|
24
|
+
setLoading(true);
|
|
25
|
+
axios
|
|
26
|
+
.get(`${notificationBaseUrl}?applicationKey=${applicationKey}&page=${page}&limit=${limit}`, {
|
|
27
|
+
headers: {
|
|
28
|
+
Authorization: `Bearer ${accessToken}`,
|
|
29
|
+
},
|
|
30
|
+
})
|
|
31
|
+
.then((response) => {
|
|
32
|
+
const { data, page: p, totalCount: tc, totalPages: tp, unreadCount, } = response.data;
|
|
33
|
+
setTotalCount(tc);
|
|
34
|
+
setTotalPages(tp);
|
|
35
|
+
setUnreadCount(unreadCount);
|
|
36
|
+
setNotifications((prev) => {
|
|
37
|
+
const all = Utils.Array.concatWithoutDuplicates(prev, data, (a, b) => a.id === b.id);
|
|
38
|
+
return all;
|
|
39
|
+
});
|
|
40
|
+
return response;
|
|
41
|
+
})
|
|
42
|
+
.finally(() => {
|
|
43
|
+
setLoading(false);
|
|
40
44
|
});
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
.finally(() => {
|
|
44
|
-
setLoading(false);
|
|
45
|
-
});
|
|
46
|
-
}, [applicationKey, notificationBaseUrl, limit, page]);
|
|
45
|
+
}
|
|
46
|
+
}, [applicationKey, notificationBaseUrl, limit, page, accessToken]);
|
|
47
47
|
useEffect(() => {
|
|
48
48
|
const handler = () => {
|
|
49
49
|
const notificationIds = NotificationLocalStorageUtils.getNewNotificationIds();
|
|
@@ -56,10 +56,16 @@ export default function NotificationMenu({ applicationKey, notificationBaseUrl,
|
|
|
56
56
|
return () => window.removeEventListener(NotificationLocalStorageUtils.NEW_NOTIFICATION_EVENT_NAME, handler);
|
|
57
57
|
}, []);
|
|
58
58
|
const handleNewNotificationCome = (notificationId) => {
|
|
59
|
+
if (!accessToken)
|
|
60
|
+
return;
|
|
59
61
|
const exist = notifications.find((n) => n.id === notificationId);
|
|
60
62
|
if (!exist) {
|
|
61
63
|
axios
|
|
62
|
-
.get(`${notificationBaseUrl}/${notificationId}`,
|
|
64
|
+
.get(`${notificationBaseUrl}/${notificationId}`, {
|
|
65
|
+
headers: {
|
|
66
|
+
Authorization: `Bearer ${accessToken}`,
|
|
67
|
+
},
|
|
68
|
+
})
|
|
63
69
|
.then((response) => {
|
|
64
70
|
setUnreadCount((prev) => prev + 1);
|
|
65
71
|
setTotalCount((prev) => prev + 1);
|
|
@@ -69,8 +75,14 @@ export default function NotificationMenu({ applicationKey, notificationBaseUrl,
|
|
|
69
75
|
NotificationLocalStorageUtils.removeNotificationId(notificationId);
|
|
70
76
|
};
|
|
71
77
|
const markAsRead = (notification) => {
|
|
78
|
+
if (!accessToken)
|
|
79
|
+
return;
|
|
72
80
|
axios
|
|
73
|
-
.put(`${notificationBaseUrl}/${notification.id}/read`, {},
|
|
81
|
+
.put(`${notificationBaseUrl}/${notification.id}/read`, {}, {
|
|
82
|
+
headers: {
|
|
83
|
+
Authorization: `Bearer ${accessToken}`,
|
|
84
|
+
},
|
|
85
|
+
})
|
|
74
86
|
.then((response) => {
|
|
75
87
|
const readed = response.data;
|
|
76
88
|
setNotifications((prev) => {
|
|
@@ -85,8 +97,14 @@ export default function NotificationMenu({ applicationKey, notificationBaseUrl,
|
|
|
85
97
|
});
|
|
86
98
|
};
|
|
87
99
|
const markAllAsRead = () => {
|
|
100
|
+
if (!accessToken)
|
|
101
|
+
return;
|
|
88
102
|
axios
|
|
89
|
-
.put(`${notificationBaseUrl}/read-all`, {},
|
|
103
|
+
.put(`${notificationBaseUrl}/read-all`, {}, {
|
|
104
|
+
headers: {
|
|
105
|
+
Authorization: `Bearer ${accessToken}`,
|
|
106
|
+
},
|
|
107
|
+
})
|
|
90
108
|
.then(() => {
|
|
91
109
|
setNotifications((prev) => {
|
|
92
110
|
return prev.map((n) => {
|
|
@@ -205,6 +223,9 @@ export default function NotificationMenu({ applicationKey, notificationBaseUrl,
|
|
|
205
223
|
}, 200);
|
|
206
224
|
}, children: _jsxs("div", { className: "flex-1 p-2", children: [_jsxs("div", { className: "flex flex-row items-center justify-between ", children: [_jsxs("div", { className: "flex flex-row items-center gap-2", children: [_jsx("div", { className: "font-semibold", children: icon }), " ", _jsxs("span", { className: "text-sm", children: [" ", title] })] }), _jsx("div", { className: "flex justify-end", children: _jsx("p", { className: "text-text text-xs", children: Utils.Moment.formatDateAsLabel(notification.createdAt) }) })] }), _jsx("div", { children: description })] }) }));
|
|
207
225
|
};
|
|
226
|
+
if (!accessToken) {
|
|
227
|
+
return (_jsx("p", { className: "p-4 text-center text-sm text-gray-500", children: "Please provide an access token to view notifications." }));
|
|
228
|
+
}
|
|
208
229
|
return (_jsx(NativeMenu, { size: "xl", menuButton: _jsxs("div", { className: "relative", children: [_jsx(Icon, { icon: "mingcute:notification-line", className: " hover:text-opacity-50 w-5 h-5 custom-animation" }), unreadCount !== 0 && (_jsx("div", { className: "absolute -top-2 -right-2 w-5 h-5 text-center rounded-full text-white bg-error shadow-md flex items-center justify-center", children: _jsx("p", { className: "text-xs select-none", children: unreadCount }) }))] }), maxHeight: 350, onReachBottom: () => LoadMoreNotifications(), closeMenu: closeMenu, setCloseMenu: setCloseMenu, children: _jsxs("div", { className: "flex flex-col ", children: [_jsxs("div", { className: "flex items-center justify-between gap-1 p-2", children: [_jsx("p", { className: "text-xl font-bold", children: "Notifications" }), _jsxs("button", { type: "button", className: "flex items-center gap-1 px-2 text-primary custom-animation hover:text-opacity-75", onClick: () => markAllAsRead(), children: [_jsx("p", { children: "Mare all as read" }), _jsx(Icon, { icon: "solar:check-read-linear", className: ICON_SIZE })] })] }), _jsxs("div", { className: "flex flex-col ", children: [notifications.map((notification) => (_jsx(NativeMenuItem, { children: renderNotificationItem(notification) }, `notification-${notification.id}`))), loading && (_jsx(_Fragment, { children: Array(3)
|
|
209
230
|
.fill({})
|
|
210
231
|
.map((_, i) => (_jsx(Skeleton, { className: "h-24 w-full" }, `notification-loading-${i}`))) }))] }), !loading && notifications.length === 0 && (_jsx("p", { className: "text-text text-center text-xs", children: "There are no more notifications" }))] }) }));
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
export type Props = {
|
|
3
|
-
|
|
2
|
+
export type Props = {
|
|
3
|
+
count?: number;
|
|
4
|
+
} & React.HTMLAttributes<HTMLDivElement>;
|
|
5
|
+
export default function Skeleton({ className, count, ...props }: Props): import("react/jsx-runtime").JSX.Element;
|
|
4
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,KAAK,GAAG,EAAE,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;AAE9E,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,2CAYzE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import clsx from "clsx";
|
|
3
|
-
export default function Skeleton({ className, ...props }) {
|
|
4
|
-
return (_jsx("div", { className: clsx("bg-gray-300 animate-pulse rounded-md", className), ...props }));
|
|
3
|
+
export default function Skeleton({ className, count = 1, ...props }) {
|
|
4
|
+
return (_jsx(_Fragment, { children: Array.from({ length: count }).map((_, index) => (_jsx("div", { className: clsx("bg-gray-300 animate-pulse rounded-md", className), ...props }, index))) }));
|
|
5
5
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { CONSTANTS } from "sea-platform-helpers";
|
|
2
|
-
export declare function useHasPermission(permission: CONSTANTS.Permission.PermissionKeys): boolean;
|
|
3
|
-
export declare function useHasOneOfPermissions(permissions: CONSTANTS.Permission.PermissionKeys[]): boolean;
|
|
2
|
+
export declare function useHasPermission(permission: CONSTANTS.Permission.PermissionKeys, accessToken: string): boolean;
|
|
3
|
+
export declare function useHasOneOfPermissions(permissions: CONSTANTS.Permission.PermissionKeys[], accessToken: string): boolean;
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-has-permission-access/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-has-permission-access/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,cAAc,EAC/C,WAAW,EAAE,MAAM,GAClB,OAAO,CAOT;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,EAClD,WAAW,EAAE,MAAM,GAClB,OAAO,CAST"}
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { CONSTANTS } from "sea-platform-helpers";
|
|
3
|
-
import { getCookie } from "../../utils/cookie";
|
|
4
2
|
import { jwtDecode } from "../../utils/jwt";
|
|
5
|
-
export function useHasPermission(permission) {
|
|
3
|
+
export function useHasPermission(permission, accessToken) {
|
|
6
4
|
var _a, _b;
|
|
7
|
-
const accessToken = getCookie(CONSTANTS.JWT.JWTCookieKey);
|
|
8
5
|
if (!accessToken || accessToken === undefined)
|
|
9
6
|
return false;
|
|
10
7
|
const payload = jwtDecode(accessToken);
|
|
11
8
|
return (_b = (_a = payload === null || payload === void 0 ? void 0 : payload.permissionKeys) === null || _a === void 0 ? void 0 : _a.includes(permission)) !== null && _b !== void 0 ? _b : false;
|
|
12
9
|
}
|
|
13
|
-
export function useHasOneOfPermissions(permissions) {
|
|
10
|
+
export function useHasOneOfPermissions(permissions, accessToken) {
|
|
14
11
|
var _a, _b;
|
|
15
|
-
const accessToken = getCookie(CONSTANTS.JWT.JWTCookieKey);
|
|
16
12
|
if (!accessToken || accessToken === undefined)
|
|
17
13
|
return false;
|
|
18
14
|
const payload = jwtDecode(accessToken);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-translation/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOpC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe;SACnC,iCAAiC,CAAC,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,iCAAiC,CAAC,CAAC;IAClJ,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe;SACnC,mBAAmB,CAAC,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACtH,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe;SACnC,4BAA4B,CAAC,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC;CACzI,CAAC;AAWF,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAClE,cAAc,EAAE,CAAC,EACjB,gBAAgB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,kBAAkB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAC5E,oBAAoB,CAAC,EAAE,MAAM;aA8CtB,MAAM,kBAAkB,CAAC,CAAC,CAAC,WACvB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KACvC,MAAM;EAoBV;AAED,wBAAgB,CAAC,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAAE,KAAK,EAAE;IAC3D,cAAc,EAAE,CAAC,CAAC;IAClB,GAAG,EAAE,MAAM,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACzC,oBAAoB,EAAE,MAAM,CAAC;CAC9B,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-translation/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOpC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe;SACnC,iCAAiC,CAAC,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,iCAAiC,CAAC,CAAC;IAClJ,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe;SACnC,mBAAmB,CAAC,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACtH,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe;SACnC,4BAA4B,CAAC,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC;CACzI,CAAC;AAWF,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAClE,cAAc,EAAE,CAAC,EACjB,gBAAgB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,kBAAkB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAC5E,oBAAoB,CAAC,EAAE,MAAM;aA8CtB,MAAM,kBAAkB,CAAC,CAAC,CAAC,WACvB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KACvC,MAAM;EAoBV;AAED,wBAAgB,CAAC,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAAE,KAAK,EAAE;IAC3D,cAAc,EAAE,CAAC,CAAC;IAClB,GAAG,EAAE,MAAM,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACzC,oBAAoB,EAAE,MAAM,CAAC;CAC9B,GAAG,MAAM,CAuBT"}
|
|
@@ -70,9 +70,12 @@ export function useSeaTranslation(applicationKey, fetchTranslation, selectedLang
|
|
|
70
70
|
return { t };
|
|
71
71
|
}
|
|
72
72
|
export function t(props) {
|
|
73
|
+
var _a, _b;
|
|
73
74
|
const { applicationKey, key, params, selectedLanguageCode } = props;
|
|
74
|
-
const
|
|
75
|
-
|
|
75
|
+
const languageMap = json[selectedLanguageCode];
|
|
76
|
+
const defaultMap = DEFAULT_TRANSLATIONS_MAP[applicationKey];
|
|
77
|
+
const keyStr = String(key);
|
|
78
|
+
let translation = (_b = (_a = languageMap === null || languageMap === void 0 ? void 0 : languageMap[keyStr]) !== null && _a !== void 0 ? _a : defaultMap === null || defaultMap === void 0 ? void 0 : defaultMap[keyStr]) !== null && _b !== void 0 ? _b : "";
|
|
76
79
|
// Replace placeholders like {{ name }}, {{ count }}, etc.
|
|
77
80
|
if (params) {
|
|
78
81
|
Object.entries(params).forEach(([paramKey, paramValue]) => {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { CONSTANTS } from "sea-platform-helpers";
|
|
2
|
-
export declare function useHasApplicationAccess(applicationKey: CONSTANTS.Application.ApplicationKeys): boolean;
|
|
2
|
+
export declare function useHasApplicationAccess(applicationKey: CONSTANTS.Application.ApplicationKeys, accessToken: string): boolean;
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/user-has-application-access/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/user-has-application-access/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,SAAS,CAAC,WAAW,CAAC,eAAe,EACrD,WAAW,EAAE,MAAM,GAClB,OAAO,CAOT"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { CONSTANTS } from "sea-platform-helpers";
|
|
3
|
-
import { getCookie } from "../../utils/cookie";
|
|
4
2
|
import { jwtDecode } from "../../utils/jwt";
|
|
5
|
-
export function useHasApplicationAccess(applicationKey) {
|
|
3
|
+
export function useHasApplicationAccess(applicationKey, accessToken) {
|
|
6
4
|
var _a, _b;
|
|
7
|
-
const accessToken = getCookie(CONSTANTS.JWT.JWTCookieKey);
|
|
8
5
|
if (!accessToken || accessToken === undefined)
|
|
9
6
|
return false;
|
|
10
7
|
const payload = jwtDecode(accessToken);
|
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export * as DeviceUtils from "./utils/device";
|
|
|
10
10
|
export * as Services from "./services";
|
|
11
11
|
export { default as MustAuth } from "./middleware/must-auth";
|
|
12
12
|
export { default as SocketProvider, useSocket, SocketProviderProps, } from "./providers/socket-provider";
|
|
13
|
+
export { default as SEASocketProvider, useSEASocket, SEASocketProviderProps, } from "./providers/sea-socket-provider";
|
|
13
14
|
export { useHasApplicationAccess } from "./hooks/user-has-application-access";
|
|
14
15
|
export { useHasOneOfPermissions, useHasPermission, } from "./hooks/use-has-permission-access";
|
|
15
16
|
export { useSeaTranslation, DEFAULT_TRANSLATIONS_MAP, t, } from "./hooks/use-translation";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAGzC,OAAO,KAAK,eAAe,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,SAAS,EACT,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAGzC,OAAO,KAAK,eAAe,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,SAAS,EACT,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,OAAO,IAAI,iBAAiB,EAC5B,YAAY,EACZ,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EACL,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,CAAC,GACF,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EACL,OAAO,IAAI,KAAK,EAChB,KAAK,IAAI,UAAU,EACnB,KAAK,IAAI,UAAU,EACnB,MAAM,IAAI,WAAW,GACtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,WAAW,EACX,SAAS,EACT,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,OAAO,IAAI,KAAK,EAChB,KAAK,IAAI,UAAU,EACnB,KAAK,IAAI,UAAU,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,OAAO,IAAI,KAAK,EAChB,aAAa,EACb,SAAS,EACT,KAAK,IAAI,UAAU,GACpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EACL,OAAO,IAAI,UAAU,EACrB,KAAK,IAAI,eAAe,GACzB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,KAAK,IAAI,mBAAmB,GAC7B,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EACL,OAAO,IAAI,MAAM,EACjB,KAAK,IAAI,WAAW,EACpB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,OAAO,IAAI,gBAAgB,EAC3B,KAAK,IAAI,qBAAqB,GAC/B,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,KAAK,IAAI,gBAAgB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,OAAO,IAAI,iBAAiB,EAC5B,KAAK,IAAI,sBAAsB,GAChC,MAAM,kCAAkC,CAAC;AAE1C,cAAc,4BAA4B,CAAC;AAE3C,OAAO,EACL,OAAO,IAAI,YAAY,EACvB,KAAK,IAAI,iBAAiB,GAC3B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,OAAO,IAAI,OAAO,EAClB,KAAK,IAAI,YAAY,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,KAAK,IAAI,cAAc,GACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,gBAAgB,MAAM,+BAA+B,CAAC;AAElE,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,KAAK,IAAI,cAAc,EACvB,wCAAwC,GACzC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,OAAO,IAAI,KAAK,EAChB,KAAK,IAAI,UAAU,EACnB,WAAW,EACX,mCAAmC,GACpC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,KAAK,IAAI,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,KAAK,IAAI,gBAAgB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,OAAO,IAAI,UAAU,EACrB,KAAK,IAAI,eAAe,GACzB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,OAAO,IAAI,MAAM,EACjB,KAAK,IAAI,WAAW,EACpB,SAAS,IAAI,eAAe,GAC7B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,KAAK,IAAI,mBAAmB,GAC7B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,KAAK,IAAI,gBAAgB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,OAAO,IAAI,YAAY,EACvB,KAAK,IAAI,iBAAiB,EAC1B,QAAQ,IAAI,gBAAgB,EAC5B,aAAa,IAAI,yBAAyB,EAC1C,KAAK,IAAI,iBAAiB,GAC3B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,KAAK,IAAI,gBAAgB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,KAAK,IAAI,cAAc,EACvB,aAAa,IAAI,sBAAsB,EACvC,SAAS,IAAI,kBAAkB,EAC/B,cAAc,IAAI,uBAAuB,GAC1C,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EACL,OAAO,IAAI,UAAU,EACrB,KAAK,IAAI,eAAe,GACzB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,OAAO,IAAI,aAAa,EACxB,KAAK,IAAI,kBAAkB,GAC5B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,OAAO,IAAI,YAAY,EACvB,KAAK,IAAI,iBAAiB,GAC3B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,KAAK,IAAI,gBAAgB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,KAAK,IAAI,cAAc,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,KAAK,IAAI,mBAAmB,GAC7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,OAAO,IAAI,YAAY,EACvB,KAAK,IAAI,iBAAiB,GAC3B,MAAM,6BAA6B,CAAC;AAErC,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EACL,OAAO,IAAI,iBAAiB,EAC5B,KAAK,IAAI,sBAAsB,GAChC,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,OAAO,IAAI,iBAAiB,EAC5B,KAAK,IAAI,sBAAsB,GAChC,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,OAAO,IAAI,sBAAsB,EACjC,KAAK,IAAI,2BAA2B,GACrC,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EACL,OAAO,IAAI,iBAAiB,EAC5B,KAAK,IAAI,sBAAsB,GAChC,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,OAAO,IAAI,oBAAoB,EAC/B,KAAK,IAAI,yBAAyB,GACnC,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -15,6 +15,7 @@ export * as Services from "./services";
|
|
|
15
15
|
export { default as MustAuth } from "./middleware/must-auth";
|
|
16
16
|
// providers
|
|
17
17
|
export { default as SocketProvider, useSocket, } from "./providers/socket-provider";
|
|
18
|
+
export { default as SEASocketProvider, useSEASocket, } from "./providers/sea-socket-provider";
|
|
18
19
|
// hooks
|
|
19
20
|
export { useHasApplicationAccess } from "./hooks/user-has-application-access";
|
|
20
21
|
export { useHasOneOfPermissions, useHasPermission, } from "./hooks/use-has-permission-access";
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
export default function MustAuth({ children, noTokenHandler, hasTokenHandler, }: Readonly<{
|
|
2
|
+
export default function MustAuth({ children, noTokenHandler, hasTokenHandler, accessToken, }: Readonly<{
|
|
3
3
|
children: React.ReactNode;
|
|
4
4
|
noTokenHandler?: () => void;
|
|
5
5
|
hasTokenHandler?: () => void;
|
|
6
|
+
accessToken?: string;
|
|
6
7
|
}>): import("react/jsx-runtime").JSX.Element;
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middleware/must-auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middleware/must-auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,QAAQ,EACR,cAAc,EACd,eAAe,EACf,WAAW,GACZ,EAAE,QAAQ,CAAC;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC,2CAmBD"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { useEffect, useState } from "react";
|
|
4
|
-
|
|
5
|
-
import { getCookie } from "../../utils/cookie";
|
|
6
|
-
export default function MustAuth({ children, noTokenHandler, hasTokenHandler, }) {
|
|
4
|
+
export default function MustAuth({ children, noTokenHandler, hasTokenHandler, accessToken, }) {
|
|
7
5
|
const [isCheckingAuth, setIsCheckingAuth] = useState(true);
|
|
8
6
|
useEffect(() => {
|
|
9
|
-
const accessToken = getCookie(CONSTANTS.JWT.JWTCookieKey);
|
|
10
7
|
if (!accessToken) {
|
|
11
8
|
noTokenHandler();
|
|
12
9
|
}
|
|
@@ -17,7 +14,7 @@ export default function MustAuth({ children, noTokenHandler, hasTokenHandler, })
|
|
|
17
14
|
else {
|
|
18
15
|
setIsCheckingAuth(false);
|
|
19
16
|
}
|
|
20
|
-
}, [noTokenHandler, hasTokenHandler]);
|
|
17
|
+
}, [noTokenHandler, hasTokenHandler, accessToken]);
|
|
21
18
|
if (isCheckingAuth) {
|
|
22
19
|
return null;
|
|
23
20
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Socket, ManagerOptions, SocketOptions } from "socket.io-client";
|
|
3
|
+
export type SocketStatus = "idle" | "connecting" | "connected" | "disconnected" | "error";
|
|
4
|
+
export type SocketContextValue = {
|
|
5
|
+
socket: Socket | null;
|
|
6
|
+
status: SocketStatus;
|
|
7
|
+
error: Error | null;
|
|
8
|
+
connect: () => void;
|
|
9
|
+
disconnect: () => void;
|
|
10
|
+
};
|
|
11
|
+
export type SocketProviderProps = {
|
|
12
|
+
children: React.ReactNode;
|
|
13
|
+
link: string;
|
|
14
|
+
namespace?: string;
|
|
15
|
+
path?: string;
|
|
16
|
+
token?: string;
|
|
17
|
+
autoConnect?: boolean;
|
|
18
|
+
options?: Partial<ManagerOptions & SocketOptions>;
|
|
19
|
+
};
|
|
20
|
+
export declare function SocketProvider({ children, link, namespace, path, token, autoConnect, options, }: Readonly<SocketProviderProps>): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export declare function useSocket(): SocketContextValue;
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/abstract-socket-provider/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAQN,MAAM,OAAO,CAAC;AACf,OAAO,EAAM,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAM7E,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,YAAY,GACZ,WAAW,GACX,cAAc,GACd,OAAO,CAAC;AAEZ,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC;CACnD,CAAC;AAYF,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,KAAK,EACL,WAAkB,EAClB,OAAO,GACR,EAAE,QAAQ,CAAC,mBAAmB,CAAC,2CA2H/B;AAMD,wBAAgB,SAAS,uBAMxB"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, useContext, useEffect, useMemo, useRef, useState, useCallback, } from "react";
|
|
4
|
+
import { io } from "socket.io-client";
|
|
5
|
+
/* ---------------------------------- */
|
|
6
|
+
/* Context */
|
|
7
|
+
/* ---------------------------------- */
|
|
8
|
+
const SocketContext = createContext(null);
|
|
9
|
+
/* ---------------------------------- */
|
|
10
|
+
/* Provider */
|
|
11
|
+
/* ---------------------------------- */
|
|
12
|
+
export function SocketProvider({ children, link, namespace, path, token, autoConnect = true, options, }) {
|
|
13
|
+
const socketRef = useRef(null);
|
|
14
|
+
const configRef = useRef({
|
|
15
|
+
link,
|
|
16
|
+
namespace,
|
|
17
|
+
path,
|
|
18
|
+
token,
|
|
19
|
+
options,
|
|
20
|
+
});
|
|
21
|
+
const [status, setStatus] = useState("idle");
|
|
22
|
+
const [error, setError] = useState(null);
|
|
23
|
+
/* ---------------------------------- */
|
|
24
|
+
/* Keep configRef updated without */
|
|
25
|
+
/* recreating connect() */
|
|
26
|
+
/* ---------------------------------- */
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
configRef.current = {
|
|
29
|
+
link,
|
|
30
|
+
namespace,
|
|
31
|
+
path,
|
|
32
|
+
token,
|
|
33
|
+
options,
|
|
34
|
+
};
|
|
35
|
+
}, [link, namespace, path, token, options]);
|
|
36
|
+
/* ---------------------------------- */
|
|
37
|
+
/* Connect (stable reference) */
|
|
38
|
+
/* ---------------------------------- */
|
|
39
|
+
const connect = useCallback(() => {
|
|
40
|
+
var _a;
|
|
41
|
+
if ((_a = socketRef.current) === null || _a === void 0 ? void 0 : _a.connected)
|
|
42
|
+
return;
|
|
43
|
+
const { link, namespace, path, token, options } = configRef.current;
|
|
44
|
+
if (!link) {
|
|
45
|
+
setStatus("error");
|
|
46
|
+
setError(new Error("Socket link is required"));
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const finalUrl = namespace
|
|
50
|
+
? `${link.replace(/\/$/, "")}${namespace}`
|
|
51
|
+
: link;
|
|
52
|
+
setStatus("connecting");
|
|
53
|
+
const socket = io(finalUrl, {
|
|
54
|
+
autoConnect: false,
|
|
55
|
+
transports: ["websocket"],
|
|
56
|
+
path,
|
|
57
|
+
auth: token ? { token } : undefined,
|
|
58
|
+
...options,
|
|
59
|
+
});
|
|
60
|
+
socketRef.current = socket;
|
|
61
|
+
socket.on("connect", () => {
|
|
62
|
+
setStatus("connected");
|
|
63
|
+
setError(null);
|
|
64
|
+
});
|
|
65
|
+
socket.on("disconnect", () => {
|
|
66
|
+
setStatus("disconnected");
|
|
67
|
+
});
|
|
68
|
+
socket.on("connect_error", (err) => {
|
|
69
|
+
setStatus("error");
|
|
70
|
+
setError(err instanceof Error ? err : new Error("Socket connect error"));
|
|
71
|
+
});
|
|
72
|
+
socket.connect();
|
|
73
|
+
}, []);
|
|
74
|
+
/* ---------------------------------- */
|
|
75
|
+
/* Disconnect (stable reference) */
|
|
76
|
+
/* ---------------------------------- */
|
|
77
|
+
const disconnect = useCallback(() => {
|
|
78
|
+
const socket = socketRef.current;
|
|
79
|
+
if (!socket)
|
|
80
|
+
return;
|
|
81
|
+
socket.removeAllListeners();
|
|
82
|
+
socket.disconnect();
|
|
83
|
+
socketRef.current = null;
|
|
84
|
+
setStatus("disconnected");
|
|
85
|
+
}, []);
|
|
86
|
+
/* ---------------------------------- */
|
|
87
|
+
/* Auto Connect */
|
|
88
|
+
/* ---------------------------------- */
|
|
89
|
+
useEffect(() => {
|
|
90
|
+
if (!autoConnect)
|
|
91
|
+
return;
|
|
92
|
+
connect();
|
|
93
|
+
return () => {
|
|
94
|
+
disconnect();
|
|
95
|
+
};
|
|
96
|
+
}, [autoConnect, connect, disconnect]);
|
|
97
|
+
/* ---------------------------------- */
|
|
98
|
+
/* Memoized context */
|
|
99
|
+
/* ---------------------------------- */
|
|
100
|
+
const value = useMemo(() => ({
|
|
101
|
+
socket: socketRef.current,
|
|
102
|
+
status,
|
|
103
|
+
error,
|
|
104
|
+
connect,
|
|
105
|
+
disconnect,
|
|
106
|
+
}), [status, error, connect, disconnect]);
|
|
107
|
+
return (_jsx(SocketContext.Provider, { value: value, children: children }));
|
|
108
|
+
}
|
|
109
|
+
/* ---------------------------------- */
|
|
110
|
+
/* Hook */
|
|
111
|
+
/* ---------------------------------- */
|
|
112
|
+
export function useSocket() {
|
|
113
|
+
const context = useContext(SocketContext);
|
|
114
|
+
if (!context) {
|
|
115
|
+
throw new Error("useSocket must be used within SocketProvider");
|
|
116
|
+
}
|
|
117
|
+
return context;
|
|
118
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Socket, ManagerOptions, SocketOptions } from "socket.io-client";
|
|
3
|
+
export type SEASocketStatus = "idle" | "connecting" | "connected" | "disconnected" | "error";
|
|
4
|
+
export type SEASocketContextValue = {
|
|
5
|
+
socket: Socket | null;
|
|
6
|
+
status: SEASocketStatus;
|
|
7
|
+
error: Error | null;
|
|
8
|
+
connect: () => void;
|
|
9
|
+
disconnect: () => void;
|
|
10
|
+
};
|
|
11
|
+
export type SEASocketProviderProps = {
|
|
12
|
+
children: React.ReactNode;
|
|
13
|
+
link: string;
|
|
14
|
+
namespace?: string;
|
|
15
|
+
path?: string;
|
|
16
|
+
token?: string;
|
|
17
|
+
autoConnect?: boolean;
|
|
18
|
+
options?: Partial<ManagerOptions & SocketOptions>;
|
|
19
|
+
};
|
|
20
|
+
export default function SEASocketProvider({ children, link, namespace, path, token, autoConnect, options, }: Readonly<SEASocketProviderProps>): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export declare function useSEASocket(): SEASocketContextValue;
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/sea-socket-provider/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAQN,MAAM,OAAO,CAAC;AACf,OAAO,EAAM,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAM7E,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,YAAY,GACZ,WAAW,GACX,cAAc,GACd,OAAO,CAAC;AAEZ,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC;CACnD,CAAC;AAYF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,KAAK,EACL,WAAkB,EAClB,OAAO,GACR,EAAE,QAAQ,CAAC,sBAAsB,CAAC,2CA+HlC;AAMD,wBAAgB,YAAY,0BAM3B"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, useContext, useEffect, useMemo, useRef, useState, useCallback, } from "react";
|
|
4
|
+
import { io } from "socket.io-client";
|
|
5
|
+
/* ---------------------------------- */
|
|
6
|
+
/* Context */
|
|
7
|
+
/* ---------------------------------- */
|
|
8
|
+
const SEASocketContext = createContext(null);
|
|
9
|
+
/* ---------------------------------- */
|
|
10
|
+
/* Provider */
|
|
11
|
+
/* ---------------------------------- */
|
|
12
|
+
export default function SEASocketProvider({ children, link, namespace, path, token, autoConnect = true, options, }) {
|
|
13
|
+
const socketRef = useRef(null);
|
|
14
|
+
const configRef = useRef({
|
|
15
|
+
link,
|
|
16
|
+
namespace,
|
|
17
|
+
path,
|
|
18
|
+
token,
|
|
19
|
+
options,
|
|
20
|
+
});
|
|
21
|
+
const [status, setStatus] = useState("idle");
|
|
22
|
+
const [error, setError] = useState(null);
|
|
23
|
+
/* ---------------------------------- */
|
|
24
|
+
/* Keep configRef updated without */
|
|
25
|
+
/* recreating connect() */
|
|
26
|
+
/* ---------------------------------- */
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
configRef.current = {
|
|
29
|
+
link,
|
|
30
|
+
namespace,
|
|
31
|
+
path,
|
|
32
|
+
token,
|
|
33
|
+
options,
|
|
34
|
+
};
|
|
35
|
+
}, [link, namespace, path, token, options]);
|
|
36
|
+
/* ---------------------------------- */
|
|
37
|
+
/* Connect (stable reference) */
|
|
38
|
+
/* ---------------------------------- */
|
|
39
|
+
const connect = useCallback(() => {
|
|
40
|
+
var _a;
|
|
41
|
+
if ((_a = socketRef.current) === null || _a === void 0 ? void 0 : _a.connected)
|
|
42
|
+
return;
|
|
43
|
+
const { link, namespace, path, token, options } = configRef.current;
|
|
44
|
+
if (!link) {
|
|
45
|
+
setStatus("error");
|
|
46
|
+
setError(new Error("Socket link is required"));
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const finalUrl = namespace
|
|
50
|
+
? `${link.replace(/\/$/, "")}${namespace}`
|
|
51
|
+
: link;
|
|
52
|
+
console.log("Connecting to socket at:", finalUrl);
|
|
53
|
+
setStatus("connecting");
|
|
54
|
+
const socket = io(finalUrl, {
|
|
55
|
+
autoConnect: false,
|
|
56
|
+
transports: ["websocket"],
|
|
57
|
+
path,
|
|
58
|
+
auth: token ? { token } : undefined,
|
|
59
|
+
...options,
|
|
60
|
+
});
|
|
61
|
+
socketRef.current = socket;
|
|
62
|
+
socket.on("connect", () => {
|
|
63
|
+
setStatus("connected");
|
|
64
|
+
setError(null);
|
|
65
|
+
});
|
|
66
|
+
socket.on("disconnect", () => {
|
|
67
|
+
setStatus("disconnected");
|
|
68
|
+
});
|
|
69
|
+
socket.on("connect_error", (err) => {
|
|
70
|
+
setStatus("error");
|
|
71
|
+
setError(err instanceof Error ? err : new Error("Socket connect error"));
|
|
72
|
+
});
|
|
73
|
+
socket.connect();
|
|
74
|
+
}, []);
|
|
75
|
+
/* ---------------------------------- */
|
|
76
|
+
/* Disconnect (stable reference) */
|
|
77
|
+
/* ---------------------------------- */
|
|
78
|
+
const disconnect = useCallback(() => {
|
|
79
|
+
const socket = socketRef.current;
|
|
80
|
+
if (!socket)
|
|
81
|
+
return;
|
|
82
|
+
socket.removeAllListeners();
|
|
83
|
+
socket.disconnect();
|
|
84
|
+
socketRef.current = null;
|
|
85
|
+
setStatus("disconnected");
|
|
86
|
+
}, []);
|
|
87
|
+
/* ---------------------------------- */
|
|
88
|
+
/* Auto Connect */
|
|
89
|
+
/* ---------------------------------- */
|
|
90
|
+
useEffect(() => {
|
|
91
|
+
if (!autoConnect)
|
|
92
|
+
return;
|
|
93
|
+
connect();
|
|
94
|
+
return () => {
|
|
95
|
+
disconnect();
|
|
96
|
+
};
|
|
97
|
+
}, [autoConnect, connect, disconnect]);
|
|
98
|
+
/* ---------------------------------- */
|
|
99
|
+
/* Memoized context */
|
|
100
|
+
/* ---------------------------------- */
|
|
101
|
+
const value = useMemo(() => ({
|
|
102
|
+
socket: socketRef.current,
|
|
103
|
+
status,
|
|
104
|
+
error,
|
|
105
|
+
connect,
|
|
106
|
+
disconnect,
|
|
107
|
+
}), [status, error, connect, disconnect]);
|
|
108
|
+
return (_jsx(SEASocketContext.Provider, { value: value, children: children }));
|
|
109
|
+
}
|
|
110
|
+
/* ---------------------------------- */
|
|
111
|
+
/* Hook */
|
|
112
|
+
/* ---------------------------------- */
|
|
113
|
+
export function useSEASocket() {
|
|
114
|
+
const context = useContext(SEASocketContext);
|
|
115
|
+
if (!context) {
|
|
116
|
+
throw new Error("useSEASocket must be used within SEASocketProvider");
|
|
117
|
+
}
|
|
118
|
+
return context;
|
|
119
|
+
}
|
|
@@ -11,7 +11,8 @@ export type SocketProviderProps = {
|
|
|
11
11
|
link: string;
|
|
12
12
|
autoConnect?: boolean;
|
|
13
13
|
options?: Parameters<typeof io>[1];
|
|
14
|
+
accessToken?: string;
|
|
14
15
|
};
|
|
15
|
-
export default function SocketProvider({ children, link, autoConnect, options, }: Readonly<SocketProviderProps>): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export default function SocketProvider({ children, link, autoConnect, options, accessToken, }: Readonly<SocketProviderProps>): import("react/jsx-runtime").JSX.Element;
|
|
16
17
|
export declare function useSocket(): SocketContextValue;
|
|
17
18
|
//# sourceMappingURL=index.d.ts.map
|