@jmruthers/pace-core 0.6.2 → 0.6.3
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/CHANGELOG.md +45 -0
- package/cursor-rules/00-pace-core-compliance.mdc +34 -2
- package/dist/{AuthService-BPvc3Ka0.d.ts → AuthService-Cb34EQs3.d.ts} +9 -1
- package/dist/{DataTable-TPTKCX4D.js → DataTable-THFPBKTP.js} +9 -8
- package/dist/{PublicPageProvider-DC6kCaqf.d.ts → PublicPageProvider-DEMpysFR.d.ts} +45 -67
- package/dist/{UnifiedAuthProvider-CVcTjx-d.d.ts → UnifiedAuthProvider-CKvHP1MK.d.ts} +1 -8
- package/dist/{UnifiedAuthProvider-CH6Z342H.js → UnifiedAuthProvider-KAGUYQ4J.js} +5 -4
- package/dist/{api-MVVQZLJI.js → api-IAGWF3ZG.js} +10 -10
- package/dist/{audit-B5P6FFIR.js → audit-V53FV5AG.js} +2 -2
- package/dist/{chunk-SFZUDBL5.js → chunk-2T2IG7T7.js} +70 -56
- package/dist/chunk-2T2IG7T7.js.map +1 -0
- package/dist/{chunk-MMZ7JXPU.js → chunk-6Z7LTB3D.js} +13 -21
- package/dist/{chunk-MMZ7JXPU.js.map → chunk-6Z7LTB3D.js.map} +1 -1
- package/dist/{chunk-6J4GEEJR.js → chunk-CNCQDFLN.js} +53 -27
- package/dist/chunk-CNCQDFLN.js.map +1 -0
- package/dist/chunk-DGUM43GV.js +11 -0
- package/dist/{chunk-EHMR7VYL.js → chunk-DWUBLJJM.js} +361 -187
- package/dist/chunk-DWUBLJJM.js.map +1 -0
- package/dist/{chunk-2UOI2FG5.js → chunk-HFZBI76P.js} +4 -4
- package/dist/{chunk-F2IMUDXZ.js → chunk-M7MPQISP.js} +2 -2
- package/dist/{chunk-3XC4CPTD.js → chunk-PQBSKX33.js} +244 -5727
- package/dist/chunk-PQBSKX33.js.map +1 -0
- package/dist/chunk-QRPVRXYT.js +226 -0
- package/dist/chunk-QRPVRXYT.js.map +1 -0
- package/dist/{chunk-24UVZUZG.js → chunk-RWEBCB47.js} +129 -387
- package/dist/chunk-RWEBCB47.js.map +1 -0
- package/dist/{chunk-XWQCNGTQ.js → chunk-YDQHOZNA.js} +173 -79
- package/dist/chunk-YDQHOZNA.js.map +1 -0
- package/dist/{chunk-NECFR5MM.js → chunk-ZNIWI3UC.js} +562 -644
- package/dist/chunk-ZNIWI3UC.js.map +1 -0
- package/dist/components.d.ts +2 -2
- package/dist/components.js +12 -13
- package/dist/contextValidator-3JNZKUTX.js +9 -0
- package/dist/contextValidator-3JNZKUTX.js.map +1 -0
- package/dist/eslint-rules/pace-core-compliance.cjs +106 -0
- package/dist/hooks.d.ts +2 -2
- package/dist/hooks.js +7 -6
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.js +21 -16
- package/dist/index.js.map +1 -1
- package/dist/providers.d.ts +3 -3
- package/dist/providers.js +4 -3
- package/dist/rbac/index.d.ts +67 -27
- package/dist/rbac/index.js +15 -8
- package/dist/styles/index.js +1 -1
- package/dist/theming/runtime.js +1 -1
- package/dist/types.js +1 -1
- package/dist/{usePublicRouteParams-1oMokgLF.d.ts → usePublicRouteParams-i3qtoBgg.d.ts} +7 -16
- package/dist/utils.js +5 -7
- package/dist/utils.js.map +1 -1
- package/docs/api/README.md +14 -16
- package/docs/api/modules.md +3796 -2513
- package/docs/components/context-selector.md +126 -0
- package/docs/migration/RBAC_SCOPE_MIGRATION.md +385 -0
- package/docs/pace-mint-fix-auto-selection.md +218 -0
- package/docs/pace-mint-rbac-setup.md +391 -0
- package/docs/rbac/secure-client-protection.md +330 -0
- package/package.json +3 -3
- package/scripts/audit/core/checks/compliance.cjs +72 -0
- package/scripts/audit/core/checks/dependencies.cjs +559 -28
- package/scripts/audit/core/checks/documentation.cjs +68 -3
- package/scripts/audit/core/checks/environment.cjs +2 -14
- package/scripts/audit/core/checks/error-handling.cjs +47 -6
- package/src/components/ContextSelector/ContextSelector.tsx +384 -0
- package/src/components/ContextSelector/index.ts +3 -0
- package/src/components/DataTable/components/RowComponent.tsx +19 -19
- package/src/components/DataTable/components/UnifiedTableBody.tsx +2 -2
- package/src/components/DataTable/hooks/useDataTablePermissions.ts +8 -6
- package/src/components/Dialog/Dialog.tsx +29 -1
- package/src/components/FileDisplay/FileDisplay.tsx +42 -10
- package/src/components/Header/Header.test.tsx +43 -73
- package/src/components/Header/Header.tsx +44 -45
- package/src/components/PaceAppLayout/PaceAppLayout.integration.test.tsx +10 -19
- package/src/components/PaceAppLayout/PaceAppLayout.performance.test.tsx +2 -2
- package/src/components/PaceAppLayout/PaceAppLayout.security.test.tsx +5 -5
- package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +9 -9
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +135 -33
- package/src/components/PaceAppLayout/README.md +14 -17
- package/src/components/PaceAppLayout/test-setup.tsx +2 -2
- package/src/components/index.ts +5 -5
- package/src/eslint-rules/pace-core-compliance.cjs +106 -0
- package/src/hooks/__tests__/useAppConfig.unit.test.ts +4 -98
- package/src/hooks/useAppConfig.ts +15 -30
- package/src/hooks/useFileDisplay.ts +77 -50
- package/src/index.ts +4 -5
- package/src/providers/services/AuthServiceProvider.tsx +17 -7
- package/src/providers/services/EventServiceProvider.tsx +33 -5
- package/src/providers/services/UnifiedAuthProvider.tsx +90 -134
- package/src/rbac/__tests__/adapters.comprehensive.test.tsx +1 -1
- package/src/rbac/adapters.tsx +2 -2
- package/src/rbac/api.test.ts +59 -51
- package/src/rbac/api.ts +178 -132
- package/src/rbac/components/PagePermissionGuard.tsx +38 -10
- package/src/rbac/hooks/__tests__/useSecureSupabase.test.ts +32 -21
- package/src/rbac/hooks/permissions/useAccessLevel.ts +1 -1
- package/src/rbac/hooks/permissions/useCan.ts +41 -11
- package/src/rbac/hooks/permissions/useHasAllPermissions.ts +1 -1
- package/src/rbac/hooks/permissions/useHasAnyPermission.ts +1 -1
- package/src/rbac/hooks/permissions/useMultiplePermissions.ts +1 -1
- package/src/rbac/hooks/useCan.test.ts +0 -9
- package/src/rbac/hooks/useRBAC.test.ts +1 -5
- package/src/rbac/hooks/useRBAC.ts +36 -37
- package/src/rbac/hooks/useResolvedScope.test.ts +120 -35
- package/src/rbac/hooks/useResolvedScope.ts +35 -40
- package/src/rbac/hooks/useSecureSupabase.ts +7 -7
- package/src/rbac/index.ts +7 -0
- package/src/rbac/secureClient.test.ts +22 -18
- package/src/rbac/secureClient.ts +103 -16
- package/src/rbac/security.ts +0 -17
- package/src/rbac/types.ts +1 -0
- package/src/rbac/utils/__tests__/contextValidator.test.ts +64 -86
- package/src/rbac/utils/clientSecurity.ts +93 -0
- package/src/rbac/utils/contextValidator.ts +77 -168
- package/src/services/AuthService.ts +39 -7
- package/src/services/EventService.ts +186 -54
- package/src/services/OrganisationService.ts +81 -14
- package/src/services/__tests__/EventService.test.ts +1 -2
- package/src/services/base/BaseService.ts +3 -0
- package/src/utils/dynamic/dynamicUtils.ts +7 -4
- package/dist/chunk-24UVZUZG.js.map +0 -1
- package/dist/chunk-3XC4CPTD.js.map +0 -1
- package/dist/chunk-6J4GEEJR.js.map +0 -1
- package/dist/chunk-7D4SUZUM.js +0 -38
- package/dist/chunk-EHMR7VYL.js.map +0 -1
- package/dist/chunk-NECFR5MM.js.map +0 -1
- package/dist/chunk-SFZUDBL5.js.map +0 -1
- package/dist/chunk-XWQCNGTQ.js.map +0 -1
- package/docs/api/classes/ColumnFactory.md +0 -243
- package/docs/api/classes/InvalidScopeError.md +0 -73
- package/docs/api/classes/Logger.md +0 -178
- package/docs/api/classes/MissingUserContextError.md +0 -66
- package/docs/api/classes/OrganisationContextRequiredError.md +0 -66
- package/docs/api/classes/PermissionDeniedError.md +0 -73
- package/docs/api/classes/RBACAuditManager.md +0 -297
- package/docs/api/classes/RBACCache.md +0 -322
- package/docs/api/classes/RBACEngine.md +0 -171
- package/docs/api/classes/RBACError.md +0 -76
- package/docs/api/classes/RBACNotInitializedError.md +0 -66
- package/docs/api/classes/SecureSupabaseClient.md +0 -163
- package/docs/api/classes/StorageUtils.md +0 -328
- package/docs/api/enums/FileCategory.md +0 -184
- package/docs/api/enums/LogLevel.md +0 -54
- package/docs/api/enums/RBACErrorCode.md +0 -228
- package/docs/api/enums/RPCFunction.md +0 -118
- package/docs/api/interfaces/AddressFieldProps.md +0 -241
- package/docs/api/interfaces/AddressFieldRef.md +0 -94
- package/docs/api/interfaces/AggregateConfig.md +0 -43
- package/docs/api/interfaces/AutocompleteOptions.md +0 -75
- package/docs/api/interfaces/AvatarProps.md +0 -128
- package/docs/api/interfaces/BadgeProps.md +0 -34
- package/docs/api/interfaces/ButtonProps.md +0 -56
- package/docs/api/interfaces/CalendarProps.md +0 -73
- package/docs/api/interfaces/CardProps.md +0 -69
- package/docs/api/interfaces/ColorPalette.md +0 -7
- package/docs/api/interfaces/ColorShade.md +0 -66
- package/docs/api/interfaces/ComplianceResult.md +0 -30
- package/docs/api/interfaces/DataAccessRecord.md +0 -96
- package/docs/api/interfaces/DataRecord.md +0 -11
- package/docs/api/interfaces/DataTableAction.md +0 -252
- package/docs/api/interfaces/DataTableColumn.md +0 -504
- package/docs/api/interfaces/DataTableProps.md +0 -625
- package/docs/api/interfaces/DataTableToolbarButton.md +0 -96
- package/docs/api/interfaces/DatabaseComplianceResult.md +0 -85
- package/docs/api/interfaces/DatabaseIssue.md +0 -41
- package/docs/api/interfaces/EmptyStateConfig.md +0 -61
- package/docs/api/interfaces/EnhancedNavigationMenuProps.md +0 -235
- package/docs/api/interfaces/ErrorBoundaryProps.md +0 -147
- package/docs/api/interfaces/ErrorBoundaryProviderProps.md +0 -36
- package/docs/api/interfaces/ErrorBoundaryState.md +0 -75
- package/docs/api/interfaces/EventAppRoleData.md +0 -71
- package/docs/api/interfaces/ExportColumn.md +0 -90
- package/docs/api/interfaces/ExportOptions.md +0 -126
- package/docs/api/interfaces/FileDisplayProps.md +0 -249
- package/docs/api/interfaces/FileMetadata.md +0 -129
- package/docs/api/interfaces/FileReference.md +0 -118
- package/docs/api/interfaces/FileSizeLimits.md +0 -7
- package/docs/api/interfaces/FileUploadOptions.md +0 -139
- package/docs/api/interfaces/FileUploadProps.md +0 -296
- package/docs/api/interfaces/FooterProps.md +0 -107
- package/docs/api/interfaces/FormFieldProps.md +0 -166
- package/docs/api/interfaces/FormProps.md +0 -113
- package/docs/api/interfaces/GrantEventAppRoleParams.md +0 -122
- package/docs/api/interfaces/InactivityWarningModalProps.md +0 -115
- package/docs/api/interfaces/InputProps.md +0 -56
- package/docs/api/interfaces/LabelProps.md +0 -107
- package/docs/api/interfaces/LoggerConfig.md +0 -62
- package/docs/api/interfaces/LoginFormProps.md +0 -187
- package/docs/api/interfaces/NavigationAccessRecord.md +0 -107
- package/docs/api/interfaces/NavigationContextType.md +0 -164
- package/docs/api/interfaces/NavigationGuardProps.md +0 -139
- package/docs/api/interfaces/NavigationItem.md +0 -120
- package/docs/api/interfaces/NavigationMenuProps.md +0 -221
- package/docs/api/interfaces/NavigationProviderProps.md +0 -117
- package/docs/api/interfaces/Organisation.md +0 -140
- package/docs/api/interfaces/OrganisationContextType.md +0 -388
- package/docs/api/interfaces/OrganisationMembership.md +0 -140
- package/docs/api/interfaces/OrganisationProviderProps.md +0 -76
- package/docs/api/interfaces/OrganisationSecurityError.md +0 -62
- package/docs/api/interfaces/PaceAppLayoutProps.md +0 -409
- package/docs/api/interfaces/PaceLoginPageProps.md +0 -49
- package/docs/api/interfaces/PageAccessRecord.md +0 -85
- package/docs/api/interfaces/PagePermissionContextType.md +0 -140
- package/docs/api/interfaces/PagePermissionGuardProps.md +0 -153
- package/docs/api/interfaces/PagePermissionProviderProps.md +0 -119
- package/docs/api/interfaces/PaletteData.md +0 -41
- package/docs/api/interfaces/ParsedAddress.md +0 -120
- package/docs/api/interfaces/PermissionEnforcerProps.md +0 -153
- package/docs/api/interfaces/ProgressProps.md +0 -42
- package/docs/api/interfaces/ProtectedRouteProps.md +0 -78
- package/docs/api/interfaces/PublicPageFooterProps.md +0 -112
- package/docs/api/interfaces/PublicPageHeaderProps.md +0 -125
- package/docs/api/interfaces/PublicPageLayoutProps.md +0 -185
- package/docs/api/interfaces/QuickFix.md +0 -52
- package/docs/api/interfaces/RBACAccessValidateParams.md +0 -52
- package/docs/api/interfaces/RBACAccessValidateResult.md +0 -41
- package/docs/api/interfaces/RBACAuditLogParams.md +0 -85
- package/docs/api/interfaces/RBACAuditLogResult.md +0 -52
- package/docs/api/interfaces/RBACConfig.md +0 -133
- package/docs/api/interfaces/RBACContext.md +0 -52
- package/docs/api/interfaces/RBACLogger.md +0 -112
- package/docs/api/interfaces/RBACPageAccessCheckParams.md +0 -74
- package/docs/api/interfaces/RBACPerformanceMetrics.md +0 -138
- package/docs/api/interfaces/RBACPermissionCheckParams.md +0 -74
- package/docs/api/interfaces/RBACPermissionCheckResult.md +0 -52
- package/docs/api/interfaces/RBACPermissionsGetParams.md +0 -63
- package/docs/api/interfaces/RBACPermissionsGetResult.md +0 -63
- package/docs/api/interfaces/RBACResult.md +0 -58
- package/docs/api/interfaces/RBACRoleGrantParams.md +0 -63
- package/docs/api/interfaces/RBACRoleGrantResult.md +0 -52
- package/docs/api/interfaces/RBACRoleRevokeParams.md +0 -63
- package/docs/api/interfaces/RBACRoleRevokeResult.md +0 -52
- package/docs/api/interfaces/RBACRoleValidateParams.md +0 -52
- package/docs/api/interfaces/RBACRoleValidateResult.md +0 -63
- package/docs/api/interfaces/RBACRolesListParams.md +0 -52
- package/docs/api/interfaces/RBACRolesListResult.md +0 -74
- package/docs/api/interfaces/RBACSessionTrackParams.md +0 -74
- package/docs/api/interfaces/RBACSessionTrackResult.md +0 -52
- package/docs/api/interfaces/ResourcePermissions.md +0 -155
- package/docs/api/interfaces/RevokeEventAppRoleParams.md +0 -100
- package/docs/api/interfaces/RoleBasedRouterContextType.md +0 -151
- package/docs/api/interfaces/RoleBasedRouterProps.md +0 -156
- package/docs/api/interfaces/RoleManagementResult.md +0 -52
- package/docs/api/interfaces/RouteAccessRecord.md +0 -107
- package/docs/api/interfaces/RouteConfig.md +0 -134
- package/docs/api/interfaces/RuntimeComplianceResult.md +0 -55
- package/docs/api/interfaces/SecureDataContextType.md +0 -168
- package/docs/api/interfaces/SecureDataProviderProps.md +0 -132
- package/docs/api/interfaces/SessionRestorationLoaderProps.md +0 -34
- package/docs/api/interfaces/SetupIssue.md +0 -41
- package/docs/api/interfaces/StorageConfig.md +0 -41
- package/docs/api/interfaces/StorageFileInfo.md +0 -74
- package/docs/api/interfaces/StorageFileMetadata.md +0 -151
- package/docs/api/interfaces/StorageListOptions.md +0 -99
- package/docs/api/interfaces/StorageListResult.md +0 -41
- package/docs/api/interfaces/StorageUploadOptions.md +0 -101
- package/docs/api/interfaces/StorageUploadResult.md +0 -63
- package/docs/api/interfaces/StorageUrlOptions.md +0 -60
- package/docs/api/interfaces/StyleImport.md +0 -19
- package/docs/api/interfaces/SwitchProps.md +0 -34
- package/docs/api/interfaces/TabsContentProps.md +0 -9
- package/docs/api/interfaces/TabsListProps.md +0 -9
- package/docs/api/interfaces/TabsProps.md +0 -9
- package/docs/api/interfaces/TabsTriggerProps.md +0 -50
- package/docs/api/interfaces/TextareaProps.md +0 -53
- package/docs/api/interfaces/ToastActionElement.md +0 -12
- package/docs/api/interfaces/ToastProps.md +0 -9
- package/docs/api/interfaces/UnifiedAuthContextType.md +0 -823
- package/docs/api/interfaces/UnifiedAuthProviderProps.md +0 -173
- package/docs/api/interfaces/UseFormDialogOptions.md +0 -62
- package/docs/api/interfaces/UseFormDialogReturn.md +0 -117
- package/docs/api/interfaces/UseInactivityTrackerOptions.md +0 -138
- package/docs/api/interfaces/UseInactivityTrackerReturn.md +0 -123
- package/docs/api/interfaces/UsePublicEventLogoOptions.md +0 -87
- package/docs/api/interfaces/UsePublicEventLogoReturn.md +0 -84
- package/docs/api/interfaces/UsePublicEventOptions.md +0 -34
- package/docs/api/interfaces/UsePublicEventReturn.md +0 -71
- package/docs/api/interfaces/UsePublicFileDisplayOptions.md +0 -47
- package/docs/api/interfaces/UsePublicFileDisplayReturn.md +0 -123
- package/docs/api/interfaces/UsePublicRouteParamsReturn.md +0 -97
- package/docs/api/interfaces/UseResolvedScopeOptions.md +0 -47
- package/docs/api/interfaces/UseResolvedScopeReturn.md +0 -47
- package/docs/api/interfaces/UseResourcePermissionsOptions.md +0 -34
- package/docs/api/interfaces/UserEventAccess.md +0 -121
- package/docs/api/interfaces/UserMenuProps.md +0 -88
- package/docs/api/interfaces/UserProfile.md +0 -63
- package/src/components/EventSelector/EventSelector.test.tsx +0 -720
- package/src/components/EventSelector/EventSelector.tsx +0 -423
- package/src/components/EventSelector/index.ts +0 -3
- package/src/components/OrganisationSelector/OrganisationSelector.test.tsx +0 -784
- package/src/components/OrganisationSelector/OrganisationSelector.tsx +0 -327
- package/src/components/OrganisationSelector/index.ts +0 -9
- /package/dist/{DataTable-TPTKCX4D.js.map → DataTable-THFPBKTP.js.map} +0 -0
- /package/dist/{UnifiedAuthProvider-CH6Z342H.js.map → UnifiedAuthProvider-KAGUYQ4J.js.map} +0 -0
- /package/dist/{api-MVVQZLJI.js.map → api-IAGWF3ZG.js.map} +0 -0
- /package/dist/{audit-B5P6FFIR.js.map → audit-V53FV5AG.js.map} +0 -0
- /package/dist/{chunk-7D4SUZUM.js.map → chunk-DGUM43GV.js.map} +0 -0
- /package/dist/{chunk-2UOI2FG5.js.map → chunk-HFZBI76P.js.map} +0 -0
- /package/dist/{chunk-F2IMUDXZ.js.map → chunk-M7MPQISP.js.map} +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useEvents
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-6Z7LTB3D.js";
|
|
4
4
|
import {
|
|
5
5
|
isSuperAdmin
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RWEBCB47.js";
|
|
7
7
|
import {
|
|
8
8
|
assertAppId
|
|
9
9
|
} from "./chunk-QXHPKYJV.js";
|
|
@@ -1210,7 +1210,7 @@ function getPublicFileDisplayCacheStats() {
|
|
|
1210
1210
|
}
|
|
1211
1211
|
|
|
1212
1212
|
// src/hooks/useFileDisplay.ts
|
|
1213
|
-
import { useState as useState4, useEffect as useEffect5, useCallback as useCallback4 } from "react";
|
|
1213
|
+
import { useState as useState4, useEffect as useEffect5, useCallback as useCallback4, useRef as useRef3 } from "react";
|
|
1214
1214
|
|
|
1215
1215
|
// src/utils/file-reference/index.ts
|
|
1216
1216
|
var log3 = createLogger("FileReferenceService");
|
|
@@ -1691,14 +1691,20 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
|
|
|
1691
1691
|
const [fileCount, setFileCount] = useState4(0);
|
|
1692
1692
|
const [isLoading, setIsLoading] = useState4(false);
|
|
1693
1693
|
const [error, setError] = useState4(null);
|
|
1694
|
+
const isMountedRef = useRef3(true);
|
|
1695
|
+
const safeSetState = (setter, value) => {
|
|
1696
|
+
if (isMountedRef.current) {
|
|
1697
|
+
setter(value);
|
|
1698
|
+
}
|
|
1699
|
+
};
|
|
1694
1700
|
const fetchFiles = useCallback4(async () => {
|
|
1695
1701
|
if (!table_name || !record_id || !supabase) {
|
|
1696
|
-
setFileUrl
|
|
1697
|
-
setFileReference
|
|
1698
|
-
setFileReferences
|
|
1699
|
-
setFileUrls
|
|
1700
|
-
setFileCount
|
|
1701
|
-
setIsLoading
|
|
1702
|
+
safeSetState(setFileUrl, null);
|
|
1703
|
+
safeSetState(setFileReference, null);
|
|
1704
|
+
safeSetState(setFileReferences, []);
|
|
1705
|
+
safeSetState(setFileUrls, /* @__PURE__ */ new Map());
|
|
1706
|
+
safeSetState(setFileCount, 0);
|
|
1707
|
+
safeSetState(setIsLoading, false);
|
|
1702
1708
|
return;
|
|
1703
1709
|
}
|
|
1704
1710
|
if (organisation_id) {
|
|
@@ -1721,31 +1727,31 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
|
|
|
1721
1727
|
expiresIn: 3600
|
|
1722
1728
|
});
|
|
1723
1729
|
const regeneratedUrl = signedUrlResult?.url || null;
|
|
1724
|
-
setFileUrl
|
|
1725
|
-
setFileReference
|
|
1726
|
-
setFileReferences
|
|
1727
|
-
setFileUrls
|
|
1728
|
-
setFileCount
|
|
1729
|
-
setIsLoading
|
|
1730
|
-
setError
|
|
1730
|
+
safeSetState(setFileUrl, regeneratedUrl);
|
|
1731
|
+
safeSetState(setFileReference, cachedData.fileReference);
|
|
1732
|
+
safeSetState(setFileReferences, cachedData.fileReferences || []);
|
|
1733
|
+
safeSetState(setFileUrls, cachedData.fileUrls || /* @__PURE__ */ new Map());
|
|
1734
|
+
safeSetState(setFileCount, cachedData.fileCount || 0);
|
|
1735
|
+
safeSetState(setIsLoading, false);
|
|
1736
|
+
safeSetState(setError, null);
|
|
1731
1737
|
return;
|
|
1732
1738
|
} catch (err) {
|
|
1733
1739
|
logger.warn("useFileDisplay", "Failed to regenerate signed URL from cache, falling back to fetch:", err);
|
|
1734
1740
|
}
|
|
1735
1741
|
}
|
|
1736
|
-
setFileUrl
|
|
1737
|
-
setFileReference
|
|
1738
|
-
setFileReferences
|
|
1739
|
-
setFileUrls
|
|
1740
|
-
setFileCount
|
|
1741
|
-
setIsLoading
|
|
1742
|
-
setError
|
|
1742
|
+
safeSetState(setFileUrl, cachedData.fileUrl || null);
|
|
1743
|
+
safeSetState(setFileReference, cachedData.fileReference || null);
|
|
1744
|
+
safeSetState(setFileReferences, cachedData.fileReferences || []);
|
|
1745
|
+
safeSetState(setFileUrls, cachedData.fileUrls || /* @__PURE__ */ new Map());
|
|
1746
|
+
safeSetState(setFileCount, cachedData.fileCount || 0);
|
|
1747
|
+
safeSetState(setIsLoading, false);
|
|
1748
|
+
safeSetState(setError, null);
|
|
1743
1749
|
return;
|
|
1744
1750
|
}
|
|
1745
1751
|
}
|
|
1746
1752
|
try {
|
|
1747
|
-
setIsLoading
|
|
1748
|
-
setError
|
|
1753
|
+
safeSetState(setIsLoading, true);
|
|
1754
|
+
safeSetState(setError, null);
|
|
1749
1755
|
const service = createFileReferenceService(supabase);
|
|
1750
1756
|
let files = [];
|
|
1751
1757
|
const shouldSearchBothScopes = organisation_id === void 0;
|
|
@@ -1943,11 +1949,11 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
|
|
|
1943
1949
|
}
|
|
1944
1950
|
}
|
|
1945
1951
|
if (files.length === 0) {
|
|
1946
|
-
setFileUrl
|
|
1947
|
-
setFileReference
|
|
1948
|
-
setFileReferences
|
|
1949
|
-
setFileUrls
|
|
1950
|
-
setFileCount
|
|
1952
|
+
safeSetState(setFileUrl, null);
|
|
1953
|
+
safeSetState(setFileReference, null);
|
|
1954
|
+
safeSetState(setFileReferences, []);
|
|
1955
|
+
safeSetState(setFileUrls, /* @__PURE__ */ new Map());
|
|
1956
|
+
safeSetState(setFileCount, 0);
|
|
1951
1957
|
if (enableCache) {
|
|
1952
1958
|
authenticatedFileCache.set(cacheKey, {
|
|
1953
1959
|
data: { fileUrl: null, fileReference: null, fileReferences: [], fileUrls: /* @__PURE__ */ new Map(), fileCount: 0 },
|
|
@@ -1958,11 +1964,11 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
|
|
|
1958
1964
|
}
|
|
1959
1965
|
return;
|
|
1960
1966
|
}
|
|
1961
|
-
setFileReferences
|
|
1962
|
-
setFileCount
|
|
1967
|
+
safeSetState(setFileReferences, files);
|
|
1968
|
+
safeSetState(setFileCount, files.length);
|
|
1963
1969
|
if (category && files.length > 0) {
|
|
1964
1970
|
const firstFile = files[0];
|
|
1965
|
-
setFileReference
|
|
1971
|
+
safeSetState(setFileReference, firstFile);
|
|
1966
1972
|
let url = null;
|
|
1967
1973
|
if (firstFile.is_public) {
|
|
1968
1974
|
url = getPublicUrl(supabase, firstFile.file_path, true);
|
|
@@ -1982,7 +1988,7 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
|
|
|
1982
1988
|
});
|
|
1983
1989
|
}
|
|
1984
1990
|
}
|
|
1985
|
-
setFileUrl
|
|
1991
|
+
safeSetState(setFileUrl, url);
|
|
1986
1992
|
} else {
|
|
1987
1993
|
const urlMap = await generateFileUrlsBatch(supabase, files, {
|
|
1988
1994
|
appName: "pace-core",
|
|
@@ -1990,9 +1996,9 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
|
|
|
1990
1996
|
userId: organisation_id ? void 0 : record_id,
|
|
1991
1997
|
expiresIn: 3600
|
|
1992
1998
|
});
|
|
1993
|
-
setFileUrls
|
|
1994
|
-
setFileReference
|
|
1995
|
-
setFileUrl
|
|
1999
|
+
safeSetState(setFileUrls, urlMap);
|
|
2000
|
+
safeSetState(setFileReference, null);
|
|
2001
|
+
safeSetState(setFileUrl, null);
|
|
1996
2002
|
}
|
|
1997
2003
|
if (enableCache) {
|
|
1998
2004
|
let cacheData = {
|
|
@@ -2030,28 +2036,36 @@ function useFileDisplay(table_name, record_id, organisation_id, category, option
|
|
|
2030
2036
|
} catch (err) {
|
|
2031
2037
|
logger.error("useFileDisplay", "Error fetching files:", err);
|
|
2032
2038
|
const error2 = err instanceof Error ? err : new Error("Unknown error occurred");
|
|
2033
|
-
setError
|
|
2034
|
-
setFileUrl
|
|
2035
|
-
setFileReference
|
|
2036
|
-
setFileReferences
|
|
2037
|
-
setFileUrls
|
|
2038
|
-
setFileCount
|
|
2039
|
+
safeSetState(setError, error2);
|
|
2040
|
+
safeSetState(setFileUrl, null);
|
|
2041
|
+
safeSetState(setFileReference, null);
|
|
2042
|
+
safeSetState(setFileReferences, []);
|
|
2043
|
+
safeSetState(setFileUrls, /* @__PURE__ */ new Map());
|
|
2044
|
+
safeSetState(setFileCount, 0);
|
|
2039
2045
|
} finally {
|
|
2040
|
-
setIsLoading
|
|
2046
|
+
safeSetState(setIsLoading, false);
|
|
2041
2047
|
}
|
|
2042
2048
|
}, [table_name, record_id, organisation_id, category, supabase, cacheTtl, enableCache]);
|
|
2043
2049
|
useEffect5(() => {
|
|
2050
|
+
isMountedRef.current = true;
|
|
2044
2051
|
if (table_name && record_id && supabase) {
|
|
2045
|
-
fetchFiles()
|
|
2052
|
+
fetchFiles().catch((err) => {
|
|
2053
|
+
if (isMountedRef.current) {
|
|
2054
|
+
safeSetState(setError, err instanceof Error ? err : new Error("Unknown error"));
|
|
2055
|
+
}
|
|
2056
|
+
});
|
|
2046
2057
|
} else {
|
|
2047
|
-
setFileUrl
|
|
2048
|
-
setFileReference
|
|
2049
|
-
setFileReferences
|
|
2050
|
-
setFileUrls
|
|
2051
|
-
setFileCount
|
|
2052
|
-
setIsLoading
|
|
2053
|
-
setError
|
|
2058
|
+
safeSetState(setFileUrl, null);
|
|
2059
|
+
safeSetState(setFileReference, null);
|
|
2060
|
+
safeSetState(setFileReferences, []);
|
|
2061
|
+
safeSetState(setFileUrls, /* @__PURE__ */ new Map());
|
|
2062
|
+
safeSetState(setFileCount, 0);
|
|
2063
|
+
safeSetState(setIsLoading, false);
|
|
2064
|
+
safeSetState(setError, null);
|
|
2054
2065
|
}
|
|
2066
|
+
return () => {
|
|
2067
|
+
isMountedRef.current = false;
|
|
2068
|
+
};
|
|
2055
2069
|
}, [table_name, record_id, organisation_id, supabase]);
|
|
2056
2070
|
const refetch = useCallback4(async () => {
|
|
2057
2071
|
if (!table_name || !record_id || !supabase) return;
|
|
@@ -2143,11 +2157,11 @@ function useEventTheme(event) {
|
|
|
2143
2157
|
}
|
|
2144
2158
|
|
|
2145
2159
|
// src/hooks/usePreventTabReload.ts
|
|
2146
|
-
import { useEffect as useEffect7, useRef as
|
|
2160
|
+
import { useEffect as useEffect7, useRef as useRef4 } from "react";
|
|
2147
2161
|
function usePreventTabReload(options = {}) {
|
|
2148
2162
|
const { enabled = true, gracePeriodMs = 2e3 } = options;
|
|
2149
|
-
const isRestoringFromCacheRef =
|
|
2150
|
-
const gracePeriodTimeoutRef =
|
|
2163
|
+
const isRestoringFromCacheRef = useRef4(false);
|
|
2164
|
+
const gracePeriodTimeoutRef = useRef4(null);
|
|
2151
2165
|
useEffect7(() => {
|
|
2152
2166
|
if (!enabled || typeof window === "undefined") return;
|
|
2153
2167
|
const handlePageShow = (event) => {
|
|
@@ -2220,4 +2234,4 @@ export {
|
|
|
2220
2234
|
useEventTheme,
|
|
2221
2235
|
usePreventTabReload
|
|
2222
2236
|
};
|
|
2223
|
-
//# sourceMappingURL=chunk-
|
|
2237
|
+
//# sourceMappingURL=chunk-2T2IG7T7.js.map
|