resources/assets/js/composables/useNewVersionNotification.ts

Summary

Maintainability
A
0 mins
Test Coverage
import compareVersions from 'compare-versions'
import { computed, toRef } from 'vue'
import { commonStore } from '@/stores'
import { useAuthorization } from '@/composables/useAuthorization'

export const useNewVersionNotification = () => {
  const { isAdmin } = useAuthorization()

  const latestVersion = toRef(commonStore.state, 'latest_version')
  const currentVersion = toRef(commonStore.state, 'current_version')

  const hasNewVersion = computed(() => compareVersions.compare(latestVersion.value, currentVersion.value, '>'))
  const shouldNotifyNewVersion = computed(() => isAdmin.value && hasNewVersion.value)

  const latestVersionReleaseUrl = computed(() => {
    return `https://github.com/koel/koel/releases/tag/${latestVersion.value}`
  })

  return {
    shouldNotifyNewVersion,
    currentVersion,
    latestVersion,
    latestVersionReleaseUrl
  }
}