Compare commits

..

2 Commits
1.8.0 ... 1.8.2

Author SHA1 Message Date
Stefan Zermatten
8489ef5ec0 Fixed restoring characters not working correctly for sub documents 2019-02-11 13:04:14 +02:00
Stefan Zermatten
c9710bdb09 Fixed restored characters not belonging to the user restoring them 2019-02-11 12:10:04 +02:00
4 changed files with 42 additions and 13 deletions

View File

@@ -86,14 +86,7 @@ Template.characterList.events({
template: "characterRestoreDialog", template: "characterRestoreDialog",
element: event.currentTarget, element: event.currentTarget,
callback(dump){ callback(dump){
if (!dump) return; return;
dump.character.name += " - Restored"
giveCharacterDumpNewIds(dump);
restoreCharacter(dump);
Router.go("characterSheet", {
_id: dump.character._id,
urlName: dump.character.urlName || '-',
});
}, },
}) })
}, },

View File

@@ -17,6 +17,9 @@
{{error}} {{error}}
</p> </p>
{{/if}} {{/if}}
{{#if loading}}
<paper-spinner active></paper-spinner>
{{/if}}
</div> </div>
</app-header-layout> </app-header-layout>
<div class="buttons layout horizontal end-justified"> <div class="buttons layout horizontal end-justified">

View File

@@ -2,14 +2,18 @@ Template.characterRestoreDialog.onCreated(function(){
this.dump = {}; this.dump = {};
this.valid = new ReactiveVar(false); this.valid = new ReactiveVar(false);
this.error = new ReactiveVar(null); this.error = new ReactiveVar(null);
this.loading = new ReactiveVar(false);
}); });
Template.characterRestoreDialog.helpers({ Template.characterRestoreDialog.helpers({
invalid(){ invalid(){
return !Template.instance().valid.get(); return !Template.instance().valid.get();
}, },
error(){ error(){
return Template.instance().error.get(); return Template.instance().error.get();
},
loading(){
return Template.instance().loading.get();
}, },
}); });
@@ -44,6 +48,19 @@ Template.characterRestoreDialog.events({
popDialogStack(); popDialogStack();
}, },
"click .addButton": function(event, instance){ "click .addButton": function(event, instance){
popDialogStack(instance.dump); let dump = instance.dump;
if (!dump) return;
Meteor.call('restoreCharacter', dump, (e, char) => {
instance.loading.set(false);
if (!char){
instance.error.set(e.message)
} else {
popDialogStack();
Router.go("characterSheet", {
_id: char._id,
urlName: char.urlName || '-',
});
}
});
}, },
}); });

View File

@@ -73,11 +73,27 @@ giveCharacterDumpNewIds = function(characterDump){
} }
restoreCharacter = function(characterDump){ restoreCharacter = function(characterDump){
Characters.insert(characterDump.character); Characters.direct.insert(characterDump.character);
for (collectionName in characterDump.collections){ for (collectionName in characterDump.collections){
let collection = Meteor.Collection.get(collectionName); let collection = Meteor.Collection.get(collectionName);
for (doc in characterDump[collectionName]){ for (doc of characterDump.collections[collectionName]){
collection.insert(doc); // delete problematic keys that shouldn't ever be available on insert
delete doc.restoredAt;
delete doc.restoredBy;
// Insert the doc with no hooks
collection.direct.insert(doc);
} }
} }
}; };
Meteor.methods({
restoreCharacter(characterDump){
characterDump.character.name += " - Restored"
characterDump.character.owner = Meteor.userId();
characterDump.character.readers = [];
characterDump.character.writers = [];
giveCharacterDumpNewIds(characterDump);
restoreCharacter(characterDump);
return characterDump.character
},
});