Browse Source

✨ lint, tidy up and some simplification

master
Martin McKeaveney 6 years ago
parent
commit
fd97c14a50
  1. 2
      packages/builder/src/builderStore/store/backend.js
  2. 121
      packages/server/src/api/controllers/static.js
  3. 8
      packages/standard-components/src/api.js
  4. 2
      packages/standard-components/src/attachments/AttachmentList.svelte

2
packages/builder/src/builderStore/store/backend.js

@ -28,7 +28,7 @@ export const getBackendUiStore = () => {
}, },
}, },
records: { records: {
save: record => save: () =>
store.update(state => { store.update(state => {
state.selectedView = state.selectedView state.selectedView = state.selectedView
return state return state

121
packages/server/src/api/controllers/static.js

@ -31,8 +31,6 @@ exports.uploadFile = async function(ctx) {
? Array.from(ctx.request.files.file) ? Array.from(ctx.request.files.file)
: [ctx.request.files.file] : [ctx.request.files.file]
let uploads = []
const attachmentsPath = resolve( const attachmentsPath = resolve(
budibaseAppsDir(), budibaseAppsDir(),
ctx.user.appId, ctx.user.appId,
@ -47,7 +45,7 @@ exports.uploadFile = async function(ctx) {
}, },
}) })
uploads = files.map(file => { const uploads = files.map(file => {
const fileExtension = [...file.name.split(".")].pop() const fileExtension = [...file.name.split(".")].pop()
const processedFileName = `${uuid.v4()}.${fileExtension}` const processedFileName = `${uuid.v4()}.${fileExtension}`
@ -59,51 +57,63 @@ exports.uploadFile = async function(ctx) {
s3, s3,
}) })
}) })
} else {
uploads = processLocalFileUploads(files, attachmentsPath)
// uploads = files.map(file => {
// const fileExtension = [...file.name.split(".")].pop()
// const processedFileName = `${uuid.v4()}.${fileExtension}`
// return fileProcessor.process({
// format: file.format,
// type: file.type,
// name: file.name,
// size: file.size,
// path: file.path,
// processedFileName,
// extension: fileExtension,
// outputPath: `${attachmentsPath}/${processedFileName}`,
// url: `/attachments/${processedFileName}`,
// })
// })
}
const responses = await Promise.all(uploads) ctx.body = await Promise.all(uploads)
return
}
ctx.body = responses ctx.body = await processLocalFileUploads({
files,
outputPath: attachmentsPath,
instanceId: ctx.user.instanceId,
})
} }
function processLocalFileUploads(files, attachmentsPath) { async function processLocalFileUploads({ files, outputPath, instanceId }) {
// create attachments dir if it doesnt exist // create attachments dir if it doesnt exist
!fs.existsSync(attachmentsPath) && !fs.existsSync(outputPath) && fs.mkdirSync(outputPath, { recursive: true })
fs.mkdirSync(attachmentsPath, { recursive: true })
const filesToProcess = files.map(file => { const filesToProcess = files.map(file => {
const fileExtension = [...file.name.split(".")].pop() const fileExtension = [...file.name.split(".")].pop()
// filenames converted to UUIDs so they are unique // filenames converted to UUIDs so they are unique
const processedFileName = `${uuid.v4()}.${fileExtension}` const processedFileName = `${uuid.v4()}.${fileExtension}`
console.log(file)
return { return {
...file, ...file,
processedFileName, processedFileName,
extension: fileExtension, extension: fileExtension,
outputPath: join(attachmentsPath, processedFileName), outputPath: join(outputPath, processedFileName),
url: join("/attachments", processedFileName), url: join("/attachments", processedFileName),
} }
}) })
return filesToProcess.map(fileProcessor.process) const fileProcessOperations = filesToProcess.map(fileProcessor.process)
const processedFiles = await Promise.all(fileProcessOperations)
let pendingFileUploads
// local document used to track which files need to be uploaded
// db.get throws an error if the document doesn't exist
// need to use a promise to default
const db = new CouchDB(instanceId)
await db
.get("_local/fileuploads")
.then(data => {
pendingFileUploads = data
})
.catch(() => {
pendingFileUploads = { _id: "_local/fileuploads", uploads: [] }
})
pendingFileUploads.uploads = [
...processedFiles,
...pendingFileUploads.uploads,
]
await db.put(pendingFileUploads)
return processedFiles
} }
exports.performLocalFileProcessing = async function(ctx) { exports.performLocalFileProcessing = async function(ctx) {
@ -115,55 +125,12 @@ exports.performLocalFileProcessing = async function(ctx) {
"attachments" "attachments"
) )
const fileProcessOperations = processLocalFileUploads(
files,
processedFileOutputPath
)
// // create attachments dir if it doesnt exist
// !fs.existsSync(attachmentsPath) &&
// fs.mkdirSync(attachmentsPath, { recursive: true })
// const filesToProcess = files.map(file => {
// const fileExtension = [...file.path.split(".")].pop()
// // filenames converted to UUIDs so they are unique
// const processedFileName = `${uuid.v4()}.${fileExtension}`
// return {
// ...file,
// processedFileName,
// extension: fileExtension,
// outputPath: join(attachmentsPath, processedFileName),
// url: join("/attachments", processedFileName),
// }
// })
// const fileProcessOperations = filesToProcess.map(fileProcessor.process)
try { try {
const processedFiles = await Promise.all(fileProcessOperations) ctx.body = await processLocalFileUploads({
files,
let pendingFileUploads outputPath: processedFileOutputPath,
// local document used to track which files need to be uploaded instanceId: ctx.user.instanceId,
// db.get throws an error if the document doesn't exist })
// need to use a promise to default
const db = new CouchDB(ctx.user.instanceId)
await db
.get("_local/fileuploads")
.then(data => {
pendingFileUploads = data
})
.catch(() => {
pendingFileUploads = { _id: "_local/fileuploads", uploads: [] }
})
pendingFileUploads.uploads = [
...processedFiles,
...pendingFileUploads.uploads,
]
await db.put(pendingFileUploads)
ctx.body = processedFiles
} catch (err) { } catch (err) {
ctx.throw(500, err) ctx.throw(500, err)
} }

8
packages/standard-components/src/api.js

@ -1,6 +1,10 @@
const apiCall = method => async (url, body, headers = { const apiCall = method => async (
url,
body,
headers = {
"Content-Type": "application/json", "Content-Type": "application/json",
}) => { }
) => {
const response = await fetch(url, { const response = await fetch(url, {
method: method, method: method,
body: body && JSON.stringify(body), body: body && JSON.stringify(body),

2
packages/standard-components/src/attachments/AttachmentList.svelte

@ -1,5 +1,5 @@
<script> <script>
import { FILE_TYPES } from "./fileTypes"; import { FILE_TYPES } from "./fileTypes"
export let files export let files
export let height = "70" export let height = "70"

Loading…
Cancel
Save