update: unsubscribe subscriptions
This commit is contained in:
		@ -14,10 +14,7 @@ export const HublReactivity = {
 | 
				
			|||||||
      callback: function () {
 | 
					      callback: function () {
 | 
				
			||||||
        this.subscribe();
 | 
					        this.subscribe();
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    }
 | 
				
			||||||
    refreshData: {
 | 
					 | 
				
			||||||
      type: String,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  async fetchData(value) {
 | 
					  async fetchData(value) {
 | 
				
			||||||
    this.resourceId = null;
 | 
					    this.resourceId = null;
 | 
				
			||||||
@ -30,11 +27,26 @@ export const HublReactivity = {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    this.subscribe();
 | 
					    this.subscribe();
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					  unsubscribe(resourceId, targetSrc) {
 | 
				
			||||||
 | 
					    const resourcesSub = store.subscriptionVirtualContainersIndex.get(resourceId);
 | 
				
			||||||
 | 
					    const targetSub = store.subscriptionVirtualContainersIndex.get(targetSrc);
 | 
				
			||||||
 | 
					    const newResourceSub = resourcesSub.filter(r => r !== targetSrc);
 | 
				
			||||||
 | 
					    const newTargetSub = targetSub.filter(r => r !== resourceId);
 | 
				
			||||||
 | 
					    store.subscriptionVirtualContainersIndex.set(resourceId, newResourceSub);
 | 
				
			||||||
 | 
					    store.subscriptionVirtualContainersIndex.set(targetSrc, newTargetSub);
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  detached() {
 | 
				
			||||||
 | 
					    this.unsubscribe(this.resourceId, this.targetSrc)
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  subscribe() {
 | 
					  subscribe() {
 | 
				
			||||||
    if (this.refreshData === '') { // clears cache and re-fetch data
 | 
					    if (this.oldResourceId && this.oldTargetSrc && (this.oldResourceId !== this.resourceId || this.oldTargetSrc !== this.targetSrc)) {
 | 
				
			||||||
 | 
					      this.unsubscribe(this.oldResourceId, this.oldTargetSrc);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (this.resourceId && this.targetSrc) {
 | 
				
			||||||
      store.subscribeVirtualContainerTo(this.resourceId, this.targetSrc);
 | 
					      store.subscribeVirtualContainerTo(this.resourceId, this.targetSrc);
 | 
				
			||||||
    } else { // notifies components
 | 
					      store.subscribeVirtualContainerTo(this.targetSrc, this.resourceId);
 | 
				
			||||||
      store.subscribeResourceTo(this.resourceId, this.targetSrc);
 | 
					      this.oldResourceId = this.resourceId;
 | 
				
			||||||
 | 
					      this.oldTargetSrc = this.targetSrc;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -16,8 +16,8 @@ solid-widget(name=`hubl-admin-circle-join-button`)
 | 
				
			|||||||
    hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}` target-src='${value}')
 | 
					    hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}` target-src='${value}')
 | 
				
			||||||
    hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}joinable/` target-src='${value}')
 | 
					    hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}joinable/` target-src='${value}')
 | 
				
			||||||
    hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}` target-src='${value}')
 | 
					    hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}` target-src='${value}')
 | 
				
			||||||
    hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}joinable/` target-src='${value}' refresh-data)
 | 
					    hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}joinable/` target-src='${value}')
 | 
				
			||||||
    hubl-reactivity(bind-user nested-field="circles" target-src='${value}' refresh-data)
 | 
					    hubl-reactivity(bind-user nested-field="circles" target-src='${value}')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include page-admin-circles.pug
 | 
					include page-admin-circles.pug
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -3,8 +3,8 @@ solid-widget(name=`leave-circle-reactivity`)
 | 
				
			|||||||
    hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}` target-src='${value}')
 | 
					    hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}` target-src='${value}')
 | 
				
			||||||
    hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}joinable/` target-src='${value}')
 | 
					    hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}joinable/` target-src='${value}')
 | 
				
			||||||
    hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}` target-src='${value}')
 | 
					    hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}` target-src='${value}')
 | 
				
			||||||
    hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}joinable/` target-src='${value}' refresh-data)
 | 
					    hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}joinable/` target-src='${value}')
 | 
				
			||||||
    hubl-reactivity(bind-user nested-field="circles" target-src='${value}' refresh-data)
 | 
					    hubl-reactivity(bind-user nested-field="circles" target-src='${value}')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
solid-widget(name=`hubl-admin-circle-leave-button`)
 | 
					solid-widget(name=`hubl-admin-circle-leave-button`)
 | 
				
			||||||
  template
 | 
					  template
 | 
				
			||||||
@ -17,8 +17,8 @@ solid-widget(name=`hubl-admin-circle-leave-button`)
 | 
				
			|||||||
    hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}` target-src='${src}')
 | 
					    hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}` target-src='${src}')
 | 
				
			||||||
    hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}joinable/` target-src='${src}')
 | 
					    hubl-reactivity(data-src=`${getComponent('circles').endpoints.get}joinable/` target-src='${src}')
 | 
				
			||||||
    hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}` target-src='${src}')
 | 
					    hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}` target-src='${src}')
 | 
				
			||||||
    hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}joinable/` target-src='${src}' refresh-data)
 | 
					    hubl-reactivity(data-src=`${getComponent('circles').endpoints.post}joinable/` target-src='${src}')
 | 
				
			||||||
    hubl-reactivity(bind-user nested-field="circles" target-src='${src}' refresh-data)
 | 
					    hubl-reactivity(bind-user nested-field="circles" target-src='${src}')
 | 
				
			||||||
    solid-display(
 | 
					    solid-display(
 | 
				
			||||||
      data-src="${src}"
 | 
					      data-src="${src}"
 | 
				
			||||||
      fields="circle"
 | 
					      fields="circle"
 | 
				
			||||||
 | 
				
			|||||||
@ -43,8 +43,8 @@ div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespac
 | 
				
			|||||||
          hubl-reactivity(data-src=`${getComponent('projects').endpoints.get}` target-src='${value}')
 | 
					          hubl-reactivity(data-src=`${getComponent('projects').endpoints.get}` target-src='${value}')
 | 
				
			||||||
          hubl-reactivity(data-src=`${getComponent('projects').endpoints.get}joinable/` target-src='${value}')
 | 
					          hubl-reactivity(data-src=`${getComponent('projects').endpoints.get}joinable/` target-src='${value}')
 | 
				
			||||||
          hubl-reactivity(data-src=`${getComponent('projects').endpoints.post}` target-src='${value}')
 | 
					          hubl-reactivity(data-src=`${getComponent('projects').endpoints.post}` target-src='${value}')
 | 
				
			||||||
          hubl-reactivity(data-src=`${getComponent('projects').endpoints.post}joinable/` target-src='${value}' refresh-data)
 | 
					          hubl-reactivity(data-src=`${getComponent('projects').endpoints.post}joinable/` target-src='${value}')
 | 
				
			||||||
          hubl-reactivity(bind-user nested-field="projects" target-src='${value}' refresh-data)
 | 
					          hubl-reactivity(bind-user nested-field="projects" target-src='${value}')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      solid-widget(name=`hubl-admin-project-leave-button`)
 | 
					      solid-widget(name=`hubl-admin-project-leave-button`)
 | 
				
			||||||
        template
 | 
					        template
 | 
				
			||||||
@ -57,8 +57,8 @@ div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespac
 | 
				
			|||||||
          hubl-reactivity(data-src=`${getComponent('projects').endpoints.get}` target-src='${src}')
 | 
					          hubl-reactivity(data-src=`${getComponent('projects').endpoints.get}` target-src='${src}')
 | 
				
			||||||
          hubl-reactivity(data-src=`${getComponent('projects').endpoints.get}joinable/` target-src='${src}')
 | 
					          hubl-reactivity(data-src=`${getComponent('projects').endpoints.get}joinable/` target-src='${src}')
 | 
				
			||||||
          hubl-reactivity(data-src=`${getComponent('projects').endpoints.post}` target-src='${src}')
 | 
					          hubl-reactivity(data-src=`${getComponent('projects').endpoints.post}` target-src='${src}')
 | 
				
			||||||
          hubl-reactivity(data-src=`${getComponent('projects').endpoints.post}joinable/` target-src='${src}' refresh-data)
 | 
					          hubl-reactivity(data-src=`${getComponent('projects').endpoints.post}joinable/` target-src='${src}')
 | 
				
			||||||
          hubl-reactivity(bind-user nested-field="projects" target-src='${src}' refresh-data)
 | 
					          hubl-reactivity(bind-user nested-field="projects" target-src='${src}')
 | 
				
			||||||
          solid-display(
 | 
					          solid-display(
 | 
				
			||||||
            data-src="${src}"
 | 
					            data-src="${src}"
 | 
				
			||||||
            fields="project"
 | 
					            fields="project"
 | 
				
			||||||
@ -122,8 +122,8 @@ div.segment.full.padding-large.sm-padding-xsmall.sm-padding-top-medium.whitespac
 | 
				
			|||||||
          hubl-reactivity(data-src=`${getComponent('projects').endpoints.get}` target-src='${value}')
 | 
					          hubl-reactivity(data-src=`${getComponent('projects').endpoints.get}` target-src='${value}')
 | 
				
			||||||
          hubl-reactivity(data-src=`${getComponent('projects').endpoints.get}joinable/` target-src='${value}')
 | 
					          hubl-reactivity(data-src=`${getComponent('projects').endpoints.get}joinable/` target-src='${value}')
 | 
				
			||||||
          hubl-reactivity(data-src=`${getComponent('projects').endpoints.post}` target-src='${value}')
 | 
					          hubl-reactivity(data-src=`${getComponent('projects').endpoints.post}` target-src='${value}')
 | 
				
			||||||
          hubl-reactivity(data-src=`${getComponent('projects').endpoints.post}joinable/` target-src='${value}' refresh-data)
 | 
					          hubl-reactivity(data-src=`${getComponent('projects').endpoints.post}joinable/` target-src='${value}')
 | 
				
			||||||
          hubl-reactivity(bind-user nested-field="projects" target-src='${value}' refresh-data)
 | 
					          hubl-reactivity(bind-user nested-field="projects" target-src='${value}')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      solid-display(
 | 
					      solid-display(
 | 
				
			||||||
        class='table-body'
 | 
					        class='table-body'
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user