Improved archive storage calculations and errors
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
import { createS3FilesCollection } from '/imports/api/files/s3FileStorage.js';
|
||||
import SimpleSchema from 'simpl-schema';
|
||||
import { incrementFileStorageUsed } from '/imports/api/users/methods/updateFileStorageUsed.js';
|
||||
import { CreaturePropertySchema } from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import { CreatureSchema } from '/imports/api/creature/creatures/Creatures.js';
|
||||
|
||||
const ArchiveCreatureFiles = createS3FilesCollection({
|
||||
collectionName: 'archiveCreatureFiles',
|
||||
@@ -16,7 +18,7 @@ const ArchiveCreatureFiles = createS3FilesCollection({
|
||||
return true;
|
||||
},
|
||||
onAfterUpload(file) {
|
||||
incrementFileStorageUsed(file.userId, file.size);
|
||||
if (Meteor.isServer) incrementFileStorageUsed(file.userId, file.size);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -25,17 +27,11 @@ let archiveSchema = new SimpleSchema({
|
||||
type: Object,
|
||||
blackbox: true,
|
||||
},
|
||||
creature: {
|
||||
type: Object,
|
||||
blackbox: true,
|
||||
},
|
||||
creature: CreatureSchema,
|
||||
properties: {
|
||||
type: Array,
|
||||
},
|
||||
'properties.$': {
|
||||
type: Object,
|
||||
blackbox: true,
|
||||
},
|
||||
'properties.$': CreaturePropertySchema,
|
||||
experiences: {
|
||||
type: Array,
|
||||
},
|
||||
|
||||
@@ -9,7 +9,6 @@ import CreatureLogs from '/imports/api/creature/log/CreatureLogs.js';
|
||||
import Experiences from '/imports/api/creature/experience/Experiences.js';
|
||||
import { removeCreatureWork } from '/imports/api/creature/creatures/methods/removeCreature.js';
|
||||
import ArchiveCreatureFiles from '/imports/api/creature/archive/ArchiveCreatureFiles.js';
|
||||
import { incrementFileStorageUsed } from '/imports/api/users/methods/updateFileStorageUsed.js';
|
||||
|
||||
export function getArchiveObj(creatureId){
|
||||
// Build the archive document
|
||||
@@ -32,7 +31,7 @@ export function getArchiveObj(creatureId){
|
||||
return archiveCreature;
|
||||
}
|
||||
|
||||
export function archiveCreature(creatureId, userId){
|
||||
export function archiveCreature(creatureId){
|
||||
const archive = getArchiveObj(creatureId);
|
||||
const buffer = Buffer.from(JSON.stringify(archive, null, 2));
|
||||
ArchiveCreatureFiles.write(buffer, {
|
||||
@@ -44,12 +43,11 @@ export function archiveCreature(creatureId, userId){
|
||||
creatureId: archive.creature._id,
|
||||
creatureName: archive.creature.name,
|
||||
},
|
||||
}, (error, file) => {
|
||||
}, (error) => {
|
||||
if (error){
|
||||
throw error;
|
||||
} else {
|
||||
removeCreatureWork(creatureId);
|
||||
incrementFileStorageUsed(userId, file.size);
|
||||
}
|
||||
}, true);
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
<v-btn
|
||||
outlined
|
||||
style="height: 100%; width: 100%; min-height: 120px;"
|
||||
class="archive-button"
|
||||
:color="archiveFileError ? 'error' : undefined"
|
||||
@click="$refs.archiveFileInput.click()"
|
||||
>
|
||||
@@ -183,12 +184,16 @@ export default {
|
||||
data = JSON.parse(fr.result);
|
||||
} catch (e){
|
||||
self.archiveFileError = 'File could not be parsed';
|
||||
console.error(e);
|
||||
return;
|
||||
}
|
||||
console.log(data);
|
||||
|
||||
try {
|
||||
archiveSchema.validate(data);
|
||||
archiveSchema.validate(archiveSchema.clean(data));
|
||||
} catch (e){
|
||||
self.archiveFileError = e.reason || e.message || e.toString();
|
||||
self.archiveFileError = 'File failed validation: ' + (e.reason || e.message || e.toString());
|
||||
console.error(e);
|
||||
return;
|
||||
}
|
||||
|
||||
let uploadInstance = ArchiveCreatureFiles.insert({
|
||||
@@ -245,3 +250,10 @@ export default {
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.v-btn.archive-button > .v-btn__content {
|
||||
white-space: normal;
|
||||
max-width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user