@@ -39,8 +39,8 @@ export function getObjectKey(url) {
39
39
}
40
40
return objectKey ;
41
41
}
42
- // TODO: callbacks should be removed from deleteObjectsFromS3 and deleteObjectFromS3
43
- export async function deleteObjectsFromS3 ( keyList , callback ) {
42
+
43
+ export async function deleteObjectsFromS3 ( keyList ) {
44
44
const objectsToDelete = keyList ?. map ( ( key ) => ( { Key : key } ) ) ;
45
45
46
46
if ( objectsToDelete . length > 0 ) {
@@ -51,33 +51,27 @@ export async function deleteObjectsFromS3(keyList, callback) {
51
51
52
52
try {
53
53
await s3Client . send ( new DeleteObjectsCommand ( params ) ) ;
54
- if ( callback ) {
55
- callback ( ) ;
56
- }
57
54
} 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 ) ;
61
59
}
62
60
}
63
- } else if ( callback ) {
64
- callback ( ) ;
65
61
}
66
62
}
67
63
68
- export function deleteObjectFromS3 ( req , res ) {
64
+ export async function deleteObjectFromS3 ( req , res ) {
69
65
const { objectKey, userId } = req . params ;
70
66
const fullObjectKey = userId ? `${ userId } /${ objectKey } ` : objectKey ;
71
67
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 ] ) ;
78
70
79
71
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
+ }
81
75
}
82
76
83
77
export function signS3 ( req , res ) {
@@ -116,8 +110,12 @@ export async function copyObjectInS3(url, userId) {
116
110
try {
117
111
await s3Client . send ( new HeadObjectCommand ( headParams ) ) ;
118
112
} 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
+ }
121
119
}
122
120
123
121
const params = {
@@ -131,7 +129,12 @@ export async function copyObjectInS3(url, userId) {
131
129
await s3Client . send ( new CopyObjectCommand ( params ) ) ;
132
130
return `${ s3Bucket } ${ userId } /${ newFilename } ` ;
133
131
} 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 ) ;
135
138
throw error ;
136
139
}
137
140
}
@@ -224,31 +227,30 @@ export async function listObjectsInS3ForUser(userId) {
224
227
225
228
return { assets : projectAssets , totalSize } ;
226
229
} 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 ) ;
228
235
throw error ;
229
236
}
230
237
}
231
238
232
- export function listObjectsInS3ForUserRequestHandler ( req , res ) {
239
+ export async function listObjectsInS3ForUserRequestHandler ( req , res ) {
233
240
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
+
240
245
if ( ! user ) {
241
246
res . status ( 404 ) . json ( { error : 'User not found' } ) ;
242
247
return ;
243
248
}
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
+ }
254
256
}
0 commit comments