77 lines
2.2 KiB
JavaScript
77 lines
2.2 KiB
JavaScript
Template.shareDialog.onCreated(function(){
|
|
this.userId = new ReactiveVar();
|
|
});
|
|
|
|
Template.shareDialog.helpers({
|
|
viewPermission: function() {
|
|
var char = Characters.findOne(this._id, {fields: {settings: 1}});
|
|
return char.settings.viewPermission || "whitelist";
|
|
},
|
|
readers: function(){
|
|
var char = Characters.findOne(this._id, {fields: {readers: 1}});
|
|
return Meteor.users.find({_id: {$in: char.readers}});
|
|
},
|
|
writers: function(){
|
|
var char = Characters.findOne(this._id, {fields: {writers: 1}});
|
|
return Meteor.users.find({_id: {$in: char.writers}});
|
|
},
|
|
shareButtonDisabled: function(){
|
|
return !Template.instance().userId.get();
|
|
},
|
|
userFindError: function(){
|
|
if (!Template.instance().userId.get()){
|
|
return "User not found";
|
|
}
|
|
},
|
|
getUserName: function() {
|
|
return this.username || "user: " + this._id;
|
|
}
|
|
});
|
|
|
|
Template.shareDialog.events({
|
|
"core-select .visibilityDropdown": function(event){
|
|
var detail = event.originalEvent.detail;
|
|
if (!detail.isSelected) return;
|
|
var value = detail.item.getAttribute("name");
|
|
var char = Characters.findOne(this._id, {fields: {settings: 1}});
|
|
if (value == char.settings.viewPermission) return;
|
|
Characters.update(this._id, {$set: {"settings.viewPermission": value}});
|
|
},
|
|
"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);
|
|
}
|
|
});
|
|
},
|
|
"tap #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"){
|
|
Characters.update(self._id, {
|
|
$addToSet: {writers: userId},
|
|
$pull: {readers: userId},
|
|
});
|
|
} else {
|
|
Characters.update(self._id, {
|
|
$addToSet: {readers: userId},
|
|
$pull: {writers: userId},
|
|
});
|
|
}
|
|
},
|
|
"tap .deleteShare": function(event, instance) {
|
|
Characters.update(instance.data._id, {
|
|
$pull: {writers: this._id, readers: this._id}
|
|
});
|
|
},
|
|
});
|