This repository was archived by the owner on Jun 26, 2020. It is now read-only.
File tree Expand file tree Collapse file tree 4 files changed +73
-4
lines changed
Expand file tree Collapse file tree 4 files changed +73
-4
lines changed Original file line number Diff line number Diff line change @@ -30,6 +30,8 @@ export default class FileReader {
3030 */
3131 this . _reader = reader ;
3232
33+ this . _data = undefined ;
34+
3335 /**
3436 * Number of bytes loaded.
3537 *
@@ -53,6 +55,16 @@ export default class FileReader {
5355 return this . _reader . error ;
5456 }
5557
58+ /**
59+ * Holds the data of an already loaded file. The file must be first loaded
60+ * by using {@link module:upload/filereader~FileReader#read `read()`}.
61+ *
62+ * @type {File|undefined }
63+ */
64+ get data ( ) {
65+ return this . _data ;
66+ }
67+
5668 /**
5769 * Reads the provided file.
5870 *
@@ -66,7 +78,11 @@ export default class FileReader {
6678
6779 return new Promise ( ( resolve , reject ) => {
6880 reader . onload = ( ) => {
69- resolve ( reader . result ) ;
81+ const result = reader . result ;
82+
83+ this . _data = result ;
84+
85+ resolve ( result ) ;
7086 } ;
7187
7288 reader . onerror = ( ) => {
Original file line number Diff line number Diff line change @@ -400,6 +400,16 @@ class FileLoader {
400400 }
401401 }
402402
403+ /**
404+ * Returns the file data. To read its data, you need for first load the file
405+ * by using the {@link module:upload/filerepository~FileLoader#read `read()`} method.
406+ *
407+ * @type {File|undefined }
408+ */
409+ get data ( ) {
410+ return this . _reader . data ;
411+ }
412+
403413 /**
404414 * Reads file using {@link module:upload/filereader~FileReader}.
405415 *
@@ -521,7 +531,6 @@ class FileLoader {
521531 this . _filePromiseWrapper = undefined ;
522532 this . _reader = undefined ;
523533 this . _adapter = undefined ;
524- this . data = undefined ;
525534 this . uploadResponse = undefined ;
526535 }
527536
Original file line number Diff line number Diff line change @@ -37,7 +37,24 @@ describe( 'FileReader', () => {
3737 expect ( reader . loaded ) . to . equal ( 55 ) ;
3838 } ) ;
3939
40- describe ( 'read' , ( ) => {
40+ describe ( 'data' , ( ) => {
41+ it ( 'should be undefined if file was not loaded' , ( ) => {
42+ expect ( reader . data ) . to . be . undefined ;
43+ } ) ;
44+
45+ it ( 'should equal to loaded file data' , ( ) => {
46+ const promise = reader . read ( fileMock )
47+ . then ( ( ) => {
48+ expect ( reader . data ) . to . equal ( 'File contents.' ) ;
49+ } ) ;
50+
51+ nativeReaderMock . mockSuccess ( 'File contents.' ) ;
52+
53+ return promise ;
54+ } ) ;
55+ } ) ;
56+
57+ describe ( 'read()' , ( ) => {
4158 it ( 'should return a promise' , ( ) => {
4259 expect ( reader . read ( fileMock ) ) . to . be . instanceOf ( Promise ) ;
4360 } ) ;
@@ -81,7 +98,7 @@ describe( 'FileReader', () => {
8198 } ) ;
8299 } ) ;
83100
84- describe ( 'abort' , ( ) => {
101+ describe ( 'abort() ' , ( ) => {
85102 it ( 'should allow to abort reading' , ( ) => {
86103 const promise = reader . read ( fileMock )
87104 . then ( ( ) => {
Original file line number Diff line number Diff line change @@ -452,6 +452,33 @@ describe( 'FileRepository', () => {
452452 } ) ;
453453 } ) ;
454454
455+ describe ( 'data getter' , ( ) => {
456+ it ( 'should be undefined if no file loaded' , ( ) => {
457+ expect ( loader . data ) . to . be . undefined ;
458+ } ) ;
459+
460+ it ( 'should return promise which resolves to a file' , ( ) => {
461+ let resolveFile = null ;
462+
463+ const filePromise = new Promise ( resolve => {
464+ resolveFile = resolve ;
465+ } ) ;
466+
467+ const loader = fileRepository . createLoader ( filePromise ) ;
468+
469+ const promise = loader . read ( )
470+ . then ( ( ) => {
471+ expect ( loader . data ) . to . equal ( 'result data' ) ;
472+ } ) ;
473+
474+ resolveFile ( createNativeFileMock ( ) ) ;
475+
476+ loader . file . then ( ( ) => nativeReaderMock . mockSuccess ( 'result data' ) ) ;
477+
478+ return promise ;
479+ } ) ;
480+ } ) ;
481+
455482 describe ( 'read()' , ( ) => {
456483 it ( 'should throw error when status is different than idle' , ( ) => {
457484 loader . status = 'uploading' ;
You can’t perform that action at this time.
0 commit comments