@@ -201,7 +201,7 @@ export class DeckEventsHandler {
201201 const persistedSlide : Slide = await this . postSlide ( deck , slide ) ;
202202
203203 // TODO: Ultimately, when using reactive data, move this to a Cloud Function
204- await this . updateDeckSlideList ( persistedSlide ) ;
204+ await this . updateDeckSlideList ( deck , persistedSlide ) ;
205205
206206 this . busyService . deckBusy ( false ) ;
207207
@@ -270,28 +270,29 @@ export class DeckEventsHandler {
270270 } ) ;
271271 }
272272
273- private updateDeckSlideList ( slide : Slide ) : Promise < void > {
273+ private updateDeckSlideList ( deck : Deck , slide : Slide ) : Promise < void > {
274274 return new Promise < void > ( async ( resolve , reject ) => {
275275 try {
276+ if ( ! deck && ! deck . data ) {
277+ reject ( 'Missing deck to add the slide to the list' ) ;
278+ return ;
279+ }
280+
276281 if ( ! slide || ! slide . id || ! slide . data ) {
277282 reject ( 'Missing slide to create or update the deck' ) ;
278283 return ;
279284 }
280285
281- this . deckEditorService . watch ( ) . pipe ( take ( 1 ) ) . subscribe ( async ( deck : Deck ) => {
282- if ( deck && deck . data ) {
283- if ( ! deck . data . slides || deck . data . slides . length <= 0 ) {
284- deck . data . slides = [ ] ;
285- }
286+ if ( ! deck . data . slides || deck . data . slides . length <= 0 ) {
287+ deck . data . slides = [ ] ;
288+ }
286289
287- deck . data . slides . push ( slide . id ) ;
290+ deck . data . slides . push ( slide . id ) ;
288291
289- const updatedDeck : Deck = await this . deckService . update ( deck ) ;
290- this . deckEditorService . next ( updatedDeck ) ;
291- }
292+ const updatedDeck : Deck = await this . deckService . update ( deck ) ;
293+ this . deckEditorService . next ( updatedDeck ) ;
292294
293- resolve ( ) ;
294- } ) ;
295+ resolve ( ) ;
295296 } catch ( err ) {
296297 reject ( err ) ;
297298 }
0 commit comments