@@ -39,8 +39,8 @@ export function getObjectKey(url) {
3939 }
4040 return objectKey ;
4141}
42- // TODO: callbacks should be removed from deleteObjectsFromS3 and deleteObjectFromS3
43- export async function deleteObjectsFromS3 ( keyList , callback ) {
42+
43+ export async function deleteObjectsFromS3 ( keyList ) {
4444 const objectsToDelete = keyList ?. map ( ( key ) => ( { Key : key } ) ) ;
4545
4646 if ( objectsToDelete . length > 0 ) {
@@ -51,33 +51,27 @@ export async function deleteObjectsFromS3(keyList, callback) {
5151
5252 try {
5353 await s3Client . send ( new DeleteObjectsCommand ( params ) ) ;
54- if ( callback ) {
55- callback ( ) ;
56- }
5754 } catch ( error ) {
58- console . error ( 'Error deleting objects from S3: ' , error ) ;
59- if ( callback ) {
60- callback ( error ) ;
55+ if ( error . name === 'NotFound' ) {
56+ console . log ( 'Object does not exist:' , error ) ;
57+ } else {
58+ console . error ( 'Error deleting objects from S3: ' , error ) ;
6159 }
6260 }
63- } else if ( callback ) {
64- callback ( ) ;
6561 }
6662}
6763
68- export function deleteObjectFromS3 ( req , res ) {
64+ export async function deleteObjectFromS3 ( req , res ) {
6965 const { objectKey, userId } = req . params ;
7066 const fullObjectKey = userId ? `${ userId } /${ objectKey } ` : objectKey ;
7167
72- deleteObjectsFromS3 ( [ fullObjectKey ] , ( error , result ) => {
73- if ( error ) {
74- return res
75- . status ( 500 )
76- . json ( { error : 'Failed to delete object from s3.' } ) ;
77- }
68+ try {
69+ await deleteObjectsFromS3 ( [ fullObjectKey ] ) ;
7870
7971 return res . json ( { success : true , message : 'Object deleted successfully.' } ) ;
80- } ) ;
72+ } catch ( err ) {
73+ return res . status ( 500 ) . json ( { error : 'Failed to delete object from s3.' } ) ;
74+ }
8175}
8276
8377export function signS3 ( req , res ) {
@@ -116,8 +110,12 @@ export async function copyObjectInS3(url, userId) {
116110 try {
117111 await s3Client . send ( new HeadObjectCommand ( headParams ) ) ;
118112 } catch ( error ) {
119- console . error ( 'Error fetching object metadata: ' , error ) ;
120- throw error ;
113+ if ( error . name === 'NotFound' ) {
114+ console . log ( 'Object does not exist:' , error ) ;
115+ } else {
116+ console . error ( 'Error fetching object metadata:' , error ) ;
117+ throw error ;
118+ }
121119 }
122120
123121 const params = {
@@ -131,7 +129,12 @@ export async function copyObjectInS3(url, userId) {
131129 await s3Client . send ( new CopyObjectCommand ( params ) ) ;
132130 return `${ s3Bucket } ${ userId } /${ newFilename } ` ;
133131 } catch ( error ) {
134- console . error ( 'Error copying object in S3:' , error ) ;
132+ // temporary error handling for sketches with missing assets
133+ if ( error . startsWith ( 'TypeError' ) ) {
134+ console . log ( 'Object does not exist:' , error ) ;
135+ return null ;
136+ }
137+ console . error ( 'Error copying object:' , error ) ;
135138 throw error ;
136139 }
137140}
@@ -224,31 +227,30 @@ export async function listObjectsInS3ForUser(userId) {
224227
225228 return { assets : projectAssets , totalSize } ;
226229 } catch ( error ) {
227- console . log ( 'Got an error:' , error ) ;
230+ if ( error . name === 'NotFound' ) {
231+ console . log ( 'Object does not exist:' , error ) ;
232+ return null ;
233+ }
234+ console . error ( 'Got an error: ' , error ) ;
228235 throw error ;
229236 }
230237}
231238
232- export function listObjectsInS3ForUserRequestHandler ( req , res ) {
239+ export async function listObjectsInS3ForUserRequestHandler ( req , res ) {
233240 const { username } = req . user ;
234- User . findByUsername ( username , ( err , user ) => {
235- if ( err ) {
236- console . error ( 'Error fetching user:' , err . message ) ;
237- res . status ( 500 ) . json ( { error : 'Failed to fetch user' } ) ;
238- return ;
239- }
241+
242+ try {
243+ const user = await User . findByUsername ( username ) ;
244+
240245 if ( ! user ) {
241246 res . status ( 404 ) . json ( { error : 'User not found' } ) ;
242247 return ;
243248 }
244- const userId = user . id ;
245- listObjectsInS3ForUser ( userId )
246- . then ( ( objects ) => {
247- res . json ( objects ) ;
248- } )
249- . catch ( ( error ) => {
250- console . error ( 'Error listing objects in S3:' , error . message ) ;
251- res . status ( 500 ) . json ( { error : 'Failed to list objects in S3' } ) ;
252- } ) ;
253- } ) ;
249+
250+ const objects = await listObjectsInS3ForUser ( user . id ) ;
251+ res . json ( objects ) ;
252+ } catch ( error ) {
253+ console . error ( 'Error listing objects in S3:' , error . message ) ;
254+ res . status ( 500 ) . json ( { error : 'Failed to list objects in S3' } ) ;
255+ }
254256}
0 commit comments