diff --git a/app/imports/api/files/userImages/methods/removeUserImage.ts b/app/imports/api/files/userImages/methods/removeUserImage.ts
index a3efbf16..e81b4b11 100644
--- a/app/imports/api/files/userImages/methods/removeUserImage.ts
+++ b/app/imports/api/files/userImages/methods/removeUserImage.ts
@@ -4,7 +4,7 @@ import { RateLimiterMixin } from 'ddp-rate-limiter-mixin';
import { incrementFileStorageUsed } from '/imports/api/users/methods/updateFileStorageUsed';
import UserImages from '/imports/api/files/userImages/UserImages';
-const removeArchiveCreature = new ValidatedMethod({
+const removeUserImage = new ValidatedMethod({
name: 'userImages.methods.remove',
validate: new SimpleSchema({
'fileId': {
@@ -41,4 +41,4 @@ const removeArchiveCreature = new ValidatedMethod({
},
});
-export default removeArchiveCreature;
+export default removeUserImage;
diff --git a/app/imports/client/ui/components/ImageUploadInput.vue b/app/imports/client/ui/components/ImageUploadInput.vue
index c111d7a5..5d2b0b98 100644
--- a/app/imports/client/ui/components/ImageUploadInput.vue
+++ b/app/imports/client/ui/components/ImageUploadInput.vue
@@ -1,7 +1,7 @@
-
-
-
- {{ model.name }}
-
-
- {{ model.size }}
-
-
-
-
-
- mdi-delete
-
-
- mdi-download
-
-
-
-
-
-
diff --git a/app/imports/client/ui/files/userImages/ImageInputDialog.vue b/app/imports/client/ui/files/userImages/ImageInputDialog.vue
index 7e2af7b9..3b09400d 100644
--- a/app/imports/client/ui/files/userImages/ImageInputDialog.vue
+++ b/app/imports/client/ui/files/userImages/ImageInputDialog.vue
@@ -123,7 +123,11 @@ export default {
{
userId,
}, {
- sort: {'size': -1},
+ sort: {
+ 'meta.createdAt': -1,
+ 'name': 1,
+ 'size': -1,
+ },
}
).map(f => {
f.size = prettyBytes(f.size);
diff --git a/app/imports/client/ui/files/userImages/ImagePreviewDialog.vue b/app/imports/client/ui/files/userImages/ImagePreviewDialog.vue
index 7ca9870e..bc75b65d 100644
--- a/app/imports/client/ui/files/userImages/ImagePreviewDialog.vue
+++ b/app/imports/client/ui/files/userImages/ImagePreviewDialog.vue
@@ -1,6 +1,7 @@
@@ -8,17 +9,32 @@
diff --git a/app/imports/client/ui/files/userImages/UserImageCard.vue b/app/imports/client/ui/files/userImages/UserImageCard.vue
new file mode 100644
index 00000000..d6c2f7f7
--- /dev/null
+++ b/app/imports/client/ui/files/userImages/UserImageCard.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+ {{ model.name }}
+
+
+ {{ model.size }}
+
+
+
+
+
+
+ mdi-delete
+
+
+
+
+
+ Delete file
+
+ mdi-delete
+
+
+
+
+
+
+ mdi-download
+
+
+
+
+
+
+
+
diff --git a/app/imports/client/ui/pages/Files.vue b/app/imports/client/ui/pages/Files.vue
index 1325159f..4aa2a76c 100644
--- a/app/imports/client/ui/pages/Files.vue
+++ b/app/imports/client/ui/pages/Files.vue
@@ -64,20 +64,33 @@
-
+
+
+
+
+
+
- {inputImageHref = val; /*ack()*/}"
+
-
+
@@ -118,7 +132,7 @@ import prettyBytes from 'pretty-bytes';
import ArchiveFileCard from '/imports/client/ui/files/ArchiveFileCard.vue';
import FileStorageStats from '/imports/client/ui/files/FileStorageStats.vue';
import ImageUploadInput from '/imports/client/ui/components/ImageUploadInput.vue';
-import UserImageCard from '/imports/client/ui/files/UserImageCard.vue';
+import UserImageCard from '/imports/client/ui/files/userImages/UserImageCard.vue';
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
import { archiveSchema } from '/imports/api/creature/archive/ArchiveCreatureFiles';
import migrateArchive from '/imports/migrations/archive/migrateArchive';
@@ -133,7 +147,8 @@ export default {
components: {
ArchiveFileCard,
FileStorageStats,
- SmartImageInput,
+ UserImageCard,
+ ImageUploadInput,
},
data(){ return {
updateStorageUsedLoading: false,
@@ -164,6 +179,24 @@ export default {
return f;
});
},
+ imageFiles() {
+ const userId = Meteor.userId();
+ return UserImages.find(
+ {
+ userId,
+ }, {
+ sort: {
+ 'meta.createdAt': -1,
+ 'name': 1,
+ 'size': -1,
+ },
+ }
+ ).map(f => {
+ f.size = prettyBytes(f.size);
+ f.link = UserImages.link(f);
+ return f;
+ });
+ },
},
watch: {
archiveUploadInProgress(val){
@@ -231,18 +264,14 @@ export default {
// These are the event functions, don't need most of them, it shows where we are in the process
uploadInstance.on('start', function () {
- console.log('Starting');
self.archiveUploadIndeterminate = false;
});
uploadInstance.on('end', function (error, fileObj) {
- console.log('On end File Object: ', fileObj);
self.archiveUploadInProgress = false;
});
uploadInstance.on('uploaded', function (error, fileObj) {
- console.log('uploaded: ', fileObj);
-
// Remove the file from the input box
self.file = undefined;
@@ -251,7 +280,6 @@ export default {
});
uploadInstance.on('error', function (error, fileObj) {
- console.log('Error during upload: ' + error, fileObj)
const text = error.reason || error.message || error;
snackbar({text});
self.archiveFileError = text;
@@ -259,12 +287,10 @@ export default {
});
uploadInstance.on('progress', function (progress, fileObj) {
- console.log('Upload Percentage: ' + progress, fileObj)
- // Update our progress bar
self.archiveUploadProgress = progress;
});
- uploadInstance.start(); // Must manually start the upload
+ uploadInstance.start();
});
fr.readAsText(file);
diff --git a/app/imports/server/publications/userImages.js b/app/imports/server/publications/userImages.js
index a50b44b2..60616a1e 100644
--- a/app/imports/server/publications/userImages.js
+++ b/app/imports/server/publications/userImages.js
@@ -3,5 +3,11 @@ import UserImages from '/imports/api/files/userImages/UserImages';
Meteor.publish('userImages', function () {
return UserImages.find({
userId: this.userId,
+ }, {
+ sort: {
+ 'meta.createdAt': -1,
+ 'name': 1,
+ 'size': -1,
+ },
}).cursor;
});