1- import { Component , OnInit } from '@angular/core' ;
2- import { BackendService } from '../backend.service' ;
1+ import { Component , OnInit , OnDestroy } from '@angular/core' ;
2+ import { BackendService } from '../services/ backend.service' ;
33import { KartoffelstampfTerminalOutputEntry , KartoffelstampfCompressInstruction } from '../types/kartoffelstampf-server' ;
44import { TerminalLine } from '../types/kartoffelstampf-client' ;
5- import { finalize } from 'rxjs/operators' ;
5+ import { finalize , takeUntil } from 'rxjs/operators' ;
6+ import { Subject } from 'rxjs' ;
67
78@Component ( {
89 selector : 'app-upload-page' ,
@@ -22,8 +23,9 @@ import { finalize } from 'rxjs/operators';
2223 ] ,
2324 providers : [ BackendService ]
2425} )
25- export class UploadPageComponent implements OnInit {
26+ export class UploadPageComponent implements OnInit , OnDestroy {
2627
28+ preDestroy = new Subject < boolean > ( ) ;
2729 terminalLines : TerminalLine [ ] = [ ] ;
2830 uploadedFileBase64URI : string ;
2931 originalFileName : string ;
@@ -34,9 +36,19 @@ export class UploadPageComponent implements OnInit {
3436 uiStateDragOver = false ;
3537 uiStateDragLeave = true ;
3638
39+ activeStep = 1 ;
40+
3741 constructor ( private backendService : BackendService ) { }
3842
39- ngOnInit ( ) { }
43+ ngOnInit ( ) {
44+ // since router strategy is to forcefully NOT reuse page components.
45+ // The Component is reiniated automatically on browse to /upload
46+ }
47+
48+ ngOnDestroy ( ) {
49+ this . preDestroy . next ( true ) ;
50+ this . preDestroy . complete ( ) ;
51+ }
4052
4153 handleDrop ( event : any ) {
4254 this . uiStateDragOver = false ;
@@ -77,14 +89,19 @@ export class UploadPageComponent implements OnInit {
7789 fileReader . addEventListener ( 'load' , function ( loadedEvent : any ) {
7890 self . uploadedFileBase64URI = loadedEvent . target . result ;
7991 // Upload via backend
80- self . backendService . uploadImage ( self . uploadedFileBase64URI , 'PNG' )
92+ self . backendService
93+ . uploadImage ( self . uploadedFileBase64URI , 'PNG' )
94+ . pipe (
95+ takeUntil ( self . preDestroy )
96+ )
8197 . subscribe ( uploadResponse => {
8298 console . log ( uploadResponse . fileName ) ;
8399 self . temporaryFileName = uploadResponse . fileName ;
84100 self . runCompressCommand ( ) ;
85101 } ) ;
86102 } ) ;
87103 fileReader . readAsDataURL ( files [ 0 ] ) ;
104+ self . activeStep = 2 ;
88105 }
89106 }
90107
@@ -102,7 +119,8 @@ export class UploadPageComponent implements OnInit {
102119 finalize ( ( ) => {
103120 console . log ( 'compress-done!' ) ;
104121 self . compressDone = true ;
105- } )
122+ } ) ,
123+ takeUntil ( self . preDestroy )
106124 )
107125 . subscribe ( data => {
108126 const terminalLine = new TerminalLine ( data ) ;
0 commit comments