Skip to content
Snippets Groups Projects
Commit 14fa6f03 authored by Christoffer Stoll's avatar Christoffer Stoll
Browse files

Merge branch 'development' into 'master'

#29: Added a notification icon when a new tag is available

See merge request !8
parents a4356364 3845997e
No related branches found
No related tags found
2 merge requests!18Master,!8#29: Added a notification icon when a new tag is available
......@@ -90,3 +90,7 @@ class Endpoints:
from endpoints.exports.observations.routes import export_observations_endpoint
app.register_blueprint(export_observations_endpoint)
# VERSION
from endpoints.version.routes import version_endpoint
app.register_blueprint(version_endpoint)
from flask import jsonify, Blueprint, request
from flask_jwt_extended import create_access_token
import requests
version_endpoint = Blueprint('version', __name__)
current_version = "3.0.8"
@version_endpoint.route('/api/version', methods=['GET'])
def version():
try:
response = requests.get("https://git.nilu.no/api/v4/projects/983/repository/tags")
response.raise_for_status()
j = response.json()
return {"current": current_version, "latest": j[0]["name"].replace("v.", "")}
except Exception as err:
return {"current": current_version, "latest": current_version}
......@@ -13,3 +13,4 @@ python-dotenv==0.21.0
python-simplexml==0.1.5
pandas==1.5.2
pytz==2022.6
requests==2.31.0
......@@ -2,11 +2,13 @@
import { useRouter } from "vue-router";
import Auth from "../helpers/auth";
import IconLogout from "~icons/ic/outline-logout";
import { version } from "../helpers/utils";
import IconNewVersion from "~icons/material-symbols/download-for-offline-rounded";
import jwt_decode from "jwt-decode";
import Version from "../helpers/version";
const router = useRouter();
const modules = ref([]);
const version = ref("");
const props = defineProps({
show: Boolean
......@@ -17,8 +19,9 @@ watch(
() => (modules.value = getmodules())
);
onMounted(() => {
onMounted(async () => {
modules.value = getmodules();
version.value = await Version.get();
});
const getmodules = () => {
......@@ -91,8 +94,6 @@ const signout = async () => {
Auth.signout();
router.push({ name: "Login" });
};
const cmp_version = computed(() => version);
</script>
<template>
......@@ -106,7 +107,10 @@ const cmp_version = computed(() => version);
</div>
</div>
<div class="">
<div class="px-1 text-xs font-bold border-b">v.{{ cmp_version }}</div>
<div class="flex px-1 text-xs font-bold border-b gap-1">
<icon-new-version class="self-center text-nord11 hover:text-nord12" v-if="!version.isLatest" />
<div class="self-center">v.{{ version.current }}</div>
</div>
<div class="flex py-2 px-2 hover:cursor-pointer hover:bg-nord8/20 hover:text-nord10" @click="signout">
<icon-logout class="self-center" />
<div class="self-center ml-1">Sign out</div>
......
......@@ -21,8 +21,9 @@ const Interceptor = {
},
(error) => {
if (401 === error.response.status) {
Auth.signout();
window.location.href = "/login";
console.log("iiik", error);
// Auth.signout();
// window.location.href = "/login";
} else if (403 === error.response.status) {
window.location.href = "/forbidden";
} else if (404 === error.response.status && !error.response.request.responseURL.toLowerCase().includes("api")) {
......
......@@ -105,5 +105,3 @@ export const filterList = (q, list, exclude_list) => {
return showValues;
});
};
export const version = "3.0.8";
import { Get } from "./request";
const Version = {
compare(v1, v2) {
if (typeof v1 !== "string") return false;
if (typeof v2 !== "string") return false;
v1 = v1.split(".");
v2 = v2.split(".");
const k = Math.min(v1.length, v2.length);
for (let i = 0; i < k; ++i) {
v1[i] = parseInt(v1[i], 10);
v2[i] = parseInt(v2[i], 10);
if (v1[i] > v2[i]) return 1;
if (v1[i] < v2[i]) return -1;
}
return v1.length == v2.length ? 0 : v1.length < v2.length ? -1 : 1;
},
async get() {
try {
var result = await Get("api/version");
var compared = Version.compare(result.latest, result.current);
return { current: result.current, isLatest: compared != 1 };
} catch (error) {
return { current: result.current, isLatest: true };
}
}
};
export default Version;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment