@serhii.olishevskyi/docs 1.1.4 → 1.1.6
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.
|
@@ -300,6 +300,19 @@ var trackUserSession = async (supabase, userId) => {
|
|
|
300
300
|
{ onConflict: "user_id, device_id" }
|
|
301
301
|
);
|
|
302
302
|
};
|
|
303
|
+
var trackUserSessionByRoute = async (supabase, userId, currentUrl) => {
|
|
304
|
+
const deviceId = getDeviceId();
|
|
305
|
+
await supabase.from("user_sessions").upsert(
|
|
306
|
+
{
|
|
307
|
+
user_id: userId,
|
|
308
|
+
device_id: deviceId,
|
|
309
|
+
user_agent: navigator.userAgent,
|
|
310
|
+
url: currentUrl || window.location.href,
|
|
311
|
+
last_seen_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
312
|
+
},
|
|
313
|
+
{ onConflict: "user_id, device_id" }
|
|
314
|
+
);
|
|
315
|
+
};
|
|
303
316
|
var fetchUserSessions = async (supabase) => {
|
|
304
317
|
const currentDeviceId = getDeviceId();
|
|
305
318
|
const { data: { user } } = await supabase.auth.getUser();
|
|
@@ -2535,6 +2548,7 @@ var UserPopoverComponent_default = UserPopoverComponent;
|
|
|
2535
2548
|
export {
|
|
2536
2549
|
fetchCompanySessions,
|
|
2537
2550
|
trackUserSession,
|
|
2551
|
+
trackUserSessionByRoute,
|
|
2538
2552
|
fetchUserSessions,
|
|
2539
2553
|
isCurrentSessionValid,
|
|
2540
2554
|
groupSessionsByUser,
|
package/dist/index.d.mts
CHANGED
|
@@ -519,6 +519,7 @@ declare const Services: {
|
|
|
519
519
|
readonly SessionService: {
|
|
520
520
|
readonly fetchCompanySessions: (supabase: _supabase_supabase_js.SupabaseClient, companyId: string, page?: number, pageSize?: number, searchQuery?: string) => Promise<FetchCompanySessionsResponse>;
|
|
521
521
|
readonly trackUserSession: (supabase: _supabase_supabase_js.SupabaseClient, userId: string) => Promise<void>;
|
|
522
|
+
readonly trackUserSessionByRoute: (supabase: _supabase_supabase_js.SupabaseClient, userId: string, currentUrl?: string) => Promise<void>;
|
|
522
523
|
readonly fetchUserSessions: (supabase: _supabase_supabase_js.SupabaseClient) => Promise<UserSessionItem[]>;
|
|
523
524
|
readonly isCurrentSessionValid: (supabase: _supabase_supabase_js.SupabaseClient, userId: string) => Promise<boolean>;
|
|
524
525
|
readonly groupSessionsByUser: (sessions: UserSessionItem[]) => UserGroupedSessions[];
|
|
@@ -527,4 +528,10 @@ declare const Services: {
|
|
|
527
528
|
};
|
|
528
529
|
};
|
|
529
530
|
|
|
530
|
-
|
|
531
|
+
declare function useDebounce<T>(value: T, delay?: number): T;
|
|
532
|
+
|
|
533
|
+
declare const Hooks: {
|
|
534
|
+
readonly useDebounce: typeof useDebounce;
|
|
535
|
+
};
|
|
536
|
+
|
|
537
|
+
export { type AIConfig, type AIGenerateOptions, AIProvider, type AIProviderProps, type AIProviderType, AppSettingsProvider, AuthProvider, BreadcrumbProvider, type ConfirmOptions, type ConfirmResult, ConfirmationProvider, type ConfirmationProviderProps, type CopyClipboardButtonComponentProps as CopyClipboardButtonProps, type DialogSeverity, type DisplayState, type EmailInputComponentProps as EmailInputProps, Hooks, type Language, LocalizationProvider, type MyAvatarComponentProps as MyAvatarProps, type NumberInputComponentProps as NumberInputProps, Providers, Services, type SupabaseConfig, SupabaseProvider, type SupabaseProviderProps, type TextFieldComponentProps as TextFieldProps, type ThemeColors, type ThemeConfig, type ThemeMode, ThemeProvider, ToastProvider, type ToastType, type TranslatableTooltipComponentProps as TranslatableTooltipProps, TranslateProvider, TranslateText, TranslationEditProvider, type TypographyConfig, UI, type UrlComponentProps as UrlProps, type UserAvatarComponentProps as UserAvatarProps, type UserGroupedSessions, type UserPopoverComponentProps as UserPopoverProps, type UserRoleChipComponentProps as UserRoleChipProps, type UserSessionItem, UserSettingsProvider, type UserStatusChipComponentProps as UserStatusChipProps, useAI, useAppSettings, useAppTheme, useAuth, useBreadcrumb, useConfirmation, useLocalization, useSupabase, useToast, useTranslationEdit, useTranslationNamespace, useUserSettings };
|
package/dist/index.d.ts
CHANGED
|
@@ -519,6 +519,7 @@ declare const Services: {
|
|
|
519
519
|
readonly SessionService: {
|
|
520
520
|
readonly fetchCompanySessions: (supabase: _supabase_supabase_js.SupabaseClient, companyId: string, page?: number, pageSize?: number, searchQuery?: string) => Promise<FetchCompanySessionsResponse>;
|
|
521
521
|
readonly trackUserSession: (supabase: _supabase_supabase_js.SupabaseClient, userId: string) => Promise<void>;
|
|
522
|
+
readonly trackUserSessionByRoute: (supabase: _supabase_supabase_js.SupabaseClient, userId: string, currentUrl?: string) => Promise<void>;
|
|
522
523
|
readonly fetchUserSessions: (supabase: _supabase_supabase_js.SupabaseClient) => Promise<UserSessionItem[]>;
|
|
523
524
|
readonly isCurrentSessionValid: (supabase: _supabase_supabase_js.SupabaseClient, userId: string) => Promise<boolean>;
|
|
524
525
|
readonly groupSessionsByUser: (sessions: UserSessionItem[]) => UserGroupedSessions[];
|
|
@@ -527,4 +528,10 @@ declare const Services: {
|
|
|
527
528
|
};
|
|
528
529
|
};
|
|
529
530
|
|
|
530
|
-
|
|
531
|
+
declare function useDebounce<T>(value: T, delay?: number): T;
|
|
532
|
+
|
|
533
|
+
declare const Hooks: {
|
|
534
|
+
readonly useDebounce: typeof useDebounce;
|
|
535
|
+
};
|
|
536
|
+
|
|
537
|
+
export { type AIConfig, type AIGenerateOptions, AIProvider, type AIProviderProps, type AIProviderType, AppSettingsProvider, AuthProvider, BreadcrumbProvider, type ConfirmOptions, type ConfirmResult, ConfirmationProvider, type ConfirmationProviderProps, type CopyClipboardButtonComponentProps as CopyClipboardButtonProps, type DialogSeverity, type DisplayState, type EmailInputComponentProps as EmailInputProps, Hooks, type Language, LocalizationProvider, type MyAvatarComponentProps as MyAvatarProps, type NumberInputComponentProps as NumberInputProps, Providers, Services, type SupabaseConfig, SupabaseProvider, type SupabaseProviderProps, type TextFieldComponentProps as TextFieldProps, type ThemeColors, type ThemeConfig, type ThemeMode, ThemeProvider, ToastProvider, type ToastType, type TranslatableTooltipComponentProps as TranslatableTooltipProps, TranslateProvider, TranslateText, TranslationEditProvider, type TypographyConfig, UI, type UrlComponentProps as UrlProps, type UserAvatarComponentProps as UserAvatarProps, type UserGroupedSessions, type UserPopoverComponentProps as UserPopoverProps, type UserRoleChipComponentProps as UserRoleChipProps, type UserSessionItem, UserSettingsProvider, type UserStatusChipComponentProps as UserStatusChipProps, useAI, useAppSettings, useAppTheme, useAuth, useBreadcrumb, useConfirmation, useLocalization, useSupabase, useToast, useTranslationEdit, useTranslationNamespace, useUserSettings };
|
package/dist/index.js
CHANGED
|
@@ -169,7 +169,7 @@ var init_deviceId = __esm({
|
|
|
169
169
|
});
|
|
170
170
|
|
|
171
171
|
// src/services/session.service.ts
|
|
172
|
-
var fetchCompanySessions, trackUserSession, fetchUserSessions, isCurrentSessionValid, groupSessionsByUser, getUserLastSeenAt, getUsersLastSeenMap;
|
|
172
|
+
var fetchCompanySessions, trackUserSession, trackUserSessionByRoute, fetchUserSessions, isCurrentSessionValid, groupSessionsByUser, getUserLastSeenAt, getUsersLastSeenMap;
|
|
173
173
|
var init_session_service = __esm({
|
|
174
174
|
"src/services/session.service.ts"() {
|
|
175
175
|
"use strict";
|
|
@@ -274,6 +274,19 @@ var init_session_service = __esm({
|
|
|
274
274
|
{ onConflict: "user_id, device_id" }
|
|
275
275
|
);
|
|
276
276
|
};
|
|
277
|
+
trackUserSessionByRoute = async (supabase, userId, currentUrl) => {
|
|
278
|
+
const deviceId = getDeviceId();
|
|
279
|
+
await supabase.from("user_sessions").upsert(
|
|
280
|
+
{
|
|
281
|
+
user_id: userId,
|
|
282
|
+
device_id: deviceId,
|
|
283
|
+
user_agent: navigator.userAgent,
|
|
284
|
+
url: currentUrl || window.location.href,
|
|
285
|
+
last_seen_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
286
|
+
},
|
|
287
|
+
{ onConflict: "user_id, device_id" }
|
|
288
|
+
);
|
|
289
|
+
};
|
|
277
290
|
fetchUserSessions = async (supabase) => {
|
|
278
291
|
const currentDeviceId = getDeviceId();
|
|
279
292
|
const { data: { user } } = await supabase.auth.getUser();
|
|
@@ -2735,6 +2748,7 @@ __export(index_exports, {
|
|
|
2735
2748
|
AuthProvider: () => AuthProvider,
|
|
2736
2749
|
BreadcrumbProvider: () => BreadcrumbProvider,
|
|
2737
2750
|
ConfirmationProvider: () => ConfirmationProvider,
|
|
2751
|
+
Hooks: () => Hooks,
|
|
2738
2752
|
LocalizationProvider: () => LocalizationProvider,
|
|
2739
2753
|
Providers: () => Providers,
|
|
2740
2754
|
Services: () => Services,
|
|
@@ -4003,6 +4017,7 @@ var Services = {
|
|
|
4003
4017
|
SessionService: {
|
|
4004
4018
|
fetchCompanySessions,
|
|
4005
4019
|
trackUserSession,
|
|
4020
|
+
trackUserSessionByRoute,
|
|
4006
4021
|
fetchUserSessions,
|
|
4007
4022
|
isCurrentSessionValid,
|
|
4008
4023
|
groupSessionsByUser,
|
|
@@ -4010,6 +4025,26 @@ var Services = {
|
|
|
4010
4025
|
getUsersLastSeenMap
|
|
4011
4026
|
}
|
|
4012
4027
|
};
|
|
4028
|
+
|
|
4029
|
+
// src/hooks/useDebounce.ts
|
|
4030
|
+
var import_react25 = require("react");
|
|
4031
|
+
function useDebounce(value, delay = 500) {
|
|
4032
|
+
const [debouncedValue, setDebouncedValue] = (0, import_react25.useState)(value);
|
|
4033
|
+
(0, import_react25.useEffect)(() => {
|
|
4034
|
+
const timer = setTimeout(() => {
|
|
4035
|
+
setDebouncedValue(value);
|
|
4036
|
+
}, delay);
|
|
4037
|
+
return () => {
|
|
4038
|
+
clearTimeout(timer);
|
|
4039
|
+
};
|
|
4040
|
+
}, [value, delay]);
|
|
4041
|
+
return debouncedValue;
|
|
4042
|
+
}
|
|
4043
|
+
|
|
4044
|
+
// src/hooks/index.ts
|
|
4045
|
+
var Hooks = {
|
|
4046
|
+
useDebounce
|
|
4047
|
+
};
|
|
4013
4048
|
// Annotate the CommonJS export names for ESM import in node:
|
|
4014
4049
|
0 && (module.exports = {
|
|
4015
4050
|
AIProvider,
|
|
@@ -4017,6 +4052,7 @@ var Services = {
|
|
|
4017
4052
|
AuthProvider,
|
|
4018
4053
|
BreadcrumbProvider,
|
|
4019
4054
|
ConfirmationProvider,
|
|
4055
|
+
Hooks,
|
|
4020
4056
|
LocalizationProvider,
|
|
4021
4057
|
Providers,
|
|
4022
4058
|
Services,
|
package/dist/index.mjs
CHANGED
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
groupSessionsByUser,
|
|
27
27
|
isCurrentSessionValid,
|
|
28
28
|
trackUserSession,
|
|
29
|
+
trackUserSessionByRoute,
|
|
29
30
|
translationService,
|
|
30
31
|
useAI,
|
|
31
32
|
useAppSettings,
|
|
@@ -39,7 +40,7 @@ import {
|
|
|
39
40
|
useTranslationEdit,
|
|
40
41
|
useTranslationNamespace,
|
|
41
42
|
useUserSettings
|
|
42
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-UA57YNRJ.mjs";
|
|
43
44
|
|
|
44
45
|
// src/UI/components/inputs/TextFieldComponent.tsx
|
|
45
46
|
import { useState } from "react";
|
|
@@ -737,7 +738,7 @@ var EmailInputComponent = ({
|
|
|
737
738
|
import { useState as useState5, useEffect as useEffect2, lazy, Suspense } from "react";
|
|
738
739
|
import { Avatar, Tooltip as Tooltip3, Typography as Typography2 } from "@mui/material";
|
|
739
740
|
import { Fragment as Fragment4, jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
740
|
-
var LazyUserPopover = lazy(() => import("./UserPopoverComponent-
|
|
741
|
+
var LazyUserPopover = lazy(() => import("./UserPopoverComponent-5F4S3X4F.mjs"));
|
|
741
742
|
var getInitials = (name) => {
|
|
742
743
|
if (!name) return "?";
|
|
743
744
|
const parts = name.trim().split(" ");
|
|
@@ -1279,6 +1280,7 @@ var Services = {
|
|
|
1279
1280
|
SessionService: {
|
|
1280
1281
|
fetchCompanySessions,
|
|
1281
1282
|
trackUserSession,
|
|
1283
|
+
trackUserSessionByRoute,
|
|
1282
1284
|
fetchUserSessions,
|
|
1283
1285
|
isCurrentSessionValid,
|
|
1284
1286
|
groupSessionsByUser,
|
|
@@ -1286,12 +1288,33 @@ var Services = {
|
|
|
1286
1288
|
getUsersLastSeenMap
|
|
1287
1289
|
}
|
|
1288
1290
|
};
|
|
1291
|
+
|
|
1292
|
+
// src/hooks/useDebounce.ts
|
|
1293
|
+
import { useEffect as useEffect4, useState as useState8 } from "react";
|
|
1294
|
+
function useDebounce(value, delay = 500) {
|
|
1295
|
+
const [debouncedValue, setDebouncedValue] = useState8(value);
|
|
1296
|
+
useEffect4(() => {
|
|
1297
|
+
const timer = setTimeout(() => {
|
|
1298
|
+
setDebouncedValue(value);
|
|
1299
|
+
}, delay);
|
|
1300
|
+
return () => {
|
|
1301
|
+
clearTimeout(timer);
|
|
1302
|
+
};
|
|
1303
|
+
}, [value, delay]);
|
|
1304
|
+
return debouncedValue;
|
|
1305
|
+
}
|
|
1306
|
+
|
|
1307
|
+
// src/hooks/index.ts
|
|
1308
|
+
var Hooks = {
|
|
1309
|
+
useDebounce
|
|
1310
|
+
};
|
|
1289
1311
|
export {
|
|
1290
1312
|
AIProvider,
|
|
1291
1313
|
AppSettingsProvider,
|
|
1292
1314
|
AuthProvider,
|
|
1293
1315
|
BreadcrumbProvider,
|
|
1294
1316
|
ConfirmationProvider,
|
|
1317
|
+
Hooks,
|
|
1295
1318
|
LocalizationProvider,
|
|
1296
1319
|
Providers,
|
|
1297
1320
|
Services,
|