@strapi/upload 5.55.1 → 5.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/hooks/useAIMetadataAvailability.js +14 -0
- package/dist/admin/hooks/useAIMetadataAvailability.js.map +1 -0
- package/dist/admin/hooks/useAIMetadataAvailability.mjs +12 -0
- package/dist/admin/hooks/useAIMetadataAvailability.mjs.map +1 -0
- package/dist/admin/hooks/useAIMetadataEnabled.js +7 -5
- package/dist/admin/hooks/useAIMetadataEnabled.js.map +1 -1
- package/dist/admin/hooks/useAIMetadataEnabled.mjs +7 -5
- package/dist/admin/hooks/useAIMetadataEnabled.mjs.map +1 -1
- package/dist/admin/hooks/useTracking.js +2 -2
- package/dist/admin/hooks/useTracking.js.map +1 -1
- package/dist/admin/hooks/useTracking.mjs +2 -2
- package/dist/admin/hooks/useTracking.mjs.map +1 -1
- package/dist/admin/legacy/hooks/useAIMetadataAvailability.js +14 -0
- package/dist/admin/legacy/hooks/useAIMetadataAvailability.js.map +1 -0
- package/dist/admin/legacy/hooks/useAIMetadataAvailability.mjs +12 -0
- package/dist/admin/legacy/hooks/useAIMetadataAvailability.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useAIMetadataEnabled.js +23 -0
- package/dist/admin/legacy/hooks/useAIMetadataEnabled.js.map +1 -0
- package/dist/admin/legacy/hooks/useAIMetadataEnabled.mjs +21 -0
- package/dist/admin/legacy/hooks/useAIMetadataEnabled.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useTracking.js +2 -2
- package/dist/admin/legacy/hooks/useTracking.js.map +1 -1
- package/dist/admin/legacy/hooks/useTracking.mjs +2 -2
- package/dist/admin/legacy/hooks/useTracking.mjs.map +1 -1
- package/dist/admin/legacy/pages/App/MediaLibrary.js +4 -4
- package/dist/admin/legacy/pages/App/MediaLibrary.js.map +1 -1
- package/dist/admin/legacy/pages/App/MediaLibrary.mjs +4 -4
- package/dist/admin/legacy/pages/App/MediaLibrary.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/DeleteItemsDialog.js +4 -2
- package/dist/admin/pages/Assets/components/DeleteItemsDialog.js.map +1 -1
- package/dist/admin/pages/Assets/components/DeleteItemsDialog.mjs +4 -2
- package/dist/admin/pages/Assets/components/DeleteItemsDialog.mjs.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.js +2 -2
- package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs +2 -2
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
- package/dist/admin/services/api.js.map +1 -1
- package/dist/admin/services/api.mjs.map +1 -1
- package/dist/admin/src/hooks/useAIMetadataAvailability.d.ts +5 -0
- package/dist/admin/src/hooks/useAIMetadataEnabled.d.ts +5 -3
- package/dist/admin/src/legacy/components/EditAssetDialog/PreviewBox/PreviewComponents.d.ts +2 -2
- package/dist/admin/src/legacy/hooks/useAIMetadataAvailability.d.ts +5 -0
- package/dist/admin/src/legacy/hooks/useAIMetadataEnabled.d.ts +12 -0
- package/dist/admin/src/legacy/hooks/useSettings.d.ts +1 -0
- package/dist/admin/src/pages/Assets/components/ActionsMenuContent.d.ts +2 -2
- package/dist/admin/translations/en.json.js +1 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +1 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/server/bootstrap.js +7 -0
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/server/bootstrap.mjs +7 -0
- package/dist/server/bootstrap.mjs.map +1 -1
- package/dist/server/controllers/admin-folder-file.js +51 -4
- package/dist/server/controllers/admin-folder-file.js.map +1 -1
- package/dist/server/controllers/admin-folder-file.mjs +52 -5
- package/dist/server/controllers/admin-folder-file.mjs.map +1 -1
- package/dist/server/controllers/admin-settings.js +2 -1
- package/dist/server/controllers/admin-settings.js.map +1 -1
- package/dist/server/controllers/admin-settings.mjs +2 -1
- package/dist/server/controllers/admin-settings.mjs.map +1 -1
- package/dist/server/errors.js +12 -0
- package/dist/server/errors.js.map +1 -0
- package/dist/server/errors.mjs +10 -0
- package/dist/server/errors.mjs.map +1 -0
- package/dist/server/services/ai-metadata-provider.js +83 -0
- package/dist/server/services/ai-metadata-provider.js.map +1 -0
- package/dist/server/services/ai-metadata-provider.mjs +61 -0
- package/dist/server/services/ai-metadata-provider.mjs.map +1 -0
- package/dist/server/services/ai-metadata-strapi-managed.js +48 -0
- package/dist/server/services/ai-metadata-strapi-managed.js.map +1 -0
- package/dist/server/services/ai-metadata-strapi-managed.mjs +46 -0
- package/dist/server/services/ai-metadata-strapi-managed.mjs.map +1 -0
- package/dist/server/services/ai-metadata.js +5 -58
- package/dist/server/services/ai-metadata.js.map +1 -1
- package/dist/server/services/ai-metadata.mjs +6 -39
- package/dist/server/services/ai-metadata.mjs.map +1 -1
- package/dist/server/services/folder.js +4 -1
- package/dist/server/services/folder.js.map +1 -1
- package/dist/server/services/folder.mjs +4 -1
- package/dist/server/services/folder.mjs.map +1 -1
- package/dist/server/services/index.js +3 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs +3 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/metrics.js +1 -1
- package/dist/server/services/metrics.js.map +1 -1
- package/dist/server/services/metrics.mjs +1 -1
- package/dist/server/services/metrics.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-folder-file.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-settings.d.ts.map +1 -1
- package/dist/server/src/errors.d.ts +6 -0
- package/dist/server/src/errors.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +6 -1
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/mcp/ambient-instance.d.ts +3 -1
- package/dist/server/src/mcp/ambient-instance.d.ts.map +1 -1
- package/dist/server/src/services/ai-metadata-provider.d.ts +26 -0
- package/dist/server/src/services/ai-metadata-provider.d.ts.map +1 -0
- package/dist/server/src/services/ai-metadata-strapi-managed.d.ts +7 -0
- package/dist/server/src/services/ai-metadata-strapi-managed.d.ts.map +1 -0
- package/dist/server/src/services/ai-metadata.d.ts.map +1 -1
- package/dist/server/src/services/folder.d.ts +5 -2
- package/dist/server/src/services/folder.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +6 -1
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/utils/images.d.ts +2 -2
- package/dist/server/src/utils/images.d.ts.map +1 -1
- package/dist/server/src/utils/index.d.ts +2 -0
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/server/utils/images.js +6 -7
- package/dist/server/utils/images.js.map +1 -1
- package/dist/server/utils/images.mjs +6 -7
- package/dist/server/utils/images.mjs.map +1 -1
- package/dist/server/utils/index.js.map +1 -1
- package/dist/server/utils/index.mjs.map +1 -1
- package/dist/shared/contracts/settings.d.ts +6 -0
- package/package.json +11 -11
- package/dist/admin/legacy/hooks/useAiAvailability.js +0 -22
- package/dist/admin/legacy/hooks/useAiAvailability.js.map +0 -1
- package/dist/admin/legacy/hooks/useAiAvailability.mjs +0 -20
- package/dist/admin/legacy/hooks/useAiAvailability.mjs.map +0 -1
- package/dist/admin/src/legacy/hooks/useAiAvailability.d.ts +0 -4
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var settings = require('../services/settings.js');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Whether the server has an AI metadata provider registered, either the
|
|
7
|
+
* Strapi-managed one or a custom one.
|
|
8
|
+
*/ const useAIMetadataAvailability = ()=>{
|
|
9
|
+
const { data } = settings.useGetUploadSettingsQuery();
|
|
10
|
+
return data?.data?.aiMetadataAvailable === true;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
exports.useAIMetadataAvailability = useAIMetadataAvailability;
|
|
14
|
+
//# sourceMappingURL=useAIMetadataAvailability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAIMetadataAvailability.js","sources":["../../../admin/src/hooks/useAIMetadataAvailability.ts"],"sourcesContent":["import { useGetUploadSettingsQuery } from '../services/settings';\n\n/**\n * Whether the server has an AI metadata provider registered, either the\n * Strapi-managed one or a custom one.\n */\nexport const useAIMetadataAvailability = (): boolean => {\n const { data } = useGetUploadSettingsQuery();\n\n return data?.data?.aiMetadataAvailable === true;\n};\n"],"names":["useAIMetadataAvailability","data","useGetUploadSettingsQuery","aiMetadataAvailable"],"mappings":";;;;AAEA;;;UAIaA,yBAAAA,GAA4B,IAAA;IACvC,MAAM,EAAEC,IAAI,EAAE,GAAGC,kCAAAA,EAAAA;IAEjB,OAAOD,IAAAA,EAAMA,MAAME,mBAAAA,KAAwB,IAAA;AAC7C;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useGetUploadSettingsQuery } from '../services/settings.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Whether the server has an AI metadata provider registered, either the
|
|
5
|
+
* Strapi-managed one or a custom one.
|
|
6
|
+
*/ const useAIMetadataAvailability = ()=>{
|
|
7
|
+
const { data } = useGetUploadSettingsQuery();
|
|
8
|
+
return data?.data?.aiMetadataAvailable === true;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { useAIMetadataAvailability };
|
|
12
|
+
//# sourceMappingURL=useAIMetadataAvailability.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAIMetadataAvailability.mjs","sources":["../../../admin/src/hooks/useAIMetadataAvailability.ts"],"sourcesContent":["import { useGetUploadSettingsQuery } from '../services/settings';\n\n/**\n * Whether the server has an AI metadata provider registered, either the\n * Strapi-managed one or a custom one.\n */\nexport const useAIMetadataAvailability = (): boolean => {\n const { data } = useGetUploadSettingsQuery();\n\n return data?.data?.aiMetadataAvailable === true;\n};\n"],"names":["useAIMetadataAvailability","data","useGetUploadSettingsQuery","aiMetadataAvailable"],"mappings":";;AAEA;;;UAIaA,yBAAAA,GAA4B,IAAA;IACvC,MAAM,EAAEC,IAAI,EAAE,GAAGC,yBAAAA,EAAAA;IAEjB,OAAOD,IAAAA,EAAMA,MAAME,mBAAAA,KAAwB,IAAA;AAC7C;;;;"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var ee = require('@strapi/admin/strapi-admin/ee');
|
|
4
3
|
var constants = require('../shared/constants.js');
|
|
5
4
|
var settings = require('../services/settings.js');
|
|
5
|
+
var useAIMetadataAvailability = require('./useAIMetadataAvailability.js');
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Whether the replace flow will actually regenerate AI metadata, so the UI only
|
|
9
9
|
* promises it when it happens.
|
|
10
10
|
*
|
|
11
11
|
* Two independent gates, both required — `GET /upload/settings` returns the
|
|
12
|
-
* stored `aiMetadata` toggle on its own, which stays `true` (its default)
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* stored `aiMetadata` toggle on its own, which stays `true` (its default) when
|
|
13
|
+
* no AI metadata provider is registered, so the setting alone over-promises.
|
|
14
|
+
* `aiMetadataAvailable` is the server telling us a provider is registered
|
|
15
|
+
* (Strapi-managed or custom). The server's own check (`aiMetadata.isEnabled()`)
|
|
16
|
+
* ANDs the same two conditions.
|
|
15
17
|
*
|
|
16
18
|
* Pass `{ mime }` to add the third gate the replace flow applies: it only
|
|
17
19
|
* regenerates metadata for images the AI provider can read
|
|
@@ -27,7 +29,7 @@ var settings = require('../services/settings.js');
|
|
|
27
29
|
* hook exists to close. `useAIMetadataEnabled({ mime: undefined })` still gates
|
|
28
30
|
* (and fails closed); only an omitted `options` skips the mime check.
|
|
29
31
|
*/ const useAIMetadataEnabled = (options)=>{
|
|
30
|
-
const isAIAvailable =
|
|
32
|
+
const isAIAvailable = useAIMetadataAvailability.useAIMetadataAvailability();
|
|
31
33
|
const { data: settings$1 } = settings.useGetUploadSettingsQuery();
|
|
32
34
|
if (!isAIAvailable || !(settings$1?.data?.aiMetadata ?? false)) {
|
|
33
35
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAIMetadataEnabled.js","sources":["../../../admin/src/hooks/useAIMetadataEnabled.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"useAIMetadataEnabled.js","sources":["../../../admin/src/hooks/useAIMetadataEnabled.ts"],"sourcesContent":["import { isAIMetadataSupportedMime } from '../../../shared/constants';\nimport { useGetUploadSettingsQuery } from '../services/settings';\n\nimport { useAIMetadataAvailability } from './useAIMetadataAvailability';\n\n/**\n * Whether the replace flow will actually regenerate AI metadata, so the UI only\n * promises it when it happens.\n *\n * Two independent gates, both required — `GET /upload/settings` returns the\n * stored `aiMetadata` toggle on its own, which stays `true` (its default) when\n * no AI metadata provider is registered, so the setting alone over-promises.\n * `aiMetadataAvailable` is the server telling us a provider is registered\n * (Strapi-managed or custom). The server's own check (`aiMetadata.isEnabled()`)\n * ANDs the same two conditions.\n *\n * Pass `{ mime }` to add the third gate the replace flow applies: it only\n * regenerates metadata for images the AI provider can read\n * (`admin-upload.replaceFile` → `aiMetadata.processFiles`, which filters on this\n * same allowlist). Promising it for a PDF — or for a GIF, which clears the\n * server's looser `image/*` gate but is skipped by the provider — would describe\n * something that never happens.\n *\n * The argument is an object rather than a bare `mime` so the two intents stay\n * distinguishable: `File.mime` is optional on the contract, so a positional\n * parameter let `useAIMetadataEnabled(asset.mime)` collapse into the ungated\n * call whenever the mime was missing — silently taking the permissive path this\n * hook exists to close. `useAIMetadataEnabled({ mime: undefined })` still gates\n * (and fails closed); only an omitted `options` skips the mime check.\n */\nexport const useAIMetadataEnabled = (options?: { mime?: string | null }): boolean => {\n const isAIAvailable = useAIMetadataAvailability();\n const { data: settings } = useGetUploadSettingsQuery();\n\n if (!isAIAvailable || !(settings?.data?.aiMetadata ?? false)) {\n return false;\n }\n\n return options === undefined ? true : isAIMetadataSupportedMime(options.mime);\n};\n"],"names":["useAIMetadataEnabled","options","isAIAvailable","useAIMetadataAvailability","data","settings","useGetUploadSettingsQuery","aiMetadata","undefined","isAIMetadataSupportedMime","mime"],"mappings":";;;;;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;IAyBO,MAAMA,oBAAAA,GAAuB,CAACC,OAAAA,GAAAA;AACnC,IAAA,MAAMC,aAAAA,GAAgBC,mDAAAA,EAAAA;AACtB,IAAA,MAAM,EAAEC,IAAAA,EAAMC,UAAQ,EAAE,GAAGC,kCAAAA,EAAAA;IAE3B,IAAI,CAACJ,iBAAiB,EAAEG,YAAUD,IAAAA,EAAMG,UAAAA,IAAc,KAAI,CAAA,EAAI;QAC5D,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,OAAON,OAAAA,KAAYO,SAAAA,GAAY,IAAA,GAAOC,mCAAAA,CAA0BR,QAAQS,IAAI,CAAA;AAC9E;;;;"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import { useAIAvailability } from '@strapi/admin/strapi-admin/ee';
|
|
2
1
|
import { isAIMetadataSupportedMime } from '../shared/constants.mjs';
|
|
3
2
|
import { useGetUploadSettingsQuery } from '../services/settings.mjs';
|
|
3
|
+
import { useAIMetadataAvailability } from './useAIMetadataAvailability.mjs';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Whether the replace flow will actually regenerate AI metadata, so the UI only
|
|
7
7
|
* promises it when it happens.
|
|
8
8
|
*
|
|
9
9
|
* Two independent gates, both required — `GET /upload/settings` returns the
|
|
10
|
-
* stored `aiMetadata` toggle on its own, which stays `true` (its default)
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* stored `aiMetadata` toggle on its own, which stays `true` (its default) when
|
|
11
|
+
* no AI metadata provider is registered, so the setting alone over-promises.
|
|
12
|
+
* `aiMetadataAvailable` is the server telling us a provider is registered
|
|
13
|
+
* (Strapi-managed or custom). The server's own check (`aiMetadata.isEnabled()`)
|
|
14
|
+
* ANDs the same two conditions.
|
|
13
15
|
*
|
|
14
16
|
* Pass `{ mime }` to add the third gate the replace flow applies: it only
|
|
15
17
|
* regenerates metadata for images the AI provider can read
|
|
@@ -25,7 +27,7 @@ import { useGetUploadSettingsQuery } from '../services/settings.mjs';
|
|
|
25
27
|
* hook exists to close. `useAIMetadataEnabled({ mime: undefined })` still gates
|
|
26
28
|
* (and fails closed); only an omitted `options` skips the mime check.
|
|
27
29
|
*/ const useAIMetadataEnabled = (options)=>{
|
|
28
|
-
const isAIAvailable =
|
|
30
|
+
const isAIAvailable = useAIMetadataAvailability();
|
|
29
31
|
const { data: settings } = useGetUploadSettingsQuery();
|
|
30
32
|
if (!isAIAvailable || !(settings?.data?.aiMetadata ?? false)) {
|
|
31
33
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAIMetadataEnabled.mjs","sources":["../../../admin/src/hooks/useAIMetadataEnabled.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"useAIMetadataEnabled.mjs","sources":["../../../admin/src/hooks/useAIMetadataEnabled.ts"],"sourcesContent":["import { isAIMetadataSupportedMime } from '../../../shared/constants';\nimport { useGetUploadSettingsQuery } from '../services/settings';\n\nimport { useAIMetadataAvailability } from './useAIMetadataAvailability';\n\n/**\n * Whether the replace flow will actually regenerate AI metadata, so the UI only\n * promises it when it happens.\n *\n * Two independent gates, both required — `GET /upload/settings` returns the\n * stored `aiMetadata` toggle on its own, which stays `true` (its default) when\n * no AI metadata provider is registered, so the setting alone over-promises.\n * `aiMetadataAvailable` is the server telling us a provider is registered\n * (Strapi-managed or custom). The server's own check (`aiMetadata.isEnabled()`)\n * ANDs the same two conditions.\n *\n * Pass `{ mime }` to add the third gate the replace flow applies: it only\n * regenerates metadata for images the AI provider can read\n * (`admin-upload.replaceFile` → `aiMetadata.processFiles`, which filters on this\n * same allowlist). Promising it for a PDF — or for a GIF, which clears the\n * server's looser `image/*` gate but is skipped by the provider — would describe\n * something that never happens.\n *\n * The argument is an object rather than a bare `mime` so the two intents stay\n * distinguishable: `File.mime` is optional on the contract, so a positional\n * parameter let `useAIMetadataEnabled(asset.mime)` collapse into the ungated\n * call whenever the mime was missing — silently taking the permissive path this\n * hook exists to close. `useAIMetadataEnabled({ mime: undefined })` still gates\n * (and fails closed); only an omitted `options` skips the mime check.\n */\nexport const useAIMetadataEnabled = (options?: { mime?: string | null }): boolean => {\n const isAIAvailable = useAIMetadataAvailability();\n const { data: settings } = useGetUploadSettingsQuery();\n\n if (!isAIAvailable || !(settings?.data?.aiMetadata ?? false)) {\n return false;\n }\n\n return options === undefined ? true : isAIMetadataSupportedMime(options.mime);\n};\n"],"names":["useAIMetadataEnabled","options","isAIAvailable","useAIMetadataAvailability","data","settings","useGetUploadSettingsQuery","aiMetadata","undefined","isAIMetadataSupportedMime","mime"],"mappings":";;;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;IAyBO,MAAMA,oBAAAA,GAAuB,CAACC,OAAAA,GAAAA;AACnC,IAAA,MAAMC,aAAAA,GAAgBC,yBAAAA,EAAAA;AACtB,IAAA,MAAM,EAAEC,IAAAA,EAAMC,QAAQ,EAAE,GAAGC,yBAAAA,EAAAA;IAE3B,IAAI,CAACJ,iBAAiB,EAAEG,UAAUD,IAAAA,EAAMG,UAAAA,IAAc,KAAI,CAAA,EAAI;QAC5D,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,OAAON,OAAAA,KAAYO,SAAAA,GAAY,IAAA,GAAOC,yBAAAA,CAA0BR,QAAQS,IAAI,CAAA;AAC9E;;;;"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var strapiAdmin = require('@strapi/admin/strapi-admin');
|
|
5
|
-
var ee = require('@strapi/admin/strapi-admin/ee');
|
|
6
5
|
var settings = require('../services/settings.js');
|
|
6
|
+
var useAIMetadataAvailability = require('./useAIMetadataAvailability.js');
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Media Library version tag stamped on every event fired from the current
|
|
@@ -30,7 +30,7 @@ var settings = require('../services/settings.js');
|
|
|
30
30
|
*/ const useTracking = ()=>{
|
|
31
31
|
const { trackUsage: trackStrapiUsage } = strapiAdmin.useTracking();
|
|
32
32
|
const { data } = settings.useGetUploadSettingsQuery();
|
|
33
|
-
const isAiAvailable =
|
|
33
|
+
const isAiAvailable = useAIMetadataAvailability.useAIMetadataAvailability();
|
|
34
34
|
// Memoised so consumers can safely list `trackUsage` in effect deps (the
|
|
35
35
|
// search-input debounce commit does) without re-firing every render.
|
|
36
36
|
const trackUsage = React.useCallback((event, properties)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTracking.js","sources":["../../../admin/src/hooks/useTracking.ts"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { useTracking as useStrapiTracking, type TrackingEvent } from '@strapi/admin/strapi-admin';\nimport {
|
|
1
|
+
{"version":3,"file":"useTracking.js","sources":["../../../admin/src/hooks/useTracking.ts"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { useTracking as useStrapiTracking, type TrackingEvent } from '@strapi/admin/strapi-admin';\n\nimport { useGetUploadSettingsQuery } from '../services/settings';\n\nimport { useAIMetadataAvailability } from './useAIMetadataAvailability';\n\n/**\n * Media Library version tag stamped on every event fired from the current\n * Media Library. Events from `legacy/` omit it, so analytics can filter new\n * usage from the old plan while both trees emit the SAME event names. Bump\n * this if a future revamp ever needs its own bucket.\n */\nexport const MEDIA_LIBRARY_VERSION = 'v2';\n\n/**\n * `location` value for every new Media Library event. The new tree is the\n * standalone Media Library page, which the legacy plan tags `'upload'` (as\n * opposed to `'content-manager'` for the asset-picker modal). Kept identical so\n * migrated events line up with the legacy ones on the `location` axis.\n */\nexport const MEDIA_LIBRARY_LOCATION = 'upload';\n\n/**\n * Tracking wrapper scoped to the new Media Library. Mirrors the legacy\n * `admin/src/hooks/useTracking` — it forwards to the admin `trackUsage` and\n * injects `isAiMediaLibraryConfigured` when AI is available — and additionally\n * stamps `mediaLibraryVersion` on every event so the migrated plan stays\n * distinguishable from the legacy one.\n *\n * The cast mirrors the legacy wrapper: these two properties are cross-cutting\n * media-tracking metadata that the admin `TrackingEvent` type does not (and\n * should not) enumerate per event.\n */\nexport const useTracking = () => {\n const { trackUsage: trackStrapiUsage } = useStrapiTracking();\n const { data } = useGetUploadSettingsQuery();\n const isAiAvailable = useAIMetadataAvailability();\n\n // Memoised so consumers can safely list `trackUsage` in effect deps (the\n // search-input debounce commit does) without re-firing every render.\n const trackUsage = useCallback(\n <TEvent extends TrackingEvent>(event: TEvent['name'], properties?: TEvent['properties']) => {\n return trackStrapiUsage(event, {\n ...properties,\n ...(isAiAvailable ? { isAiMediaLibraryConfigured: Boolean(data?.data?.aiMetadata) } : {}),\n mediaLibraryVersion: MEDIA_LIBRARY_VERSION,\n } as TEvent['properties']);\n },\n [trackStrapiUsage, isAiAvailable, data]\n );\n\n return { trackUsage };\n};\n"],"names":["MEDIA_LIBRARY_VERSION","MEDIA_LIBRARY_LOCATION","useTracking","trackUsage","trackStrapiUsage","useStrapiTracking","data","useGetUploadSettingsQuery","isAiAvailable","useAIMetadataAvailability","useCallback","event","properties","isAiMediaLibraryConfigured","Boolean","aiMetadata","mediaLibraryVersion"],"mappings":";;;;;;;AAQA;;;;;IAMO,MAAMA,qBAAAA,GAAwB;AAErC;;;;;IAMO,MAAMC,sBAAAA,GAAyB;AAEtC;;;;;;;;;;UAWaC,WAAAA,GAAc,IAAA;AACzB,IAAA,MAAM,EAAEC,UAAAA,EAAYC,gBAAgB,EAAE,GAAGC,uBAAAA,EAAAA;IACzC,MAAM,EAAEC,IAAI,EAAE,GAAGC,kCAAAA,EAAAA;AACjB,IAAA,MAAMC,aAAAA,GAAgBC,mDAAAA,EAAAA;;;IAItB,MAAMN,UAAAA,GAAaO,iBAAAA,CACjB,CAA+BC,KAAAA,EAAuBC,UAAAA,GAAAA;AACpD,QAAA,OAAOR,iBAAiBO,KAAAA,EAAO;AAC7B,YAAA,GAAGC,UAAU;AACb,YAAA,GAAIJ,aAAAA,GAAgB;gBAAEK,0BAAAA,EAA4BC,OAAAA,CAAQR,MAAMA,IAAAA,EAAMS,UAAAA;AAAY,aAAA,GAAI,EAAE;YACxFC,mBAAAA,EAAqBhB;AACvB,SAAA,CAAA;IACF,CAAA,EACA;AAACI,QAAAA,gBAAAA;AAAkBI,QAAAA,aAAAA;AAAeF,QAAAA;AAAK,KAAA,CAAA;IAGzC,OAAO;AAAEH,QAAAA;AAAW,KAAA;AACtB;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useCallback } from 'react';
|
|
2
2
|
import { useTracking as useTracking$1 } from '@strapi/admin/strapi-admin';
|
|
3
|
-
import { useAIAvailability } from '@strapi/admin/strapi-admin/ee';
|
|
4
3
|
import { useGetUploadSettingsQuery } from '../services/settings.mjs';
|
|
4
|
+
import { useAIMetadataAvailability } from './useAIMetadataAvailability.mjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Media Library version tag stamped on every event fired from the current
|
|
@@ -28,7 +28,7 @@ import { useGetUploadSettingsQuery } from '../services/settings.mjs';
|
|
|
28
28
|
*/ const useTracking = ()=>{
|
|
29
29
|
const { trackUsage: trackStrapiUsage } = useTracking$1();
|
|
30
30
|
const { data } = useGetUploadSettingsQuery();
|
|
31
|
-
const isAiAvailable =
|
|
31
|
+
const isAiAvailable = useAIMetadataAvailability();
|
|
32
32
|
// Memoised so consumers can safely list `trackUsage` in effect deps (the
|
|
33
33
|
// search-input debounce commit does) without re-firing every render.
|
|
34
34
|
const trackUsage = useCallback((event, properties)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTracking.mjs","sources":["../../../admin/src/hooks/useTracking.ts"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { useTracking as useStrapiTracking, type TrackingEvent } from '@strapi/admin/strapi-admin';\nimport {
|
|
1
|
+
{"version":3,"file":"useTracking.mjs","sources":["../../../admin/src/hooks/useTracking.ts"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { useTracking as useStrapiTracking, type TrackingEvent } from '@strapi/admin/strapi-admin';\n\nimport { useGetUploadSettingsQuery } from '../services/settings';\n\nimport { useAIMetadataAvailability } from './useAIMetadataAvailability';\n\n/**\n * Media Library version tag stamped on every event fired from the current\n * Media Library. Events from `legacy/` omit it, so analytics can filter new\n * usage from the old plan while both trees emit the SAME event names. Bump\n * this if a future revamp ever needs its own bucket.\n */\nexport const MEDIA_LIBRARY_VERSION = 'v2';\n\n/**\n * `location` value for every new Media Library event. The new tree is the\n * standalone Media Library page, which the legacy plan tags `'upload'` (as\n * opposed to `'content-manager'` for the asset-picker modal). Kept identical so\n * migrated events line up with the legacy ones on the `location` axis.\n */\nexport const MEDIA_LIBRARY_LOCATION = 'upload';\n\n/**\n * Tracking wrapper scoped to the new Media Library. Mirrors the legacy\n * `admin/src/hooks/useTracking` — it forwards to the admin `trackUsage` and\n * injects `isAiMediaLibraryConfigured` when AI is available — and additionally\n * stamps `mediaLibraryVersion` on every event so the migrated plan stays\n * distinguishable from the legacy one.\n *\n * The cast mirrors the legacy wrapper: these two properties are cross-cutting\n * media-tracking metadata that the admin `TrackingEvent` type does not (and\n * should not) enumerate per event.\n */\nexport const useTracking = () => {\n const { trackUsage: trackStrapiUsage } = useStrapiTracking();\n const { data } = useGetUploadSettingsQuery();\n const isAiAvailable = useAIMetadataAvailability();\n\n // Memoised so consumers can safely list `trackUsage` in effect deps (the\n // search-input debounce commit does) without re-firing every render.\n const trackUsage = useCallback(\n <TEvent extends TrackingEvent>(event: TEvent['name'], properties?: TEvent['properties']) => {\n return trackStrapiUsage(event, {\n ...properties,\n ...(isAiAvailable ? { isAiMediaLibraryConfigured: Boolean(data?.data?.aiMetadata) } : {}),\n mediaLibraryVersion: MEDIA_LIBRARY_VERSION,\n } as TEvent['properties']);\n },\n [trackStrapiUsage, isAiAvailable, data]\n );\n\n return { trackUsage };\n};\n"],"names":["MEDIA_LIBRARY_VERSION","MEDIA_LIBRARY_LOCATION","useTracking","trackUsage","trackStrapiUsage","useStrapiTracking","data","useGetUploadSettingsQuery","isAiAvailable","useAIMetadataAvailability","useCallback","event","properties","isAiMediaLibraryConfigured","Boolean","aiMetadata","mediaLibraryVersion"],"mappings":";;;;;AAQA;;;;;IAMO,MAAMA,qBAAAA,GAAwB;AAErC;;;;;IAMO,MAAMC,sBAAAA,GAAyB;AAEtC;;;;;;;;;;UAWaC,WAAAA,GAAc,IAAA;AACzB,IAAA,MAAM,EAAEC,UAAAA,EAAYC,gBAAgB,EAAE,GAAGC,aAAAA,EAAAA;IACzC,MAAM,EAAEC,IAAI,EAAE,GAAGC,yBAAAA,EAAAA;AACjB,IAAA,MAAMC,aAAAA,GAAgBC,yBAAAA,EAAAA;;;IAItB,MAAMN,UAAAA,GAAaO,WAAAA,CACjB,CAA+BC,KAAAA,EAAuBC,UAAAA,GAAAA;AACpD,QAAA,OAAOR,iBAAiBO,KAAAA,EAAO;AAC7B,YAAA,GAAGC,UAAU;AACb,YAAA,GAAIJ,aAAAA,GAAgB;gBAAEK,0BAAAA,EAA4BC,OAAAA,CAAQR,MAAMA,IAAAA,EAAMS,UAAAA;AAAY,aAAA,GAAI,EAAE;YACxFC,mBAAAA,EAAqBhB;AACvB,SAAA,CAAA;IACF,CAAA,EACA;AAACI,QAAAA,gBAAAA;AAAkBI,QAAAA,aAAAA;AAAeF,QAAAA;AAAK,KAAA,CAAA;IAGzC,OAAO;AAAEH,QAAAA;AAAW,KAAA;AACtB;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var useSettings = require('./useSettings.js');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Whether the server has an AI metadata provider registered, either the
|
|
7
|
+
* Strapi-managed one or a custom one.
|
|
8
|
+
*/ const useAIMetadataAvailability = ()=>{
|
|
9
|
+
const { data } = useSettings.useSettings();
|
|
10
|
+
return data?.aiMetadataAvailable === true;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
exports.useAIMetadataAvailability = useAIMetadataAvailability;
|
|
14
|
+
//# sourceMappingURL=useAIMetadataAvailability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAIMetadataAvailability.js","sources":["../../../../admin/src/legacy/hooks/useAIMetadataAvailability.ts"],"sourcesContent":["import { useSettings } from './useSettings';\n\n/**\n * Whether the server has an AI metadata provider registered, either the\n * Strapi-managed one or a custom one.\n */\nexport const useAIMetadataAvailability = (): boolean => {\n const { data } = useSettings();\n\n return data?.aiMetadataAvailable === true;\n};\n"],"names":["useAIMetadataAvailability","data","useSettings","aiMetadataAvailable"],"mappings":";;;;AAEA;;;UAIaA,yBAAAA,GAA4B,IAAA;IACvC,MAAM,EAAEC,IAAI,EAAE,GAAGC,uBAAAA,EAAAA;AAEjB,IAAA,OAAOD,MAAME,mBAAAA,KAAwB,IAAA;AACvC;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useSettings } from './useSettings.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Whether the server has an AI metadata provider registered, either the
|
|
5
|
+
* Strapi-managed one or a custom one.
|
|
6
|
+
*/ const useAIMetadataAvailability = ()=>{
|
|
7
|
+
const { data } = useSettings();
|
|
8
|
+
return data?.aiMetadataAvailable === true;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { useAIMetadataAvailability };
|
|
12
|
+
//# sourceMappingURL=useAIMetadataAvailability.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAIMetadataAvailability.mjs","sources":["../../../../admin/src/legacy/hooks/useAIMetadataAvailability.ts"],"sourcesContent":["import { useSettings } from './useSettings';\n\n/**\n * Whether the server has an AI metadata provider registered, either the\n * Strapi-managed one or a custom one.\n */\nexport const useAIMetadataAvailability = (): boolean => {\n const { data } = useSettings();\n\n return data?.aiMetadataAvailable === true;\n};\n"],"names":["useAIMetadataAvailability","data","useSettings","aiMetadataAvailable"],"mappings":";;AAEA;;;UAIaA,yBAAAA,GAA4B,IAAA;IACvC,MAAM,EAAEC,IAAI,EAAE,GAAGC,WAAAA,EAAAA;AAEjB,IAAA,OAAOD,MAAME,mBAAAA,KAAwB,IAAA;AACvC;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var useAIMetadataAvailability = require('./useAIMetadataAvailability.js');
|
|
4
|
+
var useSettings = require('./useSettings.js');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Whether the Media Library will actually generate AI metadata: a provider is
|
|
8
|
+
* registered (`useAIMetadataAvailability`) and the stored `aiMetadata` toggle
|
|
9
|
+
* is on. The server ANDs the same two conditions in `aiMetadata.isEnabled()`.
|
|
10
|
+
*
|
|
11
|
+
* `status` is the settings query status, so the page can show its skeleton
|
|
12
|
+
* while the answer is still unknown.
|
|
13
|
+
*/ const useAIMetadataEnabled = ()=>{
|
|
14
|
+
const { status, data } = useSettings.useSettings();
|
|
15
|
+
const isAvailable = useAIMetadataAvailability.useAIMetadataAvailability();
|
|
16
|
+
return {
|
|
17
|
+
status,
|
|
18
|
+
isEnabled: isAvailable && data?.aiMetadata === true
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
exports.useAIMetadataEnabled = useAIMetadataEnabled;
|
|
23
|
+
//# sourceMappingURL=useAIMetadataEnabled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAIMetadataEnabled.js","sources":["../../../../admin/src/legacy/hooks/useAIMetadataEnabled.ts"],"sourcesContent":["import { useAIMetadataAvailability } from './useAIMetadataAvailability';\nimport { useSettings } from './useSettings';\n\n/**\n * Whether the Media Library will actually generate AI metadata: a provider is\n * registered (`useAIMetadataAvailability`) and the stored `aiMetadata` toggle\n * is on. The server ANDs the same two conditions in `aiMetadata.isEnabled()`.\n *\n * `status` is the settings query status, so the page can show its skeleton\n * while the answer is still unknown.\n */\nexport const useAIMetadataEnabled = () => {\n const { status, data } = useSettings();\n const isAvailable = useAIMetadataAvailability();\n\n return { status, isEnabled: isAvailable && data?.aiMetadata === true };\n};\n"],"names":["useAIMetadataEnabled","status","data","useSettings","isAvailable","useAIMetadataAvailability","isEnabled","aiMetadata"],"mappings":";;;;;AAGA;;;;;;;UAQaA,oBAAAA,GAAuB,IAAA;AAClC,IAAA,MAAM,EAAEC,MAAM,EAAEC,IAAI,EAAE,GAAGC,uBAAAA,EAAAA;AACzB,IAAA,MAAMC,WAAAA,GAAcC,mDAAAA,EAAAA;IAEpB,OAAO;AAAEJ,QAAAA,MAAAA;QAAQK,SAAAA,EAAWF,WAAAA,IAAeF,MAAMK,UAAAA,KAAe;AAAK,KAAA;AACvE;;;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { useAIMetadataAvailability } from './useAIMetadataAvailability.mjs';
|
|
2
|
+
import { useSettings } from './useSettings.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Whether the Media Library will actually generate AI metadata: a provider is
|
|
6
|
+
* registered (`useAIMetadataAvailability`) and the stored `aiMetadata` toggle
|
|
7
|
+
* is on. The server ANDs the same two conditions in `aiMetadata.isEnabled()`.
|
|
8
|
+
*
|
|
9
|
+
* `status` is the settings query status, so the page can show its skeleton
|
|
10
|
+
* while the answer is still unknown.
|
|
11
|
+
*/ const useAIMetadataEnabled = ()=>{
|
|
12
|
+
const { status, data } = useSettings();
|
|
13
|
+
const isAvailable = useAIMetadataAvailability();
|
|
14
|
+
return {
|
|
15
|
+
status,
|
|
16
|
+
isEnabled: isAvailable && data?.aiMetadata === true
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export { useAIMetadataEnabled };
|
|
21
|
+
//# sourceMappingURL=useAIMetadataEnabled.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAIMetadataEnabled.mjs","sources":["../../../../admin/src/legacy/hooks/useAIMetadataEnabled.ts"],"sourcesContent":["import { useAIMetadataAvailability } from './useAIMetadataAvailability';\nimport { useSettings } from './useSettings';\n\n/**\n * Whether the Media Library will actually generate AI metadata: a provider is\n * registered (`useAIMetadataAvailability`) and the stored `aiMetadata` toggle\n * is on. The server ANDs the same two conditions in `aiMetadata.isEnabled()`.\n *\n * `status` is the settings query status, so the page can show its skeleton\n * while the answer is still unknown.\n */\nexport const useAIMetadataEnabled = () => {\n const { status, data } = useSettings();\n const isAvailable = useAIMetadataAvailability();\n\n return { status, isEnabled: isAvailable && data?.aiMetadata === true };\n};\n"],"names":["useAIMetadataEnabled","status","data","useSettings","isAvailable","useAIMetadataAvailability","isEnabled","aiMetadata"],"mappings":";;;AAGA;;;;;;;UAQaA,oBAAAA,GAAuB,IAAA;AAClC,IAAA,MAAM,EAAEC,MAAM,EAAEC,IAAI,EAAE,GAAGC,WAAAA,EAAAA;AACzB,IAAA,MAAMC,WAAAA,GAAcC,yBAAAA,EAAAA;IAEpB,OAAO;AAAEJ,QAAAA,MAAAA;QAAQK,SAAAA,EAAWF,WAAAA,IAAeF,MAAMK,UAAAA,KAAe;AAAK,KAAA;AACvE;;;;"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var strapiAdmin = require('@strapi/admin/strapi-admin');
|
|
4
|
-
var
|
|
4
|
+
var useAIMetadataAvailability = require('./useAIMetadataAvailability.js');
|
|
5
5
|
var useSettings = require('./useSettings.js');
|
|
6
6
|
|
|
7
7
|
const useTracking = ()=>{
|
|
8
8
|
const { trackUsage: trackStrapiUsage } = strapiAdmin.useTracking();
|
|
9
9
|
const { data } = useSettings.useSettings();
|
|
10
|
-
const isAiAvailable =
|
|
10
|
+
const isAiAvailable = useAIMetadataAvailability.useAIMetadataAvailability();
|
|
11
11
|
const trackUsage = (event, properties)=>{
|
|
12
12
|
return trackStrapiUsage(event, {
|
|
13
13
|
...properties,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTracking.js","sources":["../../../../admin/src/legacy/hooks/useTracking.ts"],"sourcesContent":["import { useTracking as useStrapiTracking, TrackingEvent } from '@strapi/admin/strapi-admin';\nimport {
|
|
1
|
+
{"version":3,"file":"useTracking.js","sources":["../../../../admin/src/legacy/hooks/useTracking.ts"],"sourcesContent":["import { useTracking as useStrapiTracking, TrackingEvent } from '@strapi/admin/strapi-admin';\n\nimport { useAIMetadataAvailability } from './useAIMetadataAvailability';\nimport { useSettings } from './useSettings';\n\nexport const useTracking = () => {\n const { trackUsage: trackStrapiUsage } = useStrapiTracking();\n const { data } = useSettings();\n const isAiAvailable = useAIMetadataAvailability();\n\n const trackUsage = <TEvent extends TrackingEvent>(\n event: TEvent['name'],\n properties?: TEvent['properties']\n ) => {\n return trackStrapiUsage(event, {\n ...properties,\n ...(isAiAvailable ? { isAiMediaLibraryConfigured: Boolean(data?.aiMetadata) } : {}),\n } as TEvent['properties']);\n };\n\n return { trackUsage };\n};\n"],"names":["useTracking","trackUsage","trackStrapiUsage","useStrapiTracking","data","useSettings","isAiAvailable","useAIMetadataAvailability","event","properties","isAiMediaLibraryConfigured","Boolean","aiMetadata"],"mappings":";;;;;;MAKaA,WAAAA,GAAc,IAAA;AACzB,IAAA,MAAM,EAAEC,UAAAA,EAAYC,gBAAgB,EAAE,GAAGC,uBAAAA,EAAAA;IACzC,MAAM,EAAEC,IAAI,EAAE,GAAGC,uBAAAA,EAAAA;AACjB,IAAA,MAAMC,aAAAA,GAAgBC,mDAAAA,EAAAA;IAEtB,MAAMN,UAAAA,GAAa,CACjBO,KAAAA,EACAC,UAAAA,GAAAA;AAEA,QAAA,OAAOP,iBAAiBM,KAAAA,EAAO;AAC7B,YAAA,GAAGC,UAAU;AACb,YAAA,GAAIH,aAAAA,GAAgB;AAAEI,gBAAAA,0BAAAA,EAA4BC,QAAQP,IAAAA,EAAMQ,UAAAA;AAAY,aAAA,GAAI;AAClF,SAAA,CAAA;AACF,IAAA,CAAA;IAEA,OAAO;AAAEX,QAAAA;AAAW,KAAA;AACtB;;;;"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { useTracking as useTracking$1 } from '@strapi/admin/strapi-admin';
|
|
2
|
-
import {
|
|
2
|
+
import { useAIMetadataAvailability } from './useAIMetadataAvailability.mjs';
|
|
3
3
|
import { useSettings } from './useSettings.mjs';
|
|
4
4
|
|
|
5
5
|
const useTracking = ()=>{
|
|
6
6
|
const { trackUsage: trackStrapiUsage } = useTracking$1();
|
|
7
7
|
const { data } = useSettings();
|
|
8
|
-
const isAiAvailable =
|
|
8
|
+
const isAiAvailable = useAIMetadataAvailability();
|
|
9
9
|
const trackUsage = (event, properties)=>{
|
|
10
10
|
return trackStrapiUsage(event, {
|
|
11
11
|
...properties,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTracking.mjs","sources":["../../../../admin/src/legacy/hooks/useTracking.ts"],"sourcesContent":["import { useTracking as useStrapiTracking, TrackingEvent } from '@strapi/admin/strapi-admin';\nimport {
|
|
1
|
+
{"version":3,"file":"useTracking.mjs","sources":["../../../../admin/src/legacy/hooks/useTracking.ts"],"sourcesContent":["import { useTracking as useStrapiTracking, TrackingEvent } from '@strapi/admin/strapi-admin';\n\nimport { useAIMetadataAvailability } from './useAIMetadataAvailability';\nimport { useSettings } from './useSettings';\n\nexport const useTracking = () => {\n const { trackUsage: trackStrapiUsage } = useStrapiTracking();\n const { data } = useSettings();\n const isAiAvailable = useAIMetadataAvailability();\n\n const trackUsage = <TEvent extends TrackingEvent>(\n event: TEvent['name'],\n properties?: TEvent['properties']\n ) => {\n return trackStrapiUsage(event, {\n ...properties,\n ...(isAiAvailable ? { isAiMediaLibraryConfigured: Boolean(data?.aiMetadata) } : {}),\n } as TEvent['properties']);\n };\n\n return { trackUsage };\n};\n"],"names":["useTracking","trackUsage","trackStrapiUsage","useStrapiTracking","data","useSettings","isAiAvailable","useAIMetadataAvailability","event","properties","isAiMediaLibraryConfigured","Boolean","aiMetadata"],"mappings":";;;;MAKaA,WAAAA,GAAc,IAAA;AACzB,IAAA,MAAM,EAAEC,UAAAA,EAAYC,gBAAgB,EAAE,GAAGC,aAAAA,EAAAA;IACzC,MAAM,EAAEC,IAAI,EAAE,GAAGC,WAAAA,EAAAA;AACjB,IAAA,MAAMC,aAAAA,GAAgBC,yBAAAA,EAAAA;IAEtB,MAAMN,UAAAA,GAAa,CACjBO,KAAAA,EACAC,UAAAA,GAAAA;AAEA,QAAA,OAAOP,iBAAiBM,KAAAA,EAAO;AAC7B,YAAA,GAAGC,UAAU;AACb,YAAA,GAAIH,aAAAA,GAAgB;AAAEI,gBAAAA,0BAAAA,EAA4BC,QAAQP,IAAAA,EAAMQ,UAAAA;AAAY,aAAA,GAAI;AAClF,SAAA,CAAA;AACF,IAAA,CAAA;IAEA,OAAO;AAAEX,QAAAA;AAAW,KAAA;AACtB;;;;"}
|
|
@@ -22,7 +22,7 @@ var FolderGridList = require('../../components/FolderGridList/FolderGridList.js'
|
|
|
22
22
|
var SortPicker = require('../../components/SortPicker/SortPicker.js');
|
|
23
23
|
var TableList = require('../../components/TableList/TableList.js');
|
|
24
24
|
var UploadAssetDialog = require('../../components/UploadAssetDialog/UploadAssetDialog.js');
|
|
25
|
-
var
|
|
25
|
+
var useAIMetadataEnabled = require('../../hooks/useAIMetadataEnabled.js');
|
|
26
26
|
var useAssets = require('../../hooks/useAssets.js');
|
|
27
27
|
var useFolder = require('../../hooks/useFolder.js');
|
|
28
28
|
var useFolders = require('../../hooks/useFolders.js');
|
|
@@ -80,7 +80,7 @@ const ActionContainer = styledComponents.styled(designSystem.Box)`
|
|
|
80
80
|
const MediaLibrary = ()=>{
|
|
81
81
|
const navigate = reactRouterDom.useNavigate();
|
|
82
82
|
const { canRead, canCreate, canUpdate, canCopyLink, canDownload, canConfigureView, isLoading: permissionsLoading } = useMediaLibraryPermissions.useMediaLibraryPermissions();
|
|
83
|
-
const { isEnabled: isAiEnabled, status:
|
|
83
|
+
const { isEnabled: isAiEnabled, status: aiMetadataStatus } = useAIMetadataEnabled.useAIMetadataEnabled();
|
|
84
84
|
const currentFolderToEditRef = React__namespace.useRef();
|
|
85
85
|
const { formatMessage } = reactIntl.useIntl();
|
|
86
86
|
const { pathname } = reactRouterDom.useLocation();
|
|
@@ -121,7 +121,7 @@ const MediaLibrary = ()=>{
|
|
|
121
121
|
})) || [];
|
|
122
122
|
const assetCount = assets?.length ?? 0;
|
|
123
123
|
const totalAssetCount = assetsData?.pagination?.total;
|
|
124
|
-
const isLoading = isCurrentFolderLoading || foldersLoading || permissionsLoading || assetsLoading ||
|
|
124
|
+
const isLoading = isCurrentFolderLoading || foldersLoading || permissionsLoading || assetsLoading || aiMetadataStatus === 'loading';
|
|
125
125
|
const [showUploadAssetDialog, setShowUploadAssetDialog] = React__namespace.useState(false);
|
|
126
126
|
const [showEditFolderDialog, setShowEditFolderDialog] = React__namespace.useState(false);
|
|
127
127
|
const [assetToEdit, setAssetToEdit] = React__namespace.useState(undefined);
|
|
@@ -190,7 +190,7 @@ const MediaLibrary = ()=>{
|
|
|
190
190
|
if (isLoading) {
|
|
191
191
|
return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
|
|
192
192
|
}
|
|
193
|
-
if (assetsError || foldersError ||
|
|
193
|
+
if (assetsError || foldersError || aiMetadataStatus === 'error') {
|
|
194
194
|
return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
|
|
195
195
|
}
|
|
196
196
|
return /*#__PURE__*/ jsxRuntime.jsxs(strapiAdmin.Layouts.Root, {
|