]> git.ipfire.org Git - thirdparty/vuejs/pinia.git/commitdiff
feat(hmr): remove old getters and actionss
authorEduardo San Martin Morote <posva13@gmail.com>
Thu, 15 Jul 2021 16:15:50 +0000 (18:15 +0200)
committerEduardo San Martin Morote <posva13@gmail.com>
Mon, 19 Jul 2021 09:52:25 +0000 (11:52 +0200)
playground/src/App.vue
src/store.ts

index 6af39d74e7ce6d02372f50d633d351874d2c00c9..9035e5212652033183c6c2a85833137f50c1da81 100644 (file)
@@ -15,9 +15,7 @@
 </template>
 
 <script lang="ts" setup>
-import { ref } from 'vue'
 import { useRouter } from 'vue-router'
-import { useCounter } from './stores/counter'
 
 const router = useRouter()
 
index 748117961a34f3db83cf5a95d5a564f519d5d03d..89c8585a3515da400f89e312963250b4e1e3a1c6 100644 (file)
@@ -473,7 +473,7 @@ function createSetupStore<
 
       pinia.state.value[$id] = toRef(newStore._hmrPayload, 'hotState')
 
-      // remove deleted keys
+      // remove deleted state properties
       Object.keys(store.$state).forEach((stateKey) => {
         if (!(stateKey in newStore.$state)) {
           // @ts-expect-error
@@ -494,7 +494,6 @@ function createSetupStore<
 
       for (const getterName in newStore._hmrPayload.getters) {
         const getter: _Method = newStore._hmrPayload.getters[getterName]
-
         // @ts-expect-error
         store[getterName] =
           // ---
@@ -507,7 +506,30 @@ function createSetupStore<
             : getter
       }
 
-      // TODO: remove old actions and getters
+      // remove deleted getters
+      console.log('remove', store._hmrPayload)
+      Object.keys(store._hmrPayload.getters).forEach((key) => {
+        console.log('checking for', key)
+        if (!(key in newStore._hmrPayload.getters)) {
+          console.log('deleting')
+          // @ts-expect-error
+          delete store[key]
+        }
+      })
+
+      // remove old actions
+      Object.keys(store._hmrPayload.actions).forEach((key) => {
+        console.log('checking for', key)
+        if (!(key in newStore._hmrPayload.actions)) {
+          console.log('deleting')
+          // @ts-expect-error
+          delete store[key]
+        }
+      })
+
+      // update the values used in devtools and to allow deleting new properties later on
+      store._hmrPayload = newStore._hmrPayload
+      store._getters = newStore._getters
     })
 
     const nonEnumerable = {