chatwoot/chatwoot

View on GitHub
app/javascript/dashboard/composables/route.js

Summary

Maintainability
A
0 mins
Test Coverage
F
0%
import { getCurrentInstance, reactive, watchEffect } from 'vue';

/**
 * Returns the current route location. Equivalent to using `$route` inside
 * templates.
 */
export function useRoute() {
  const instance = getCurrentInstance();
  const route = reactive(Object.assign({}, instance.proxy.$root.$route));
  watchEffect(() => {
    Object.assign(route, instance.proxy.$root.$route);
  });

  return route;
}

/**
 * Returns the router instance. Equivalent to using `$router` inside
 * templates.
 */
export function useRouter() {
  const instance = getCurrentInstance();
  const router = instance.proxy.$root.$router;
  watchEffect(() => {
    if (router) {
      Object.assign(router, instance.proxy.$root.$router);
    }
  });
  return router;
}