96 lines
2.5 KiB
JavaScript
96 lines
2.5 KiB
JavaScript
Template.libraryDialog.onCreated(function(){
|
|
this.userId = new ReactiveVar();
|
|
this.autorun(() => {
|
|
var library = Libraries.findOne(Template.currentData().libraryId, {
|
|
fields: {readers: 1, writers: 1, owner: 1}
|
|
});
|
|
if (!library) return;
|
|
this.subscribe("userNames", _.union(library.readers, library.writers, [library.owner]));
|
|
});
|
|
});
|
|
|
|
Template.libraryDialog.helpers({
|
|
library(){
|
|
return Libraries.findOne(this.libraryId);
|
|
},
|
|
readers: function(){
|
|
var library = Libraries.findOne(this.libraryId, {fields: {readers: 1}});
|
|
return library && library.readers;
|
|
},
|
|
writers: function(){
|
|
var library = Libraries.findOne(this.libraryId, {fields: {writers: 1}});
|
|
return library && library.writers
|
|
},
|
|
username: function(id){
|
|
const user = Meteor.users.findOne(id);
|
|
return user && user.username || "user: " + id;
|
|
},
|
|
shareButtonDisabled: function(){
|
|
return !Template.instance().userId.get();
|
|
},
|
|
userFindError: function(){
|
|
if (!Template.instance().userId.get()){
|
|
return "User not found";
|
|
}
|
|
},
|
|
});
|
|
|
|
Template.libraryDialog.events({
|
|
"input #libraryNameInput": _.debounce(function(event){
|
|
const input = event.currentTarget;
|
|
var name = input.value;
|
|
if (!name){
|
|
input.invalid = true;
|
|
input.errorMessage = "Name is required";
|
|
} else {
|
|
input.invalid = false;
|
|
Libraries.update(this.libraryId, {
|
|
$set: {name}
|
|
}, {
|
|
removeEmptyStrings: false,
|
|
trimStrings: false,
|
|
});
|
|
}
|
|
}, 300),
|
|
"click #deleteButton": function(){
|
|
Meteor.call("removeLibrary", this.libraryId);
|
|
popDialogStack();
|
|
},
|
|
"input #userNameOrEmailInput":
|
|
function(event, instance){
|
|
var userName = instance.find("#userNameOrEmailInput").value;
|
|
instance.userId.set(undefined);
|
|
Meteor.call("getUserId", userName, function(err, result) {
|
|
if (err){
|
|
console.error(err);
|
|
} else {
|
|
console.log(result);
|
|
instance.userId.set(result);
|
|
}
|
|
});
|
|
},
|
|
"click #shareButton": function(event, instance){
|
|
var self = this;
|
|
var permission = instance.find("#accessLevelMenu").selected;
|
|
if (!permission) throw "no permission set";
|
|
var userId = instance.userId.get();
|
|
if (!userId) return;
|
|
if (permission === "write"){
|
|
Libraries.update(self.libraryId, {
|
|
$addToSet: {writers: userId},
|
|
$pull: {readers: userId},
|
|
});
|
|
} else {
|
|
Libraries.update(self.libraryId, {
|
|
$addToSet: {readers: userId},
|
|
$pull: {writers: userId},
|
|
});
|
|
}
|
|
},
|
|
"click .deleteShare": function(event, instance) {
|
|
Libraries.update(instance.data.libraryId, {
|
|
$pull: {writers: this.id, readers: this.id}
|
|
});
|
|
},
|
|
});
|