From 09315b27804beadb7590f8e908ae9d0eb1d6a992 Mon Sep 17 00:00:00 2001
From: taehoon <th.dev91@gmail.com>
Date: Wed, 13 Feb 2019 21:21:56 -0500
Subject: [PATCH] Add a prop to force-refresh data to withSubscription hoc

---
 src/components/user_settings/user_settings.vue  |  2 +-
 src/hocs/with_subscription/with_subscription.js | 13 +++++++------
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/components/user_settings/user_settings.vue b/src/components/user_settings/user_settings.vue
index 5cf21815..5bae583c 100644
--- a/src/components/user_settings/user_settings.vue
+++ b/src/components/user_settings/user_settings.vue
@@ -164,7 +164,7 @@
         </div>
         
         <div :label="$t('settings.blocks_tab')">
-          <block-list id="123" />
+          <block-list :refresh="true" />
         </div>
       </tab-switcher>
     </div>
diff --git a/src/hocs/with_subscription/with_subscription.js b/src/hocs/with_subscription/with_subscription.js
index 31fc106f..633517e3 100644
--- a/src/hocs/with_subscription/with_subscription.js
+++ b/src/hocs/with_subscription/with_subscription.js
@@ -1,24 +1,25 @@
 import Vue from 'vue'
-import filter from 'lodash/filter'
+import reject from 'lodash/reject'
 import isEmpty from 'lodash/isEmpty'
+import omit from 'lodash/omit'
 import './with_subscription.scss'
 
 const withSubscription = (Component, fetch, select, contentPropName = 'content') => {
   const originalProps = Component.props || []
-  const props = filter(originalProps, v => v !== 'content')
+  const props = reject(originalProps, v => v === 'content')
 
   return Vue.component('withSubscription', {
     render (createElement) {
       const props = {
         props: {
-          ...this.$props,
+          ...omit(this.$props, 'refresh'),
           [contentPropName]: this.fetchedData
         },
         on: this.$listeners
       }
       return (
         <div class="with-subscription">
-          <Component {...props} />
+          {!this.error && !this.loading && <Component {...props} />}
           <div class="with-subscription-footer">
             {this.error && <a onClick={this.fetchData} class="alert error">{this.$t('general.generic_error')}</a>}
             {!this.error && this.loading && <i class="icon-spin3 animate-spin"/>}
@@ -26,7 +27,7 @@ const withSubscription = (Component, fetch, select, contentPropName = 'content')
         </div>
       )
     },
-    props,
+    props: [...props, 'refresh'],
     data () {
       return {
         loading: false,
@@ -39,7 +40,7 @@ const withSubscription = (Component, fetch, select, contentPropName = 'content')
       }
     },
     created () {
-      if (isEmpty(this.fetchedData)) {
+      if (this.refresh || isEmpty(this.fetchedData)) {
         this.fetchData()
       }
     },