@contentful/field-editor-shared 2.11.2 → 2.12.1

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.
Files changed (21) hide show
  1. package/dist/cjs/LocalePublishingEntityStatusBadge/LocalePublishingPopover.js +2 -1
  2. package/dist/cjs/ReleaseEntityStatusBadge/ReleaseEntityStatusPopover.js +2 -1
  3. package/dist/cjs/hooks/useActiveReleaseLocalesStatuses.js +13 -10
  4. package/dist/cjs/hooks/useActiveReleaseLocalesStatuses.spec.js +236 -245
  5. package/dist/cjs/index.js +1 -1
  6. package/dist/cjs/utils/{getEntryReleaseStatus.js → getEntityReleaseStatus.js} +4 -4
  7. package/dist/cjs/utils/{getPreviousReleaseEntryVersion.js → getPreviousReleaseEntity.js} +5 -5
  8. package/dist/esm/LocalePublishingEntityStatusBadge/LocalePublishingPopover.js +3 -2
  9. package/dist/esm/ReleaseEntityStatusBadge/ReleaseEntityStatusPopover.js +3 -2
  10. package/dist/esm/hooks/useActiveReleaseLocalesStatuses.js +13 -10
  11. package/dist/esm/hooks/useActiveReleaseLocalesStatuses.spec.js +236 -245
  12. package/dist/esm/index.js +1 -1
  13. package/dist/esm/utils/{getEntryReleaseStatus.js → getEntityReleaseStatus.js} +2 -2
  14. package/dist/esm/utils/{getPreviousReleaseEntryVersion.js → getPreviousReleaseEntity.js} +3 -3
  15. package/dist/types/LocalePublishingEntityStatusBadge/LocalePublishingPopover.d.ts +1 -1
  16. package/dist/types/hooks/useActiveReleaseLocalesStatuses.d.ts +5 -4
  17. package/dist/types/index.d.ts +1 -1
  18. package/dist/types/types.d.ts +2 -2
  19. package/dist/types/utils/{getEntryReleaseStatus.d.ts → getEntityReleaseStatus.d.ts} +2 -2
  20. package/dist/types/utils/{getPreviousReleaseEntryVersion.d.ts → getPreviousReleaseEntity.d.ts} +3 -2
  21. package/package.json +2 -2
@@ -1,8 +1,10 @@
1
1
  import { renderHook } from '@testing-library/react';
2
- import { getPreviousReleaseEntryVersion } from '../utils/getPreviousReleaseEntryVersion';
2
+ import { getPreviousReleaseEntity } from '../utils/getPreviousReleaseEntity';
3
3
  import { useActiveReleaseLocalesStatuses } from './useActiveReleaseLocalesStatuses';
4
- const buildEntry = (status)=>({
4
+ const buildEntry = (status, id = 'entry-1')=>({
5
5
  sys: {
6
+ id,
7
+ type: 'Entry',
6
8
  fieldStatus: {
7
9
  '*': {
8
10
  'en-US': status
@@ -10,17 +12,28 @@ const buildEntry = (status)=>({
10
12
  }
11
13
  }
12
14
  });
13
- const createEntryBasedReleaseEntity = ({ entryId = 'entry-1', action = 'publish' })=>({
15
+ const buildAsset = (status, id = 'asset-1')=>({
16
+ sys: {
17
+ id,
18
+ type: 'Asset',
19
+ fieldStatus: {
20
+ '*': {
21
+ 'en-US': status
22
+ }
23
+ }
24
+ }
25
+ });
26
+ const createEntryBasedReleaseEntity = ({ entityId = 'entry-1', action = 'publish', entityType = 'Entry' })=>({
14
27
  entity: {
15
28
  sys: {
16
29
  type: 'Link',
17
- linkType: 'Entry',
18
- id: entryId
30
+ linkType: entityType,
31
+ id: entityId
19
32
  }
20
33
  },
21
34
  action
22
35
  });
23
- const createEntryBasedRelease = ({ entryId, action } = {})=>({
36
+ const createEntryBasedRelease = ({ entityId, action, entityType = 'Entry' } = {})=>({
24
37
  title: 'Release 1',
25
38
  sys: {
26
39
  id: 'release-1',
@@ -30,18 +43,19 @@ const createEntryBasedRelease = ({ entryId, action } = {})=>({
30
43
  entities: {
31
44
  items: [
32
45
  createEntryBasedReleaseEntity({
33
- entryId,
34
- action
46
+ entityId,
47
+ action,
48
+ entityType
35
49
  })
36
50
  ]
37
51
  }
38
52
  });
39
- const createLocaleBasedReleaseEntity = ({ entryId = 'entry-1', verb = 'add' })=>({
53
+ const createLocaleBasedReleaseEntity = ({ entityId = 'entry-1', verb = 'add', entityType = 'Entry' })=>({
40
54
  entity: {
41
55
  sys: {
42
56
  type: 'Link',
43
- linkType: 'Entry',
44
- id: entryId
57
+ linkType: entityType,
58
+ id: entityId
45
59
  }
46
60
  },
47
61
  [verb]: {
@@ -52,7 +66,7 @@ const createLocaleBasedReleaseEntity = ({ entryId = 'entry-1', verb = 'add' })=>
52
66
  }
53
67
  }
54
68
  });
55
- const createLocaleBasedRelease = ({ entryId, verb } = {})=>({
69
+ const createLocaleBasedRelease = ({ entityId, verb, entityType = 'Entry' } = {})=>({
56
70
  title: 'Release 1',
57
71
  sys: {
58
72
  id: 'release-1',
@@ -62,263 +76,240 @@ const createLocaleBasedRelease = ({ entryId, verb } = {})=>({
62
76
  entities: {
63
77
  items: [
64
78
  createLocaleBasedReleaseEntity({
65
- entryId,
66
- verb
79
+ entityId,
80
+ verb,
81
+ entityType
67
82
  })
68
83
  ]
69
84
  }
70
85
  });
71
- jest.mock('../utils/getPreviousReleaseEntryVersion', ()=>({
72
- getPreviousReleaseEntryVersion: jest.fn()
86
+ jest.mock('../utils/getPreviousReleaseEntity', ()=>({
87
+ getPreviousReleaseEntity: jest.fn()
73
88
  }));
74
- const baseParams = {
75
- entryId: 'entry-1',
76
- locales: [
77
- {
78
- code: 'en-US'
79
- }
80
- ],
81
- isActiveReleaseLoading: false,
82
- releaseVersionMap: new Map(),
83
- releases: {
84
- items: []
85
- }
86
- };
89
+ const ENTITY_TYPES = [
90
+ 'Entry',
91
+ 'Asset'
92
+ ];
87
93
  describe('useActiveReleaseLocalesStatuses', ()=>{
88
94
  beforeEach(()=>{
89
95
  jest.clearAllMocks();
90
96
  });
91
- describe('with entry based publishing', ()=>{
92
- it('returns Will publish status when active release has publish action', ()=>{
93
- getPreviousReleaseEntryVersion.mockReturnValue({
94
- previousReleaseEntity: createEntryBasedReleaseEntity({
95
- entryId: 'entry-1',
96
- action: 'unpublish'
97
- }),
98
- previousEntryVersion: {
99
- sys: {
100
- fieldStatus: {
101
- '*': {
102
- 'en-US': 'draft'
103
- }
104
- }
105
- }
106
- }
107
- });
108
- const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
109
- ...baseParams,
110
- activeRelease: createEntryBasedRelease(),
111
- currentEntryDraft: buildEntry('draft')
112
- }));
113
- expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
114
- variant: 'positive',
115
- status: 'willPublish',
116
- label: 'Will publish',
117
- locale: {
97
+ ENTITY_TYPES.forEach((entityType)=>{
98
+ const entityId = entityType === 'Entry' ? 'entry-1' : 'asset-1';
99
+ const baseParams = {
100
+ entityId,
101
+ entityType,
102
+ locales: [
103
+ {
118
104
  code: 'en-US'
119
105
  }
120
- });
121
- });
122
- it('returns Becomes draft status when previous version has published locales and active version has unpublish action', ()=>{
123
- getPreviousReleaseEntryVersion.mockReturnValue({
124
- previousReleaseEntity: createEntryBasedReleaseEntity({
125
- entryId: 'entry-1',
126
- action: 'publish'
127
- }),
128
- previousEntryVersion: {
129
- sys: {
130
- fieldStatus: {
131
- '*': {
132
- 'en-US': 'published'
133
- }
134
- }
106
+ ],
107
+ isActiveReleaseLoading: false,
108
+ releaseVersionMap: new Map(),
109
+ releases: {
110
+ items: []
111
+ }
112
+ };
113
+ describe(`${entityType} with entry based publishing`, ()=>{
114
+ it('returns Will publish status when active release has publish action', ()=>{
115
+ getPreviousReleaseEntity.mockReturnValue({
116
+ previousReleaseEntity: createEntryBasedReleaseEntity({
117
+ entityId,
118
+ action: 'unpublish',
119
+ entityType
120
+ })
121
+ });
122
+ const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
123
+ ...baseParams,
124
+ activeRelease: createEntryBasedRelease({
125
+ entityId,
126
+ entityType
127
+ }),
128
+ currentEntityDraft: entityType === 'Entry' ? buildEntry('draft') : buildAsset('draft')
129
+ }));
130
+ expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
131
+ variant: 'positive',
132
+ status: 'willPublish',
133
+ label: 'Will publish',
134
+ locale: {
135
+ code: 'en-US'
135
136
  }
136
- }
137
- });
138
- const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
139
- ...baseParams,
140
- activeRelease: createEntryBasedRelease({
141
- action: 'unpublish'
142
- }),
143
- currentEntryDraft: buildEntry('published')
144
- }));
145
- expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
146
- variant: 'warning',
147
- status: 'becomesDraft',
148
- label: 'Becomes draft',
149
- locale: {
150
- code: 'en-US'
151
- }
137
+ });
152
138
  });
153
- });
154
- it('returns Remains draft status when previous version has draft locales and active version has unpublish action', ()=>{
155
- getPreviousReleaseEntryVersion.mockReturnValue({
156
- previousReleaseEntity: createEntryBasedReleaseEntity({
157
- action: 'unpublish'
158
- }),
159
- previousEntryVersion: {
160
- sys: {
161
- fieldStatus: {
162
- '*': {
163
- 'en-US': 'draft'
164
- }
165
- }
139
+ it('returns Becomes draft status when previous version has published locales and active version has unpublish action', ()=>{
140
+ getPreviousReleaseEntity.mockReturnValue({
141
+ previousReleaseEntity: createEntryBasedReleaseEntity({
142
+ entityId,
143
+ action: 'publish',
144
+ entityType
145
+ })
146
+ });
147
+ const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
148
+ ...baseParams,
149
+ activeRelease: createEntryBasedRelease({
150
+ action: 'unpublish',
151
+ entityId,
152
+ entityType
153
+ }),
154
+ currentEntityDraft: entityType === 'Entry' ? buildEntry('published') : buildAsset('published')
155
+ }));
156
+ expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
157
+ variant: 'warning',
158
+ status: 'becomesDraft',
159
+ label: 'Becomes draft',
160
+ locale: {
161
+ code: 'en-US'
166
162
  }
167
- }
168
- });
169
- const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
170
- ...baseParams,
171
- activeRelease: createEntryBasedRelease({
172
- action: 'unpublish'
173
- }),
174
- currentEntryDraft: buildEntry('draft')
175
- }));
176
- expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
177
- variant: 'secondary',
178
- status: 'remainsDraft',
179
- label: 'Remains draft',
180
- locale: {
181
- code: 'en-US'
182
- }
163
+ });
183
164
  });
184
- });
185
- it('returns Not in release status when entry is not in the release', ()=>{
186
- getPreviousReleaseEntryVersion.mockReturnValue({
187
- previousReleaseEntity: undefined,
188
- previousEntryVersion: undefined
189
- });
190
- const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
191
- ...baseParams,
192
- activeRelease: createEntryBasedRelease({
193
- entryId: 'entry-2',
194
- action: 'publish'
195
- }),
196
- currentEntryDraft: buildEntry('draft')
197
- }));
198
- expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
199
- variant: 'secondary',
200
- status: 'notInRelease',
201
- label: 'Not in release',
202
- locale: {
203
- code: 'en-US'
204
- }
205
- });
206
- });
207
- });
208
- describe('with locale based publishing', ()=>{
209
- it('returns Will publish status when active release has publish action', ()=>{
210
- getPreviousReleaseEntryVersion.mockReturnValue({
211
- previousReleaseEntity: createLocaleBasedReleaseEntity({
212
- entryId: 'entry-1',
213
- verb: 'remove'
214
- }),
215
- previousEntryVersion: {
216
- sys: {
217
- fieldStatus: {
218
- '*': {
219
- 'en-US': 'draft'
220
- }
221
- }
165
+ it('returns Remains draft status when previous version has draft locales and active version has unpublish action', ()=>{
166
+ getPreviousReleaseEntity.mockReturnValue({
167
+ previousReleaseEntity: createEntryBasedReleaseEntity({
168
+ action: 'unpublish',
169
+ entityType,
170
+ entityId
171
+ })
172
+ });
173
+ const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
174
+ ...baseParams,
175
+ activeRelease: createEntryBasedRelease({
176
+ action: 'unpublish',
177
+ entityId,
178
+ entityType
179
+ }),
180
+ currentEntityDraft: entityType === 'Entry' ? buildEntry('draft') : buildAsset('draft')
181
+ }));
182
+ expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
183
+ variant: 'secondary',
184
+ status: 'remainsDraft',
185
+ label: 'Remains draft',
186
+ locale: {
187
+ code: 'en-US'
222
188
  }
223
- }
224
- });
225
- const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
226
- ...baseParams,
227
- activeRelease: createLocaleBasedRelease(),
228
- currentEntryDraft: buildEntry('draft')
229
- }));
230
- expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
231
- variant: 'positive',
232
- status: 'willPublish',
233
- label: 'Will publish',
234
- locale: {
235
- code: 'en-US'
236
- }
189
+ });
237
190
  });
238
- });
239
- it('returns Becomes draft status when previous version has published locales and active version has unpublish action', ()=>{
240
- getPreviousReleaseEntryVersion.mockReturnValue({
241
- previousReleaseEntity: createLocaleBasedReleaseEntity({
242
- entryId: 'entry-1',
243
- verb: 'add'
244
- }),
245
- previousEntryVersion: {
246
- sys: {
247
- fieldStatus: {
248
- '*': {
249
- 'en-US': 'published'
250
- }
251
- }
191
+ it('returns Not in release status when entity is not in the release', ()=>{
192
+ getPreviousReleaseEntity.mockReturnValue({
193
+ previousReleaseEntity: undefined
194
+ });
195
+ const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
196
+ ...baseParams,
197
+ activeRelease: createEntryBasedRelease({
198
+ entityId: entityType === 'Entry' ? 'entry-2' : 'asset-2',
199
+ action: 'publish',
200
+ entityType
201
+ }),
202
+ currentEntityDraft: entityType === 'Entry' ? buildEntry('draft') : buildAsset('draft')
203
+ }));
204
+ expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
205
+ variant: 'secondary',
206
+ status: 'notInRelease',
207
+ label: 'Not in release',
208
+ locale: {
209
+ code: 'en-US'
252
210
  }
253
- }
254
- });
255
- const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
256
- ...baseParams,
257
- activeRelease: createLocaleBasedRelease({
258
- verb: 'remove'
259
- }),
260
- currentEntryDraft: buildEntry('published')
261
- }));
262
- expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
263
- variant: 'warning',
264
- status: 'becomesDraft',
265
- label: 'Becomes draft',
266
- locale: {
267
- code: 'en-US'
268
- }
211
+ });
269
212
  });
270
213
  });
271
- it('returns Remains draft status when previous version has draft locales and active version has unpublish action', ()=>{
272
- getPreviousReleaseEntryVersion.mockReturnValue({
273
- previousReleaseEntity: createLocaleBasedReleaseEntity({
274
- verb: 'remove'
275
- }),
276
- previousEntryVersion: {
277
- sys: {
278
- fieldStatus: {
279
- '*': {
280
- 'en-US': 'draft'
281
- }
282
- }
214
+ describe(`${entityType} with locale based publishing`, ()=>{
215
+ it('returns Will publish status when active release has publish action', ()=>{
216
+ getPreviousReleaseEntity.mockReturnValue({
217
+ previousReleaseEntity: createLocaleBasedReleaseEntity({
218
+ entityId,
219
+ verb: 'remove',
220
+ entityType
221
+ })
222
+ });
223
+ const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
224
+ ...baseParams,
225
+ activeRelease: createLocaleBasedRelease({
226
+ entityId,
227
+ entityType
228
+ }),
229
+ currentEntityDraft: entityType === 'Entry' ? buildEntry('draft') : buildAsset('draft')
230
+ }));
231
+ expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
232
+ variant: 'positive',
233
+ status: 'willPublish',
234
+ label: 'Will publish',
235
+ locale: {
236
+ code: 'en-US'
283
237
  }
284
- }
238
+ });
285
239
  });
286
- const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
287
- ...baseParams,
288
- activeRelease: createLocaleBasedRelease({
289
- verb: 'remove'
290
- }),
291
- currentEntryDraft: buildEntry('draft')
292
- }));
293
- expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
294
- variant: 'secondary',
295
- status: 'remainsDraft',
296
- label: 'Remains draft',
297
- locale: {
298
- code: 'en-US'
299
- }
240
+ it('returns Becomes draft status when previous version has published locales and active version has unpublish action', ()=>{
241
+ getPreviousReleaseEntity.mockReturnValue({
242
+ previousReleaseEntity: createLocaleBasedReleaseEntity({
243
+ entityId: 'entry-1',
244
+ verb: 'add',
245
+ entityType
246
+ })
247
+ });
248
+ const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
249
+ ...baseParams,
250
+ activeRelease: createLocaleBasedRelease({
251
+ verb: 'remove',
252
+ entityId,
253
+ entityType
254
+ }),
255
+ currentEntityDraft: entityType === 'Entry' ? buildEntry('published') : buildAsset('published')
256
+ }));
257
+ expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
258
+ variant: 'warning',
259
+ status: 'becomesDraft',
260
+ label: 'Becomes draft',
261
+ locale: {
262
+ code: 'en-US'
263
+ }
264
+ });
300
265
  });
301
- });
302
- it('returns Not in release status when entry is not in the release', ()=>{
303
- getPreviousReleaseEntryVersion.mockReturnValue({
304
- previousReleaseEntity: undefined,
305
- previousEntryVersion: undefined
266
+ it('returns Remains draft status when previous version has draft locales and active version has unpublish action', ()=>{
267
+ getPreviousReleaseEntity.mockReturnValue({
268
+ previousReleaseEntity: createLocaleBasedReleaseEntity({
269
+ verb: 'remove',
270
+ entityId,
271
+ entityType
272
+ })
273
+ });
274
+ const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
275
+ ...baseParams,
276
+ activeRelease: createLocaleBasedRelease({
277
+ verb: 'remove',
278
+ entityId,
279
+ entityType
280
+ }),
281
+ currentEntityDraft: entityType === 'Entry' ? buildEntry('draft') : buildAsset('draft')
282
+ }));
283
+ expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
284
+ variant: 'secondary',
285
+ status: 'remainsDraft',
286
+ label: 'Remains draft',
287
+ locale: {
288
+ code: 'en-US'
289
+ }
290
+ });
306
291
  });
307
- const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
308
- ...baseParams,
309
- activeRelease: createLocaleBasedRelease({
310
- entryId: 'entry-2',
311
- verb: 'add'
312
- }),
313
- currentEntryDraft: buildEntry('draft')
314
- }));
315
- expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
316
- variant: 'secondary',
317
- status: 'notInRelease',
318
- label: 'Not in release',
319
- locale: {
320
- code: 'en-US'
321
- }
292
+ it('returns Not in release status when entry is not in the release', ()=>{
293
+ getPreviousReleaseEntity.mockReturnValue({
294
+ previousReleaseEntity: undefined
295
+ });
296
+ const { result } = renderHook(()=>useActiveReleaseLocalesStatuses({
297
+ ...baseParams,
298
+ activeRelease: createLocaleBasedRelease({
299
+ entityId: entityType === 'Entry' ? 'entry-2' : 'asset-2',
300
+ entityType,
301
+ verb: 'add'
302
+ }),
303
+ currentEntityDraft: entityType === 'Entry' ? buildEntry('draft') : buildAsset('draft')
304
+ }));
305
+ expect(result.current.releaseLocalesStatusMap.get('en-US')).toEqual({
306
+ variant: 'secondary',
307
+ status: 'notInRelease',
308
+ label: 'Not in release',
309
+ locale: {
310
+ code: 'en-US'
311
+ }
312
+ });
322
313
  });
323
314
  });
324
315
  });
package/dist/esm/index.js CHANGED
@@ -18,5 +18,5 @@ export * from './hooks/useLocalePublishStatus';
18
18
  export * from './LocalePublishingEntityStatusBadge';
19
19
  export * from './ReleaseEntityStatusBadge';
20
20
  export * from './utils/determineReleaseAction';
21
- export * from './utils/getEntryReleaseStatus';
21
+ export * from './utils/getEntityReleaseStatus';
22
22
  export * from './utils/parseReleaseParameters';
@@ -1,6 +1,6 @@
1
1
  import { determineReleaseAction } from './determineReleaseAction';
2
- export function getEntryReleaseStatus(entryId, locales, release) {
3
- const { releaseAction, entityItem, addLocales, removeLocales } = determineReleaseAction(entryId, release);
2
+ export function getEntityReleaseStatus(entityId, locales, release) {
3
+ const { releaseAction, entityItem, addLocales, removeLocales } = determineReleaseAction(entityId, release);
4
4
  if (releaseAction === 'not-in-release' || !entityItem) {
5
5
  return {
6
6
  releaseAction
@@ -1,5 +1,5 @@
1
1
  import { compareAsc } from 'date-fns';
2
- export function getPreviousReleaseEntryVersion({ entryId, releaseVersionMap, activeRelease, releases }) {
2
+ export function getPreviousReleaseEntity({ entityId, entityType, releaseVersionMap, activeRelease, releases }) {
3
3
  const orderedScheduledReleases = releases?.items.filter((r)=>r.startDate).sort((a, b)=>compareAsc(new Date(a.startDate), new Date(b.startDate)));
4
4
  const indexOfActive = orderedScheduledReleases?.findIndex((r)=>r.sys.id === activeRelease?.sys.id);
5
5
  let previousRelease;
@@ -7,10 +7,10 @@ export function getPreviousReleaseEntryVersion({ entryId, releaseVersionMap, act
7
7
  if (indexOfActive && indexOfActive > 0) {
8
8
  for(let i = indexOfActive - 1; i >= 0; i--){
9
9
  const release = orderedScheduledReleases[i];
10
- const action = releaseVersionMap.get(entryId)?.get(release.sys.id);
10
+ const action = releaseVersionMap.get(entityId)?.get(release.sys.id);
11
11
  if (action !== 'not-in-release') {
12
12
  previousRelease = release;
13
- previousReleaseEntity = release.entities.items.find((e)=>e.entity.sys.id === entryId);
13
+ previousReleaseEntity = release.entities.items.find((e)=>e.entity.sys.id === entityId && e.entity.sys.linkType === entityType);
14
14
  break;
15
15
  }
16
16
  }
@@ -8,5 +8,5 @@ type LocalePublishingPopoverProps = {
8
8
  activeLocales?: Pick<LocaleProps, 'code'>[];
9
9
  localesStatusMap?: LocalePublishStatusMap;
10
10
  };
11
- export declare function LocalePublishingPopover({ entity, jobs, isScheduled, localesStatusMap, activeLocales }: LocalePublishingPopoverProps): React.JSX.Element;
11
+ export declare function LocalePublishingPopover({ entity, jobs, isScheduled, localesStatusMap, activeLocales, }: LocalePublishingPopoverProps): React.JSX.Element;
12
12
  export {};
@@ -1,9 +1,10 @@
1
1
  import type { ReleaseAction, ReleaseLocalesStatusMap } from '@contentful/field-editor-shared';
2
- import type { CollectionProp, EntryProps, LocaleProps } from 'contentful-management/types';
2
+ import type { AssetProps, CollectionProp, EntryProps, LocaleProps } from 'contentful-management/types';
3
3
  import type { ReleaseV2Props } from '../types';
4
- export declare const useActiveReleaseLocalesStatuses: ({ currentEntryDraft, entryId, releaseVersionMap, locales, activeRelease, releases, }: {
5
- currentEntryDraft: EntryProps;
6
- entryId: string;
4
+ export declare const useActiveReleaseLocalesStatuses: ({ currentEntityDraft, entityId, entityType, releaseVersionMap, locales, activeRelease, releases, }: {
5
+ currentEntityDraft: EntryProps | AssetProps;
6
+ entityId: string;
7
+ entityType: 'Entry' | 'Asset';
7
8
  releaseVersionMap: Map<string, Map<string, ReleaseAction>>;
8
9
  locales: LocaleProps[];
9
10
  activeRelease: ReleaseV2Props | undefined;
@@ -20,5 +20,5 @@ export * from './hooks/useLocalePublishStatus';
20
20
  export * from './LocalePublishingEntityStatusBadge';
21
21
  export * from './ReleaseEntityStatusBadge';
22
22
  export * from './utils/determineReleaseAction';
23
- export * from './utils/getEntryReleaseStatus';
23
+ export * from './utils/getEntityReleaseStatus';
24
24
  export * from './utils/parseReleaseParameters';
@@ -16,7 +16,7 @@ export type ReleaseV2Entity = {
16
16
  entity: {
17
17
  sys: {
18
18
  type: 'Link';
19
- linkType: 'Entry';
19
+ linkType: 'Entry' | 'Asset';
20
20
  id: string;
21
21
  };
22
22
  };
@@ -26,7 +26,7 @@ export type ReleaseV2EntityWithLocales = {
26
26
  entity: {
27
27
  sys: {
28
28
  type: 'Link';
29
- linkType: 'Entry';
29
+ linkType: 'Entry' | 'Asset';
30
30
  id: string;
31
31
  };
32
32
  };