Browse Source

Move global subscription to template subscription so that subscription
will stop when template is unused. It's very important for efficiency
espacially with large number of users. Thanks to mfshiu !

Lauri Ojansivu 7 years ago
parent
commit
233554a3d6

+ 3 - 2
CHANGELOG.md

@@ -2,10 +2,11 @@
 
 
 This release adds the following new features:
 This release adds the following new features:
 
 
-* [Change password of any user in Standalone Wekan Admin Panel](https://github.com/wekan/wekan/pull/1372).
+* [Change password of any user in Standalone Wekan Admin Panel](https://github.com/wekan/wekan/pull/1372);
+* [Performance optimization: Move more global subscriptions to template subscription](https://github.com/wekan/wekan/pull/1373);
 * Update tranlations. Add Latvian language.
 * Update tranlations. Add Latvian language.
 
 
-Thanks to GitHub user thuanpq for contributions. Thanks to translators for their translations.
+Thanks to GitHub users mfshiu and thuanpq for their contributions. Thanks to translators for their translations.
 
 
 # v0.60 2017-11-29 Wekan release
 # v0.60 2017-11-29 Wekan release
 
 

+ 4 - 0
client/components/cards/cardDetails.js

@@ -23,8 +23,12 @@ BlazeComponent.extendComponent({
     this.parentComponent().showOverlay.set(true);
     this.parentComponent().showOverlay.set(true);
     this.parentComponent().mouseHasEnterCardDetails = false;
     this.parentComponent().mouseHasEnterCardDetails = false;
     this.calculateNextPeak();
     this.calculateNextPeak();
+
+    Meteor.subscribe('unsaved-edits');
   },
   },
 
 
+
+
   isWatching() {
   isWatching() {
     const card = this.currentData();
     const card = this.currentData();
     return card.findWatcher(Meteor.userId());
     return card.findWatcher(Meteor.userId());

+ 5 - 5
client/components/settings/settingBody.js

@@ -1,8 +1,3 @@
-Meteor.subscribe('setting');
-Meteor.subscribe('mailServer');
-Meteor.subscribe('accountSettings');
-Meteor.subscribe('announcements');
-
 BlazeComponent.extendComponent({
 BlazeComponent.extendComponent({
   onCreated() {
   onCreated() {
     this.error = new ReactiveVar('');
     this.error = new ReactiveVar('');
@@ -11,6 +6,11 @@ BlazeComponent.extendComponent({
     this.emailSetting = new ReactiveVar(false);
     this.emailSetting = new ReactiveVar(false);
     this.accountSetting = new ReactiveVar(false);
     this.accountSetting = new ReactiveVar(false);
     this.announcementSetting = new ReactiveVar(false);
     this.announcementSetting = new ReactiveVar(false);
+
+    Meteor.subscribe('setting');
+    Meteor.subscribe('mailServer');
+    Meteor.subscribe('accountSettings');
+    Meteor.subscribe('announcements');
   },
   },
 
 
   setError(error) {
   setError(error) {

+ 2 - 2
client/components/users/userAvatar.js

@@ -1,5 +1,3 @@
-Meteor.subscribe('my-avatars');
-
 Template.userAvatar.helpers({
 Template.userAvatar.helpers({
   userData() {
   userData() {
     // We need to handle a special case for the search results provided by the
     // We need to handle a special case for the search results provided by the
@@ -54,6 +52,8 @@ Template.userAvatarInitials.helpers({
 BlazeComponent.extendComponent({
 BlazeComponent.extendComponent({
   onCreated() {
   onCreated() {
     this.error = new ReactiveVar('');
     this.error = new ReactiveVar('');
+
+    Meteor.subscribe('my-avatars');
   },
   },
 
 
   avatarUrlOptions() {
   avatarUrlOptions() {

+ 0 - 2
client/lib/unsavedEdits.js

@@ -1,5 +1,3 @@
-Meteor.subscribe('unsaved-edits');
-
 // `UnsavedEdits` is a global key-value store used to save drafts of user
 // `UnsavedEdits` is a global key-value store used to save drafts of user
 // inputs. We used to have the notion of a `cachedValue` that was local to a
 // inputs. We used to have the notion of a `cachedValue` that was local to a
 // component but the global store has multiple advantages:
 // component but the global store has multiple advantages: