Added Patreon notification badge for new patreon posts
This commit is contained in:
26
app/Model/Meta/PatreonPosts.js
Normal file
26
app/Model/Meta/PatreonPosts.js
Normal file
@@ -0,0 +1,26 @@
|
||||
PatreonPosts = new Mongo.Collection("patreonPosts");
|
||||
|
||||
Schemas.PatreonPosts = new SimpleSchema({
|
||||
link: {
|
||||
type: String,
|
||||
},
|
||||
dateAdded: {
|
||||
type: Date,
|
||||
autoValue(){
|
||||
return new Date();
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
PatreonPosts.attachSchema(Schemas.PatreonPosts);
|
||||
|
||||
PatreonPosts.allow({
|
||||
insert: function(userId, doc) {
|
||||
var user = Meteor.users.findOne(userId);
|
||||
if (user) return _.contains(user.roles, "admin");
|
||||
},
|
||||
remove: function(userId, doc) {
|
||||
var user = Meteor.users.findOne(userId);
|
||||
if (user) return _.contains(user.roles, "admin");
|
||||
},
|
||||
});
|
||||
@@ -70,6 +70,10 @@ Schemas.User = new SimpleSchema({
|
||||
index: 1,
|
||||
optional: true,
|
||||
},
|
||||
lastPatreonPostClicked: {
|
||||
type: String,
|
||||
optional: true,
|
||||
},
|
||||
});
|
||||
|
||||
Meteor.users.attachSchema(Schemas.User);
|
||||
@@ -107,3 +111,11 @@ if (Meteor.isServer) Meteor.methods({
|
||||
Meteor.users.update(this.userId, {$set: {apiKey}});
|
||||
},
|
||||
});
|
||||
|
||||
Meteor.methods({
|
||||
clickPatreonPost(link) {
|
||||
Meteor.users.update(this.userId, {$set: {
|
||||
lastPatreonPostClicked: link
|
||||
}});
|
||||
},
|
||||
});
|
||||
|
||||
@@ -51,9 +51,16 @@
|
||||
<iron-icon icon="bug-report" item-icon></iron-icon>
|
||||
Send Feedback
|
||||
</paper-icon-item>
|
||||
<a class="patreon" href="https://www.patreon.com/dicecloud" target="_blank" tabindex="-1">
|
||||
<a class="patreon" href="{{patreonLink}}" target="_blank" tabindex="-1">
|
||||
<paper-icon-item>
|
||||
<iron-icon icon="dicecloud:patreon" item-icon></iron-icon>
|
||||
<iron-icon id="patreon-link-icon" icon="dicecloud:patreon" item-icon></iron-icon>
|
||||
{{#if showPatreonBadge}}
|
||||
<paper-badge
|
||||
icon="av:new-releases"
|
||||
for="patreon-link-icon"
|
||||
label="New post">
|
||||
</paper-badge>
|
||||
{{/if}}
|
||||
Patreon
|
||||
</paper-icon-item>
|
||||
</a>
|
||||
|
||||
@@ -7,6 +7,16 @@ Template.appDrawer.helpers({
|
||||
var user = Meteor.user();
|
||||
return user.profile && user.profile.username || user.username || "My Account";
|
||||
},
|
||||
showPatreonBadge: function(){
|
||||
let post = PatreonPosts.findOne({}, {sort: {date: -1}});
|
||||
let user = Meteor.user();
|
||||
if (!post || !user) return false;
|
||||
return post.link !== user.lastPatreonPostClicked;
|
||||
},
|
||||
patreonLink: function(){
|
||||
let post = PatreonPosts.findOne({}, {sort: {date: -1}});
|
||||
return (post && post.link) || 'https://www.patreon.com/dicecloud';
|
||||
},
|
||||
});
|
||||
|
||||
let drawerLayout;
|
||||
@@ -37,6 +47,9 @@ Template.appDrawer.events({
|
||||
closeDrawer(instance);
|
||||
},
|
||||
"click .patreon": function(event, instance){
|
||||
let post = PatreonPosts.findOne({}, {sort: {date: -1}});
|
||||
let link = (post && post.link) || 'https://www.patreon.com/dicecloud';
|
||||
Meteor.call('clickPatreonPost', link);
|
||||
ga("send", "event", "externalLink", "patreon");
|
||||
},
|
||||
"click .github": function(event, instance){
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
"polyfill": "/components/webcomponentsjs/webcomponents.min.js",
|
||||
"useShadowDom": true,
|
||||
"imports": [
|
||||
"/components/app-layout/app-layout.html",
|
||||
"/components/app-layout/app-layout.html",
|
||||
"/components/app-layout/app-layout.html",
|
||||
"/components/app-layout/app-layout.html",
|
||||
"/components/app-layout/app-scroll-effects/effects/waterfall.html",
|
||||
"/components/app-layout/app-scroll-effects/effects/parallax-background.html",
|
||||
"/components/app-layout/app-scroll-effects/effects/resize-title.html",
|
||||
|
||||
"/components/iron-collapse/iron-collapse.html",
|
||||
"/components/iron-collapse/iron-collapse.html",
|
||||
"/components/iron-icon/iron-icon.html",
|
||||
"/components/iron-icons/av-icons.html",
|
||||
"/components/iron-icons/editor-icons.html",
|
||||
@@ -21,7 +21,8 @@
|
||||
|
||||
"/components/neon-animation/neon-animation.html",
|
||||
|
||||
"/components/paper-button/paper-button.html",
|
||||
"/components/paper-button/paper-button.html",
|
||||
"/components/paper-badge/paper-badge.html",
|
||||
"/components/paper-swatch-picker/paper-swatch-picker.html",
|
||||
"/components/paper-dialog/paper-dialog.html",
|
||||
"/components/paper-dropdown-menu/paper-dropdown-menu.html",
|
||||
|
||||
6
app/package-lock.json
generated
6
app/package-lock.json
generated
@@ -216,9 +216,9 @@
|
||||
"integrity": "sha512-HfVRxhYG7C8Jl9FqtrlElMR2z/8YiLQVDKf67MLY25Ic+ILx3ecmklfT1v3u+7P5/4vEFjuxaAFXhr2/Afwk5g=="
|
||||
},
|
||||
"file-saver": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.0.tgz",
|
||||
"integrity": "sha512-cYM1ic5DAkg25pHKgi5f10ziAM7RJU37gaH1XQlyNDrtUnzhC/dfoV9zf2OmF0RMKi42jG5B0JWBnPQqyj/G6g=="
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.1.tgz",
|
||||
"integrity": "sha512-dCB3K7/BvAcUmtmh1DzFdv0eXSVJ9IAFt1mw3XZfAexodNRoE29l3xB2EX4wH2q8m/UTzwzEPq/ArYk98kUkBQ=="
|
||||
},
|
||||
"find-up": {
|
||||
"version": "2.1.0",
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
"bower": "^1.7.9",
|
||||
"core-js": "^2.5.7",
|
||||
"fibers": "^2.0.2",
|
||||
"file-saver": "^2.0.0",
|
||||
"file-saver": "^2.0.1",
|
||||
"meteor-node-stubs": "^0.3.3",
|
||||
"qrcode": "^1.3.0",
|
||||
"source-map-support": "^0.5.9",
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
Meteor.publish("user", function(){
|
||||
return Meteor.users.find(this.userId, {fields: {
|
||||
roles: 1,
|
||||
username: 1,
|
||||
profile: 1,
|
||||
apiKey: 1,
|
||||
librarySubscriptions: 1,
|
||||
}});
|
||||
return [
|
||||
Meteor.users.find(this.userId, {fields: {
|
||||
roles: 1,
|
||||
username: 1,
|
||||
profile: 1,
|
||||
apiKey: 1,
|
||||
librarySubscriptions: 1,
|
||||
lastPatreonPostClicked: 1,
|
||||
}}),
|
||||
PatreonPosts.find({},{sort: {dateAdded: -1}, limit: 1})
|
||||
];
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user