@@ -2,12 +2,12 @@ import { LightningElement, wire, api } from "lwc";
22import getRelatedFiles from "@salesforce/apex/GetFilesController.getFilesList" ;
33import getFileVersionDetails from "@salesforce/apex/GetFilesController.getFileVersionDetails" ;
44import createContentDocLink from "@salesforce/apex/GetFilesController.createContentDocLink" ;
5- import { deleteRecord , getRecord , createRecord } from "lightning/uiRecordApi" ;
5+ import { deleteRecord , createRecord } from "lightning/uiRecordApi" ;
66import { ShowToastEvent } from "lightning/platformShowToastEvent" ;
77import { refreshApex } from "@salesforce/apex" ;
88
99const actions = [
10- { label : "Version Details " , name : "show_details" } ,
10+ { label : "Version History " , name : "show_details" } ,
1111 { label : "Upload New Version" , name : "upload_version" } ,
1212 { label : "Delete File" , name : "delete" }
1313] ;
@@ -57,6 +57,7 @@ export default class FilesRelatedList extends LightningElement {
5757 _currentDocId = null ;
5858 showPreview = false ;
5959 currentPreviewFileId = null ;
60+ showSpinner = false ;
6061
6162 handleFileNameChange ( event ) {
6263 this . fileTitle = event . detail . value ;
@@ -96,13 +97,13 @@ export default class FilesRelatedList extends LightningElement {
9697 const action = event . detail . action . name ;
9798 const row = event . detail . row ;
9899 this . _currentDocId = row . id ;
99- if ( action == "show_details" ) {
100+ if ( action === "show_details" ) {
100101 this . fileUpload = false ;
101102 this . showVersionDetails ( ) ;
102- } else if ( action == "upload_version" ) {
103+ } else if ( action === "upload_version" ) {
103104 this . fileUpload = true ;
104105 this . showModal = true ;
105- } else if ( action == "delete" ) {
106+ } else if ( action === "delete" ) {
106107 this . _deleteRecord ( [ this . _currentDocId ] ) ;
107108 }
108109 } //}}}
@@ -112,8 +113,9 @@ export default class FilesRelatedList extends LightningElement {
112113 const selectedRowIds = this . template
113114 . querySelector ( "c-custom-datatable[data-tablename='filestable']" )
114115 . getSelectedRows ( )
115- . map ( row => row . id ) ;
116+ . map ( ( row ) => row . id ) ;
116117 if ( selectedRowIds . length > 0 ) {
118+ //eslint-disable-next-line
117119 let decision = confirm (
118120 `Are you sure you want to delete ${ selectedRowIds . length } records?`
119121 ) ;
@@ -125,7 +127,7 @@ export default class FilesRelatedList extends LightningElement {
125127
126128 _deleteRecord ( recordIds ) {
127129 //{{{
128- Promise . all ( recordIds . map ( id => deleteRecord ( id ) ) )
130+ Promise . all ( recordIds . map ( ( id ) => deleteRecord ( id ) ) )
129131 . then ( ( ) => {
130132 refreshApex ( this . _filesList ) ;
131133 this . dispatchEvent (
@@ -135,7 +137,7 @@ export default class FilesRelatedList extends LightningElement {
135137 } )
136138 ) ;
137139 } )
138- . catch ( err => {
140+ . catch ( ( err ) => {
139141 this . dispatchEvent (
140142 new ShowToastEvent ( {
141143 variant : "error" ,
@@ -157,30 +159,42 @@ export default class FilesRelatedList extends LightningElement {
157159 //{{{
158160 console . log ( ">> file version details" ) ;
159161 getFileVersionDetails ( { fileId : this . _currentDocId } )
160- . then ( result => {
162+ . then ( ( result ) => {
161163 console . log ( ">> version details " + JSON . stringify ( result ) ) ;
162164 this . versionDetails = result ;
163165 this . showModal = true ;
164166 } )
165- . catch ( err => {
167+ . catch ( ( err ) => {
166168 console . error ( JSON . stringify ( err ) ) ;
167169 } ) ;
168170 } //}}}
169171
170172 handleUpload ( event ) {
171173 //{{{
172174 event . preventDefault ( ) ;
173- const file = this . template . querySelector ( "input.file" ) . files [ 0 ] ;
174- const reasonForChange = this . template . querySelector (
175- "lightning-input.reason"
176- ) . value ;
177- const reader = new FileReader ( ) ;
178- let fileData = "" ;
179- reader . onload = ( ) => {
180- fileData = reader . result ;
181- this . _uploadFile ( file , fileData , reasonForChange ) ;
182- } ;
183- reader . readAsDataURL ( file ) ;
175+ this . showSpinner = true ;
176+ try {
177+ const file = this . template . querySelector ( "input.file" ) . files [ 0 ] ;
178+ const reasonForChange = this . template . querySelector (
179+ "lightning-input.reason"
180+ ) . value ;
181+ const reader = new FileReader ( ) ;
182+ let fileData = "" ;
183+ reader . onload = ( ) => {
184+ fileData = reader . result ;
185+ this . _uploadFile ( file , fileData , reasonForChange ) ;
186+ } ;
187+ reader . readAsDataURL ( file ) ;
188+ } catch ( err ) {
189+ console . error ( err ) ;
190+ this . dispatchEvent (
191+ new ShowToastEvent ( {
192+ variant : "error" ,
193+ message : `File upload failed: ${ err . body . message || err . body . error } `
194+ } )
195+ ) ;
196+ this . showSpinner = false ;
197+ }
184198 } //}}}
185199
186200 _uploadFile ( file , fileData , reasonForChange ) {
@@ -195,7 +209,8 @@ export default class FilesRelatedList extends LightningElement {
195209 payload . ContentDocumentId = this . _currentDocId ;
196210 }
197211 createRecord ( { apiName : "ContentVersion" , fields : payload } )
198- . then ( cVersion => {
212+ . then ( ( cVersion ) => {
213+ this . showSpinner = false ;
199214 if ( ! this . _currentDocId ) {
200215 this . _createContentDocLink ( cVersion . id ) ;
201216 } else {
@@ -208,13 +223,14 @@ export default class FilesRelatedList extends LightningElement {
208223 ) ;
209224 }
210225 } )
211- . catch ( err => {
226+ . catch ( ( err ) => {
212227 this . dispatchEvent (
213228 new ShowToastEvent ( {
214229 variant : "error" ,
215- message : `An error occurred : ${ err . body . message || err . body . error } `
230+ message : `File upload failed : ${ err . body . message || err . body . error } `
216231 } )
217232 ) ;
233+ this . showSpinner = false ;
218234 } ) ;
219235 } //}}}
220236
@@ -224,7 +240,7 @@ export default class FilesRelatedList extends LightningElement {
224240 contentVersionId : cvId ,
225241 recordId : this . recordId
226242 } )
227- . then ( cId => {
243+ . then ( ( cId ) => {
228244 this . closeModal ( ) ;
229245 this . dispatchEvent (
230246 new ShowToastEvent ( {
@@ -233,7 +249,7 @@ export default class FilesRelatedList extends LightningElement {
233249 } )
234250 ) ;
235251 } )
236- . catch ( err => {
252+ . catch ( ( err ) => {
237253 this . dispatchEvent (
238254 new ShowToastEvent ( {
239255 variant : "error" ,
0 commit comments