Test cachingu scenerii

This commit is contained in:
2022-07-14 20:44:43 +02:00
parent 55c64d5f0a
commit d79705ca5c
6 changed files with 123 additions and 59 deletions
+5 -6
View File
@@ -1,10 +1,7 @@
<template> <template>
<div class="app_container"> <div class="app_container">
<!-- <div class="wip-alert"> <!-- <UpdateModal /> -->
<img class="icon-error" :src="iconError" alt="error" />
<h2>Stacjownik tymczasowo nieaktywny!</h2>
<p>Absolutny zakaz wjazdu!</p>
</div> -->
<header class="app_header"> <header class="app_header">
<div class="header_container"> <div class="header_container">
<div class="header_icons"> <div class="header_icons">
@@ -91,13 +88,15 @@ import options from '@/data/options.json';
import StatusIndicator from '@/components/App/StatusIndicator.vue'; import StatusIndicator from '@/components/App/StatusIndicator.vue';
import SelectBox from '@/components/Global/SelectBox.vue'; import SelectBox from '@/components/Global/SelectBox.vue';
import { useStore } from './store/store'; import { useStore } from './store/store';
import UpdateModal from './components/App/UpdateModal.vue';
export default defineComponent({ export default defineComponent({
components: { components: {
Clock, Clock,
StatusIndicator, StatusIndicator,
SelectBox, SelectBox,
}, UpdateModal
},
setup() { setup() {
const store = useStore(); const store = useStore();
+59
View File
@@ -0,0 +1,59 @@
<template>
<section>
<!-- <h2>Ostatnie aktualizacje w Stacjowniku</h2>
<p>Tutaj będą pojawiać się informacje o kolejnych nowościach na stronie :)</p>
<ul>
<li v-for="update in updates">
<div>{{ update.date }}</div>
<div>
<span v-for="(line, l) in update.content" :key="l">{{ line }}</span>
</div>
</li>
</ul> -->
</section>
</template>
<script lang="ts">
import { ReleaseAPIData } from '@/scripts/interfaces/github_api/ReleaseAPIData';
import { defineComponent } from '@vue/runtime-core';
import packageInfo from '../../../package.json';
import axios from 'axios';
const GH_LASTEST_RELEASE_URL = 'https://api.github.com/repos/Spythere/stacjownik/releases/latest';
export default defineComponent({
mounted() {
this.fetchReleases();
},
data() {
return {
cardOpen: false,
updateBody: '',
};
},
methods: {
async fetchReleases() {
try {
const releaseData: ReleaseAPIData = await (await axios.get(GH_LASTEST_RELEASE_URL)).data;
if(!releaseData) return;
const tagVersion = releaseData.tag_name.slice(1);
console.log(packageInfo.version == tagVersion);
this.updateBody = releaseData.body;
} catch (error) {
console.error(`Wystąpił błąd podczas pobierania danych z API GitHuba: ${error}`);
}
},
},
});
</script>
<style lang="scss" scoped></style>
-47
View File
@@ -1,47 +0,0 @@
<template>
<section
class="updates card"
v-if="cardOpen"
>
<h2>Ostatnie aktualizacje w Stacjowniku</h2>
<p>Tutaj będą pojawiać się informacje o kolejnych nowościach na stronie :)</p>
<ul>
<li
v-for="(update, i) in updates"
:key="i"
>
<div>{{update.date}}</div>
<div>
<span
v-for="(line, l) in content"
:key="l"
>{{line}}</span>
</div>
</li>
</ul>
</section>
</template>
<script>
import { defineComponent } from "@vue/runtime-core";
export default defineComponent({
data() {
return {
updates: {
date: "08/08/20",
content: [
"Lekko odświeżono wygląd strony, dodano nowy widok z pociągami online",
"Dodano animacje zmieniania widoków (zakładek)",
"Dodano przycisk zamykający kartę z filtrami",
],
},
};
},
});
</script>
<style lang="scss" scoped>
</style>
+4 -4
View File
@@ -2,7 +2,7 @@
import { register } from 'register-service-worker' import { register } from 'register-service-worker'
if (process.env.NODE_ENV === 'production') { // if (process.env.NODE_ENV === 'production') {
register(`${process.env.BASE_URL}service-worker.js`, { register(`${process.env.BASE_URL}service-worker.js`, {
ready () { ready () {
console.log('SW gotowy') console.log('SW gotowy')
@@ -14,10 +14,10 @@ if (process.env.NODE_ENV === 'production') {
console.log('SW: cached') console.log('SW: cached')
}, },
updatefound () { updatefound () {
console.log('SW: aktualizacja danych') console.log('SW: nowa aktualizacja wykryta')
}, },
updated () { updated () {
console.log('SW: zaktualizowano dane'); console.log('SW: zaktualizowano dane, odśwież aplikację');
}, },
offline () { offline () {
console.log('SW: tryb offline') console.log('SW: tryb offline')
@@ -26,4 +26,4 @@ if (process.env.NODE_ENV === 'production') {
console.error('SW: wystąpił błąd - ', error) console.error('SW: wystąpił błąd - ', error)
} }
}) })
} // }
@@ -0,0 +1,41 @@
export interface Author {
login: string;
id: number;
node_id: string;
avatar_url: string;
gravatar_id: string;
url: string;
html_url: string;
followers_url: string;
following_url: string;
gists_url: string;
starred_url: string;
subscriptions_url: string;
organizations_url: string;
repos_url: string;
events_url: string;
received_events_url: string;
type: string;
site_admin: boolean;
}
export interface ReleaseAPIData {
url: string;
assets_url: string;
upload_url: string;
html_url: string;
id: number;
author: Author;
node_id: string;
tag_name: string;
target_commitish: string;
name: string;
draft: boolean;
prerelease: boolean;
created_at: Date;
published_at: Date;
assets: any[];
tarball_url: string;
zipball_url: string;
body: string;
}
+14 -2
View File
@@ -1,8 +1,20 @@
module.exports = { module.exports = {
pwa: { pwa: {
workboxPluginModule: 'GenerateSW',
workboxOptions: { workboxOptions: {
skipWaiting: true, navigateFallback: '/index.html',
clientsClaim: true, runtimeCaching: [
{
urlPattern: new RegExp('^https://stacjownik.eu-4.evennode.com/api/getSceneries'),
handler: 'NetworkFirst',
options: {
cacheName: 'sceneries-cache',
expiration: {
maxAgeSeconds: 24 * 60 * 60, // 24 hours
},
},
},
],
}, },
}, },
}; };