mirror of
https://github.com/Bubka/2FAuth.git
synced 2024-12-01 20:54:03 +01:00
48 lines
2.1 KiB
Vue
48 lines
2.1 KiB
Vue
<script setup>
|
|
import systemService from '@/services/systemService'
|
|
import { useAppSettingsStore } from '@/stores/appSettings'
|
|
import { UseColorMode } from '@vueuse/components'
|
|
|
|
const appSettings = useAppSettingsStore()
|
|
const isScanning = ref(false)
|
|
const isUpToDate = ref()
|
|
|
|
async function getLatestRelease() {
|
|
isScanning.value = true;
|
|
isUpToDate.value = undefined
|
|
|
|
await systemService.getLastRelease({returnError: true})
|
|
.then(response => {
|
|
appSettings.latestRelease = response.data.newRelease
|
|
isUpToDate.value = response.data.newRelease === null ? null : response.data.newRelease === false
|
|
})
|
|
.catch(() => {
|
|
isUpToDate.value = null
|
|
})
|
|
|
|
isScanning.value = false;
|
|
}
|
|
|
|
</script>
|
|
|
|
<template>
|
|
<div class="columns is-mobile is-vcentered">
|
|
<div class="column is-narrow">
|
|
<button type="button" :class="isScanning ? 'is-loading' : ''" class="button is-link is-rounded is-small" @click="getLatestRelease">{{ $t('admin.check_now') }}</button>
|
|
</div>
|
|
<div class="column">
|
|
<UseColorMode v-slot="{ mode }">
|
|
<span v-if="appSettings.latestRelease" class="mt-2" :class="mode == 'dark' ? 'has-text-warning' : 'has-text-warning-dark'">
|
|
<span class="release-flag"></span>{{ $t('admin.x_is_available', { version: appSettings.latestRelease }) }} <a class="is-size-7" href="https://github.com/Bubka/2FAuth/releases">{{ $t('admin.view_on_github') }}</a>
|
|
</span>
|
|
<span v-if="isUpToDate" class="has-text-grey">
|
|
<FontAwesomeIcon :icon="['fas', 'check']" class="mr-1 has-text-success" /> {{ $t('commons.you_are_up_to_date') }}
|
|
</span>
|
|
<span v-else-if="isUpToDate === null" class="has-text-grey">
|
|
<FontAwesomeIcon :icon="['fas', 'times']" class="mr-1 has-text-danger" />{{ $t('errors.check_failed_try_later') }}
|
|
</span>
|
|
</UseColorMode>
|
|
</div>
|
|
</div>
|
|
</template>
|