Finished implementing basic sharing
This commit is contained in:
@@ -1,24 +1,26 @@
|
||||
<template name="shareDialog">
|
||||
<div>
|
||||
<div>
|
||||
<div class="subhead">
|
||||
Can View
|
||||
</div>
|
||||
{{#each readers}}
|
||||
|
||||
{{this}}<br>
|
||||
{{/each}}
|
||||
<div class="subhead">
|
||||
Can Edit
|
||||
</div>
|
||||
{{#each writers}}
|
||||
|
||||
{{this}}<br>
|
||||
{{/each}}
|
||||
</div>
|
||||
<paper-input id="userNameOrEmailInput" label="Username or email" floatinglabel></paper-input>
|
||||
<paper-input id="userNameOrEmailInput" label="Username or email" floatinglabel></paper-input><br>
|
||||
{{#if userFindError}}<p style="color: red;">{{userFindError}}</p>{{/if}}
|
||||
<paper-radio-group id="accessLevelMenu" selected="read">
|
||||
<paper-radio-button name="read" label="View Only"></paper-radio-button>
|
||||
<paper-radio-button name="write" label="Can Edit"></paper-radio-button>
|
||||
</paper-radio-group>
|
||||
<br>
|
||||
<paper-dropdown-menu id="accessLevelDropdown" label="Access Level">
|
||||
<paper-dropdown layered class="dropdown">
|
||||
<core-menu id="accessLevelMenu" class="menu" selected="read" on-tap="onStatMenuTap">
|
||||
<paper-item name="read"> View Only </paper-item>
|
||||
<paper-item name="write"> Can Edit </paper-item>
|
||||
</core-menu>
|
||||
</paper-dropdown>
|
||||
</paper-dropdown-menu>
|
||||
<br>
|
||||
<paper-button id="shareButton" class="red-button" raised>Share</paper-button>
|
||||
<paper-button id="shareButton" class="red-button" raised disabled={{shareButtonDisabled}}>Share</paper-button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -1,29 +1,55 @@
|
||||
Template.shareDialog.helpers({
|
||||
Template.shareDialog.onCreated(function(){
|
||||
this.userId = new ReactiveVar();
|
||||
});
|
||||
|
||||
Template.shareDialog.helpers({
|
||||
readers: function(){
|
||||
var char = Characters.findOne(this._id, {fields: {readers: 1}});
|
||||
return char && char.readers;
|
||||
},
|
||||
writers: function(){
|
||||
var char = Characters.findOne(this._id, {fields: {writers: 1}});
|
||||
return char && char.writers;
|
||||
},
|
||||
shareButtonDisabled: function(){
|
||||
return !Template.instance().userId.get();
|
||||
},
|
||||
userFindError: function(){
|
||||
if (!Template.instance().userId.get()){
|
||||
return "User not found";
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Template.shareDialog.events({
|
||||
"tap #shareButton": function(event, instance){
|
||||
var self = this;
|
||||
"input #userNameOrEmailInput, change #userNameOrEmailInput": function(event, instance){
|
||||
var userName = instance.find("#userNameOrEmailInput").value;
|
||||
var permission = instance.find("#accessLevelMenu").value;
|
||||
Meteor.call("getUserId", userName, function (err, result) {
|
||||
if(err){
|
||||
this.userFindError = true;
|
||||
} else{
|
||||
if(permission === "write"){
|
||||
Characters.update(self._id, {
|
||||
$push: {writers: result},
|
||||
$pull: {readers: result}
|
||||
});
|
||||
} else {
|
||||
Characters.update(self._id, {
|
||||
$push: {readers: result},
|
||||
$pull: {writers: result}
|
||||
});
|
||||
}
|
||||
GlobalUI.closeDialog();
|
||||
}
|
||||
});
|
||||
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}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user