@strapi/content-manager 0.0.0-experimental.9c5778c9200404fcee94d5a0fc88da5e4376b82c → 0.0.0-experimental.9c7de54d8ce77e13047fc15ada33f937a068f1f2
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/_chunks/{ComponentConfigurationPage-CpBFh6_r.mjs → ComponentConfigurationPage-CIjXcRAB.mjs} +4 -4
- package/dist/_chunks/{ComponentConfigurationPage-CpBFh6_r.mjs.map → ComponentConfigurationPage-CIjXcRAB.mjs.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-_zF8p6CY.js → ComponentConfigurationPage-gsCd80MU.js} +4 -4
- package/dist/_chunks/{ComponentConfigurationPage-_zF8p6CY.js.map → ComponentConfigurationPage-gsCd80MU.js.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-CE_yavTi.mjs → EditConfigurationPage-BglmD_BF.mjs} +4 -4
- package/dist/_chunks/{EditConfigurationPage-CE_yavTi.mjs.map → EditConfigurationPage-BglmD_BF.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-_aG2DJSU.js → EditConfigurationPage-DHDQKBzw.js} +4 -4
- package/dist/_chunks/{EditConfigurationPage-_aG2DJSU.js.map → EditConfigurationPage-DHDQKBzw.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-G9uNzwYL.js → EditViewPage-C4iTxUPU.js} +15 -5
- package/dist/_chunks/EditViewPage-C4iTxUPU.js.map +1 -0
- package/dist/_chunks/{EditViewPage-DeTn7rAF.mjs → EditViewPage-CiwVPMaK.mjs} +15 -5
- package/dist/_chunks/EditViewPage-CiwVPMaK.mjs.map +1 -0
- package/dist/_chunks/{Field-CnCKhI1R.mjs → Field-DIjL1b5d.mjs} +70 -26
- package/dist/_chunks/Field-DIjL1b5d.mjs.map +1 -0
- package/dist/_chunks/{Field-DDHUWEfV.js → Field-DhXEK8y1.js} +70 -26
- package/dist/_chunks/Field-DhXEK8y1.js.map +1 -0
- package/dist/_chunks/{Form-IvVVwqRL.mjs → Form-CmNesrvR.mjs} +3 -3
- package/dist/_chunks/Form-CmNesrvR.mjs.map +1 -0
- package/dist/_chunks/{Form-DYETaKUX.js → Form-CwmJ4sWe.js} +3 -3
- package/dist/_chunks/Form-CwmJ4sWe.js.map +1 -0
- package/dist/_chunks/{History-CnZDctSO.js → History-BLCCNgCt.js} +24 -11
- package/dist/_chunks/History-BLCCNgCt.js.map +1 -0
- package/dist/_chunks/{History-BMunT-do.mjs → History-D-99Wh30.mjs} +25 -12
- package/dist/_chunks/History-D-99Wh30.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-BynalOp8.js → ListConfigurationPage-DxWpeZrO.js} +3 -3
- package/dist/_chunks/{ListConfigurationPage-BynalOp8.js.map → ListConfigurationPage-DxWpeZrO.js.map} +1 -1
- package/dist/_chunks/{ListConfigurationPage-CDqkCxgV.mjs → ListConfigurationPage-JPWZz7Kg.mjs} +3 -3
- package/dist/_chunks/{ListConfigurationPage-CDqkCxgV.mjs.map → ListConfigurationPage-JPWZz7Kg.mjs.map} +1 -1
- package/dist/_chunks/{ListViewPage-I88Ouzoq.js → ListViewPage-CIQekSFz.js} +22 -7
- package/dist/_chunks/ListViewPage-CIQekSFz.js.map +1 -0
- package/dist/_chunks/{ListViewPage-_5gS-DOF.mjs → ListViewPage-DSK3f0ST.mjs} +22 -7
- package/dist/_chunks/ListViewPage-DSK3f0ST.mjs.map +1 -0
- package/dist/_chunks/{NoContentTypePage-BaWQ7HsA.js → NoContentTypePage-C5cxKvC2.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-BaWQ7HsA.js.map → NoContentTypePage-C5cxKvC2.js.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-Dht-55hr.mjs → NoContentTypePage-D99LU1YP.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-Dht-55hr.mjs.map → NoContentTypePage-D99LU1YP.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-Bs8D5W_v.mjs → NoPermissionsPage-DBrBw-0y.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-Bs8D5W_v.mjs.map → NoPermissionsPage-DBrBw-0y.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-DCVUh5at.js → NoPermissionsPage-Oy4tmUrW.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-DCVUh5at.js.map → NoPermissionsPage-Oy4tmUrW.js.map} +1 -1
- package/dist/_chunks/{Relations-Chdt5qWc.mjs → Relations-BBmhcWFV.mjs} +69 -36
- package/dist/_chunks/Relations-BBmhcWFV.mjs.map +1 -0
- package/dist/_chunks/{Relations-BPgFQeGj.js → Relations-eG-9p_qS.js} +68 -35
- package/dist/_chunks/Relations-eG-9p_qS.js.map +1 -0
- package/dist/_chunks/{en-BVzUkPxZ.js → en-Bm0D0IWz.js} +8 -8
- package/dist/_chunks/{en-BVzUkPxZ.js.map → en-Bm0D0IWz.js.map} +1 -1
- package/dist/_chunks/{en-CPTj6CjC.mjs → en-DKV44jRb.mjs} +8 -8
- package/dist/_chunks/{en-CPTj6CjC.mjs.map → en-DKV44jRb.mjs.map} +1 -1
- package/dist/_chunks/{index-BhbLFX4l.js → index-BIWDoFLK.js} +957 -868
- package/dist/_chunks/index-BIWDoFLK.js.map +1 -0
- package/dist/_chunks/{index-D4UGPFZC.mjs → index-BrUzbQ30.mjs} +958 -870
- package/dist/_chunks/index-BrUzbQ30.mjs.map +1 -0
- package/dist/_chunks/{layout-D4HI4_PS.mjs → layout-_5-cXs34.mjs} +3 -3
- package/dist/_chunks/{layout-D4HI4_PS.mjs.map → layout-_5-cXs34.mjs.map} +1 -1
- package/dist/_chunks/{layout-CYA7s0qO.js → layout-lMc9i1-Z.js} +3 -3
- package/dist/_chunks/{layout-CYA7s0qO.js.map → layout-lMc9i1-Z.js.map} +1 -1
- package/dist/_chunks/{objects-gigeqt7s.js → objects-BcXOv6_9.js} +2 -4
- package/dist/_chunks/{objects-gigeqt7s.js.map → objects-BcXOv6_9.js.map} +1 -1
- package/dist/_chunks/{objects-mKMAmfec.mjs → objects-D6yBsdmx.mjs} +2 -4
- package/dist/_chunks/{objects-mKMAmfec.mjs.map → objects-D6yBsdmx.mjs.map} +1 -1
- package/dist/_chunks/{relations-DDZ9OxNo.js → relations-BRHithi8.js} +3 -7
- package/dist/_chunks/relations-BRHithi8.js.map +1 -0
- package/dist/_chunks/{relations-1pXaYpBK.mjs → relations-B_VLk-DD.mjs} +3 -7
- package/dist/_chunks/relations-B_VLk-DD.mjs.map +1 -0
- package/dist/admin/index.js +2 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +3 -2
- package/dist/admin/src/exports.d.ts +1 -1
- package/dist/admin/src/hooks/useDocument.d.ts +32 -1
- package/dist/admin/src/pages/EditView/components/Header.d.ts +1 -0
- package/dist/admin/src/preview/constants.d.ts +1 -0
- package/dist/admin/src/preview/index.d.ts +4 -0
- package/dist/server/index.js +85 -32
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +85 -32
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
- package/dist/server/src/controllers/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/metadata.d.ts +15 -1
- package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
- package/dist/server/src/history/services/history.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +4 -4
- package/dist/server/src/preview/constants.d.ts +2 -0
- package/dist/server/src/preview/constants.d.ts.map +1 -0
- package/dist/server/src/preview/index.d.ts +4 -0
- package/dist/server/src/preview/index.d.ts.map +1 -0
- package/dist/server/src/services/document-metadata.d.ts +8 -8
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +4 -4
- package/dist/server/src/services/utils/configuration/index.d.ts +2 -2
- package/dist/server/src/services/utils/configuration/layouts.d.ts +2 -2
- package/dist/server/src/utils/index.d.ts +2 -0
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/package.json +12 -12
- package/dist/_chunks/EditViewPage-DeTn7rAF.mjs.map +0 -1
- package/dist/_chunks/EditViewPage-G9uNzwYL.js.map +0 -1
- package/dist/_chunks/Field-CnCKhI1R.mjs.map +0 -1
- package/dist/_chunks/Field-DDHUWEfV.js.map +0 -1
- package/dist/_chunks/Form-DYETaKUX.js.map +0 -1
- package/dist/_chunks/Form-IvVVwqRL.mjs.map +0 -1
- package/dist/_chunks/History-BMunT-do.mjs.map +0 -1
- package/dist/_chunks/History-CnZDctSO.js.map +0 -1
- package/dist/_chunks/ListViewPage-I88Ouzoq.js.map +0 -1
- package/dist/_chunks/ListViewPage-_5gS-DOF.mjs.map +0 -1
- package/dist/_chunks/Relations-BPgFQeGj.js.map +0 -1
- package/dist/_chunks/Relations-Chdt5qWc.mjs.map +0 -1
- package/dist/_chunks/index-BhbLFX4l.js.map +0 -1
- package/dist/_chunks/index-D4UGPFZC.mjs.map +0 -1
- package/dist/_chunks/relations-1pXaYpBK.mjs.map +0 -1
- package/dist/_chunks/relations-DDZ9OxNo.js.map +0 -1
- package/strapi-server.js +0 -3
package/dist/server/index.mjs
CHANGED
@@ -367,7 +367,12 @@ const createHistoryService = ({ strapi: strapi2 }) => {
|
|
367
367
|
if (userToPopulate == null) {
|
368
368
|
return null;
|
369
369
|
}
|
370
|
-
return strapi2.query("admin::user").findOne({
|
370
|
+
return strapi2.query("admin::user").findOne({
|
371
|
+
where: {
|
372
|
+
...userToPopulate.id ? { id: userToPopulate.id } : {},
|
373
|
+
...userToPopulate.documentId ? { documentId: userToPopulate.documentId } : {}
|
374
|
+
}
|
375
|
+
});
|
371
376
|
})
|
372
377
|
);
|
373
378
|
return {
|
@@ -664,7 +669,7 @@ const historyVersion = {
|
|
664
669
|
}
|
665
670
|
}
|
666
671
|
};
|
667
|
-
const getFeature = () => {
|
672
|
+
const getFeature$1 = () => {
|
668
673
|
if (strapi.ee.features.isEnabled("cms-content-history")) {
|
669
674
|
return {
|
670
675
|
register({ strapi: strapi2 }) {
|
@@ -687,7 +692,7 @@ const getFeature = () => {
|
|
687
692
|
}
|
688
693
|
};
|
689
694
|
};
|
690
|
-
const history = getFeature();
|
695
|
+
const history = getFeature$1();
|
691
696
|
const register = async ({ strapi: strapi2 }) => {
|
692
697
|
await history.register?.({ strapi: strapi2 });
|
693
698
|
};
|
@@ -695,6 +700,18 @@ const ALLOWED_WEBHOOK_EVENTS = {
|
|
695
700
|
ENTRY_PUBLISH: "entry.publish",
|
696
701
|
ENTRY_UNPUBLISH: "entry.unpublish"
|
697
702
|
};
|
703
|
+
const FEATURE_ID = "preview";
|
704
|
+
const getFeature = () => {
|
705
|
+
if (!strapi.features.future.isEnabled(FEATURE_ID)) {
|
706
|
+
return {};
|
707
|
+
}
|
708
|
+
return {
|
709
|
+
bootstrap() {
|
710
|
+
console.log("Bootstrapping preview server");
|
711
|
+
}
|
712
|
+
};
|
713
|
+
};
|
714
|
+
const preview = getFeature();
|
698
715
|
const bootstrap = async () => {
|
699
716
|
Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {
|
700
717
|
strapi.get("webhookStore").addAllowedEvent(key, value);
|
@@ -704,6 +721,7 @@ const bootstrap = async () => {
|
|
704
721
|
await getService$1("content-types").syncConfigurations();
|
705
722
|
await getService$1("permission").registerPermissions();
|
706
723
|
await history.bootstrap?.({ strapi });
|
724
|
+
await preview.bootstrap?.({ strapi });
|
707
725
|
};
|
708
726
|
const destroy = async ({ strapi: strapi2 }) => {
|
709
727
|
await history.destroy?.({ strapi: strapi2 });
|
@@ -1689,7 +1707,7 @@ const updateDocument = async (ctx, opts) => {
|
|
1689
1707
|
throw new errors.ForbiddenError();
|
1690
1708
|
}
|
1691
1709
|
const pickPermittedFields = documentVersion ? permissionChecker2.sanitizeUpdateInput(documentVersion) : permissionChecker2.sanitizeCreateInput;
|
1692
|
-
const setCreator = setCreatorFields({ user, isEdition: true });
|
1710
|
+
const setCreator = documentVersion ? setCreatorFields({ user, isEdition: true }) : setCreatorFields({ user });
|
1693
1711
|
const sanitizeFn = async.pipe(pickPermittedFields, setCreator);
|
1694
1712
|
const sanitizedBody = await sanitizeFn(body);
|
1695
1713
|
return documentManager2.update(documentVersion?.documentId || id, model, {
|
@@ -1898,11 +1916,17 @@ const collectionTypes = {
|
|
1898
1916
|
}
|
1899
1917
|
const isUpdate = !isCreate;
|
1900
1918
|
if (isUpdate) {
|
1901
|
-
|
1902
|
-
if (!
|
1919
|
+
const documentExists = documentManager2.exists(model, id);
|
1920
|
+
if (!documentExists) {
|
1903
1921
|
throw new errors.NotFoundError("Document not found");
|
1904
1922
|
}
|
1905
|
-
|
1923
|
+
document = await documentManager2.findOne(id, model, { populate, locale });
|
1924
|
+
if (!document) {
|
1925
|
+
if (permissionChecker2.cannot.create({ locale }) || permissionChecker2.cannot.publish({ locale })) {
|
1926
|
+
throw new errors.ForbiddenError();
|
1927
|
+
}
|
1928
|
+
document = await updateDocument(ctx);
|
1929
|
+
} else if (permissionChecker2.can.update(document)) {
|
1906
1930
|
await updateDocument(ctx);
|
1907
1931
|
}
|
1908
1932
|
}
|
@@ -2327,15 +2351,27 @@ const sanitizeMainField = (model, mainField, userAbility) => {
|
|
2327
2351
|
}
|
2328
2352
|
return mainField;
|
2329
2353
|
};
|
2330
|
-
const addStatusToRelations = async (
|
2331
|
-
if (!contentTypes$1.hasDraftAndPublish(strapi.
|
2354
|
+
const addStatusToRelations = async (targetUid, relations2) => {
|
2355
|
+
if (!contentTypes$1.hasDraftAndPublish(strapi.getModel(targetUid))) {
|
2332
2356
|
return relations2;
|
2333
2357
|
}
|
2334
2358
|
const documentMetadata2 = getService$1("document-metadata");
|
2335
|
-
|
2359
|
+
if (!relations2.length) {
|
2360
|
+
return relations2;
|
2361
|
+
}
|
2362
|
+
const firstRelation = relations2[0];
|
2363
|
+
const filters = {
|
2364
|
+
documentId: { $in: relations2.map((r) => r.documentId) },
|
2365
|
+
// NOTE: find the "opposite" status
|
2366
|
+
publishedAt: firstRelation.publishedAt !== null ? { $null: true } : { $notNull: true }
|
2367
|
+
};
|
2368
|
+
const availableStatus = await strapi.query(targetUid).findMany({
|
2369
|
+
select: ["id", "documentId", "locale", "updatedAt", "createdAt", "publishedAt"],
|
2370
|
+
filters
|
2371
|
+
});
|
2336
2372
|
return relations2.map((relation) => {
|
2337
|
-
const availableStatuses =
|
2338
|
-
(availableDocument) => availableDocument.documentId === relation.documentId
|
2373
|
+
const availableStatuses = availableStatus.filter(
|
2374
|
+
(availableDocument) => availableDocument.documentId === relation.documentId && (relation.locale ? availableDocument.locale === relation.locale : true)
|
2339
2375
|
);
|
2340
2376
|
return {
|
2341
2377
|
...relation,
|
@@ -2356,11 +2392,8 @@ const validateLocale = (sourceUid, targetUid, locale) => {
|
|
2356
2392
|
const isLocalized = strapi.plugin("i18n").service("content-types").isLocalizedContentType;
|
2357
2393
|
const isSourceLocalized = isLocalized(sourceModel);
|
2358
2394
|
const isTargetLocalized = isLocalized(targetModel);
|
2359
|
-
let validatedLocale = locale;
|
2360
|
-
if (!targetModel || !isTargetLocalized)
|
2361
|
-
validatedLocale = void 0;
|
2362
2395
|
return {
|
2363
|
-
locale
|
2396
|
+
locale,
|
2364
2397
|
isSourceLocalized,
|
2365
2398
|
isTargetLocalized
|
2366
2399
|
};
|
@@ -2463,7 +2496,7 @@ const relations = {
|
|
2463
2496
|
attribute,
|
2464
2497
|
fieldsToSelect,
|
2465
2498
|
mainField,
|
2466
|
-
source: { schema: sourceSchema },
|
2499
|
+
source: { schema: sourceSchema, isLocalized: isSourceLocalized },
|
2467
2500
|
target: { schema: targetSchema, isLocalized: isTargetLocalized },
|
2468
2501
|
sourceSchema,
|
2469
2502
|
targetSchema,
|
@@ -2485,7 +2518,8 @@ const relations = {
|
|
2485
2518
|
fieldsToSelect,
|
2486
2519
|
mainField,
|
2487
2520
|
source: {
|
2488
|
-
schema: { uid: sourceUid, modelType: sourceModelType }
|
2521
|
+
schema: { uid: sourceUid, modelType: sourceModelType },
|
2522
|
+
isLocalized: isSourceLocalized
|
2489
2523
|
},
|
2490
2524
|
target: {
|
2491
2525
|
schema: { uid: targetUid },
|
@@ -2523,12 +2557,16 @@ const relations = {
|
|
2523
2557
|
} else {
|
2524
2558
|
where.id = id;
|
2525
2559
|
}
|
2526
|
-
|
2527
|
-
|
2560
|
+
const publishedAt = getPublishedAtClause(status, targetUid);
|
2561
|
+
if (!isEmpty(publishedAt)) {
|
2562
|
+
where[`${alias}.published_at`] = publishedAt;
|
2528
2563
|
}
|
2529
|
-
if (
|
2564
|
+
if (isTargetLocalized && locale) {
|
2530
2565
|
where[`${alias}.locale`] = locale;
|
2531
2566
|
}
|
2567
|
+
if (isSourceLocalized && locale) {
|
2568
|
+
where.locale = locale;
|
2569
|
+
}
|
2532
2570
|
if ((idsToInclude?.length ?? 0) !== 0) {
|
2533
2571
|
where[`${alias}.id`].$notIn = idsToInclude;
|
2534
2572
|
}
|
@@ -2546,7 +2584,8 @@ const relations = {
|
|
2546
2584
|
id: { $notIn: uniq(idsToOmit) }
|
2547
2585
|
});
|
2548
2586
|
}
|
2549
|
-
const
|
2587
|
+
const dbQuery = strapi.get("query-params").transform(targetUid, queryParams);
|
2588
|
+
const res = await strapi.db.query(targetUid).findPage(dbQuery);
|
2550
2589
|
ctx.body = {
|
2551
2590
|
...res,
|
2552
2591
|
results: await addStatusToRelations(targetUid, res.results)
|
@@ -2561,21 +2600,33 @@ const relations = {
|
|
2561
2600
|
attribute,
|
2562
2601
|
targetField,
|
2563
2602
|
fieldsToSelect,
|
2564
|
-
|
2565
|
-
|
2566
|
-
}
|
2567
|
-
target: {
|
2568
|
-
schema: { uid: targetUid }
|
2569
|
-
}
|
2603
|
+
status,
|
2604
|
+
source: { schema: sourceSchema },
|
2605
|
+
target: { schema: targetSchema }
|
2570
2606
|
} = await this.extractAndValidateRequestInfo(ctx, id);
|
2607
|
+
const { uid: sourceUid } = sourceSchema;
|
2608
|
+
const { uid: targetUid } = targetSchema;
|
2571
2609
|
const permissionQuery = await getService$1("permission-checker").create({ userAbility, model: targetUid }).sanitizedQuery.read({ fields: fieldsToSelect });
|
2572
2610
|
const dbQuery = strapi.db.query(sourceUid);
|
2573
2611
|
const loadRelations = relations$1.isAnyToMany(attribute) ? (...args) => dbQuery.loadPages(...args) : (...args) => dbQuery.load(...args).then((res2) => ({ results: res2 ? [res2] : [] }));
|
2612
|
+
const filters = {};
|
2613
|
+
if (sourceSchema?.options?.draftAndPublish) {
|
2614
|
+
if (targetSchema?.options?.draftAndPublish) {
|
2615
|
+
if (status === "published") {
|
2616
|
+
filters.publishedAt = { $notNull: true };
|
2617
|
+
} else {
|
2618
|
+
filters.publishedAt = { $null: true };
|
2619
|
+
}
|
2620
|
+
}
|
2621
|
+
} else if (targetSchema?.options?.draftAndPublish) {
|
2622
|
+
filters.publishedAt = { $null: true };
|
2623
|
+
}
|
2574
2624
|
const res = await loadRelations({ id: entryId }, targetField, {
|
2575
|
-
select: ["id", "documentId", "locale", "publishedAt"],
|
2625
|
+
select: ["id", "documentId", "locale", "publishedAt", "updatedAt"],
|
2576
2626
|
ordering: "desc",
|
2577
2627
|
page: ctx.request.query.page,
|
2578
|
-
pageSize: ctx.request.query.pageSize
|
2628
|
+
pageSize: ctx.request.query.pageSize,
|
2629
|
+
filters
|
2579
2630
|
});
|
2580
2631
|
const loadedIds = res.results.map((item) => item.id);
|
2581
2632
|
addFiltersClause(permissionQuery, { id: { $in: loadedIds } });
|
@@ -2668,7 +2719,7 @@ const singleTypes = {
|
|
2668
2719
|
permissionChecker2,
|
2669
2720
|
model,
|
2670
2721
|
// @ts-expect-error - fix types
|
2671
|
-
{
|
2722
|
+
{ documentId: document.documentId, locale, publishedAt: null },
|
2672
2723
|
{ availableLocales: true, availableStatus: false }
|
2673
2724
|
);
|
2674
2725
|
ctx.body = { data: {}, meta };
|
@@ -4039,7 +4090,9 @@ const documentMetadata = ({ strapi: strapi2 }) => ({
|
|
4039
4090
|
*/
|
4040
4091
|
async getAvailableLocales(uid2, version, allVersions, validatableFields = []) {
|
4041
4092
|
const versionsByLocale = groupBy("locale", allVersions);
|
4042
|
-
|
4093
|
+
if (version.locale) {
|
4094
|
+
delete versionsByLocale[version.locale];
|
4095
|
+
}
|
4043
4096
|
const model = strapi2.getModel(uid2);
|
4044
4097
|
const keysToKeep = [...AVAILABLE_LOCALES_FIELDS, ...validatableFields];
|
4045
4098
|
const traversalFunction = async (localeVersion) => traverseEntity(
|