@@ -15,7 +15,7 @@ import {
15
15
import { listSelectielijstKlasseChoices } from "../../../lib/api/private" ;
16
16
import {
17
17
Review ,
18
- ReviewItem ,
18
+ ReviewItemWithZaak ,
19
19
getLatestReview ,
20
20
listReviewItems ,
21
21
} from "../../../lib/api/review" ;
@@ -46,7 +46,7 @@ export interface DestructionListDetailContext {
46
46
user : User ;
47
47
48
48
review : Review | null ;
49
- reviewItems : ReviewItem [ ] | null ;
49
+ reviewItems : ReviewItemWithZaak [ ] | null ;
50
50
51
51
selectieLijstKlasseChoicesMap : Record < string , Option [ ] > | null ;
52
52
}
@@ -83,15 +83,21 @@ export const destructionListDetailLoader = loginRequired(
83
83
} )
84
84
: null ;
85
85
86
+ // #378 - If for some unfortunate reason a zaak has been deleted outside of the process,
87
+ // item.zaak can be null
88
+ const reviewItemsWithZaak = reviewItems
89
+ ? ( reviewItems . filter ( ( item ) => ! ! item . zaak ) as ReviewItemWithZaak [ ] )
90
+ : reviewItems ;
91
+
86
92
/**
87
93
* Fetch selectable zaken: empty array if review collected OR all zaken not in another destruction list.
88
94
* FIXME: Accept no/implement real pagination?
89
95
*/
90
96
const getDestructionListItems =
91
97
async ( ) : Promise < PaginatedDestructionListItems > =>
92
- reviewItems
98
+ reviewItemsWithZaak
93
99
? {
94
- count : reviewItems . length ,
100
+ count : reviewItemsWithZaak . length ,
95
101
next : null ,
96
102
previous : null ,
97
103
results : [ ] ,
@@ -122,13 +128,13 @@ export const destructionListDetailLoader = loginRequired(
122
128
* reviewItems ? await listSelectieLijstKlasseChoices({}) : null,
123
129
*/
124
130
const getReviewItems = ( ) =>
125
- reviewItems
131
+ reviewItemsWithZaak
126
132
? cacheMemo (
127
133
"selectieLijstKlasseChoicesMap" ,
128
134
async ( ) =>
129
135
Object . fromEntries (
130
136
await Promise . all (
131
- reviewItems . map ( async ( ri ) => {
137
+ reviewItemsWithZaak . map ( async ( ri ) => {
132
138
const choices = await listSelectielijstKlasseChoices ( {
133
139
zaak : ri . zaak . url ,
134
140
} ) ;
@@ -137,12 +143,12 @@ export const destructionListDetailLoader = loginRequired(
137
143
) ,
138
144
) ,
139
145
// @ts -expect-error - Params not used in function but in case key only.
140
- reviewItems . map ( ( ri ) => ri . pk ) ,
146
+ reviewItemsWithZaak . map ( ( ri ) => ri . pk ) ,
141
147
)
142
148
: null ;
143
149
144
150
const getSelectableZaken = ( ) =>
145
- reviewItems || destructionList . status === "ready_to_delete"
151
+ reviewItemsWithZaak || destructionList . status === "ready_to_delete"
146
152
? ( {
147
153
count : 0 ,
148
154
next : null ,
@@ -196,7 +202,7 @@ export const destructionListDetailLoader = loginRequired(
196
202
user,
197
203
198
204
review : review ,
199
- reviewItems : reviewItems ,
205
+ reviewItems : reviewItemsWithZaak ,
200
206
201
207
selectieLijstKlasseChoicesMap,
202
208
} ;
0 commit comments