import Vue from 'vue'

let lastRoute
const keepAliveHook = {}

if (!process.server) {
  keepAliveHook.install = (Vue) => {
    const keepAlivePages = process.env.keepAlivePages || []

    Vue.mixin({
      // Save route if this instance is a page (has metaInfo)
      mounted() {
        if (this.$metaInfo) {
          lastRoute = this.$route.name
        }
      },
      activated() {
        if (this.$metaInfo) {
          lastRoute = this.$route.name
        }
      },
      deactivated() {
        // If this is a page and we don't want it to be kept alive
        if (this.$metaInfo && !keepAlivePages.includes(lastRoute)) {
          this.$destroy()
        }
      },
    })
  }
  Vue.use(keepAliveHook)
}
