(resourceId: string, resource?: SFFSResource)
| 413 | } |
| 414 | |
| 415 | const fetchResourceFile = async (resourceId: string, resource?: SFFSResource) => { |
| 416 | const base = join(app.getPath('userData'), 'sffs_backend', 'resources') |
| 417 | const filePath = join(base, resourceId) |
| 418 | |
| 419 | try { |
| 420 | let extension = '' |
| 421 | let newFileName = resourceId |
| 422 | if (resource) { |
| 423 | extension = getResourceFileExtension(resource.type) |
| 424 | newFileName = getResourceFileName(SFFSMain.convertResourceToCompositeResource(resource)) |
| 425 | } |
| 426 | |
| 427 | // try stored resource path first |
| 428 | if ( |
| 429 | resource && |
| 430 | resource.path && |
| 431 | (resource.path.endsWith(`.${extension}`) || resource.path.endsWith('.json')) |
| 432 | ) { |
| 433 | const result = await fetchFilePath(base, resource.path) |
| 434 | if (result) { |
| 435 | return result |
| 436 | } |
| 437 | } |
| 438 | |
| 439 | // then try the new path (with new file name and extension) |
| 440 | let newFilePath = join(base, extension ? `${newFileName}.${extension}` : resourceId) |
| 441 | let result = await fetchFilePath(base, newFilePath) |
| 442 | if (result) { |
| 443 | if (resource?.path !== newFilePath) { |
| 444 | await migrateResourceFile(newFilePath, newFilePath, resource) |
| 445 | } |
| 446 | |
| 447 | return result |
| 448 | } |
| 449 | |
| 450 | // try legacy path with only resourceId |
| 451 | const legacyFilePath = join(base, resourceId) |
| 452 | result = await fetchFilePath(base, legacyFilePath) |
| 453 | if (result) { |
| 454 | await migrateResourceFile(legacyFilePath, newFilePath, resource) |
| 455 | return result |
| 456 | } |
| 457 | |
| 458 | return { response: new Response('Not Found', { status: 404 }), filePath, base } |
| 459 | } catch (error) { |
| 460 | log.error('Error fetching resource file:', error) |
| 461 | return { response: new Response('Not Found', { status: 404 }), filePath, base } |
| 462 | } |
| 463 | } |
| 464 | |
| 465 | const handleSurfResourceDataRequest = async (req: GlobalRequest, resourceId: string) => { |
| 466 | const sffs = useSFFSMain() |
no test coverage detected