mirror of
https://github.com/hpware/news-analyze.git
synced 2025-06-23 13:04:23 +00:00
(Add archive system) Merge pull request #10 from hpware/beta
Some checks failed
Build and Push Latest Image / build-and-push (push) Has been cancelled
Some checks failed
Build and Push Latest Image / build-and-push (push) Has been cancelled
This commit is contained in:
commit
dfd9bb274d
3 changed files with 78 additions and 13 deletions
14
components/checkAppVersion.ts
Normal file
14
components/checkAppVersion.ts
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
import currentVersion from "~/versionTag";
|
||||||
|
export default async function newestVersion() {
|
||||||
|
export default async function newestVersion() {
|
||||||
|
const current = currentVersion();
|
||||||
|
const req = await fetch("/api/version");
|
||||||
|
if (!req.ok) {
|
||||||
|
console.error("Version check failed:", req.statusText);
|
||||||
|
return true; // fail-closed → pretend we are up-to-date
|
||||||
|
}
|
||||||
|
|
||||||
|
const { version: latest } = await req.json();
|
||||||
|
return current === latest; // `true` ➜ up-to-date
|
||||||
|
}
|
||||||
|
}
|
|
@ -47,6 +47,9 @@ import { gsap } from "gsap";
|
||||||
import confetti from "js-confetti";
|
import confetti from "js-confetti";
|
||||||
import translate from "translate";
|
import translate from "translate";
|
||||||
|
|
||||||
|
// Import Scripts
|
||||||
|
import checkAppVersion from "~/components/checkAppVersion";
|
||||||
|
|
||||||
// Import Windows
|
// Import Windows
|
||||||
import UserWindow from "~/components/app/windows/user.vue";
|
import UserWindow from "~/components/app/windows/user.vue";
|
||||||
import SourcesWindow from "~/components/app/windows/sources.vue";
|
import SourcesWindow from "~/components/app/windows/sources.vue";
|
||||||
|
@ -99,6 +102,7 @@ const applyForTranslation = ref(false);
|
||||||
const langPrefDifferent = ref(false);
|
const langPrefDifferent = ref(false);
|
||||||
const notLoggedInState = ref(false);
|
const notLoggedInState = ref(false);
|
||||||
const translateProvider = ref("");
|
const translateProvider = ref("");
|
||||||
|
const newUpdate = ref(false);
|
||||||
|
|
||||||
// Key Data
|
// Key Data
|
||||||
const menuItems = [
|
const menuItems = [
|
||||||
|
@ -620,6 +624,12 @@ onMounted(async () => {
|
||||||
translateProvider.value = loadUserInfoData.translate.provider || "google";
|
translateProvider.value = loadUserInfoData.translate.provider || "google";
|
||||||
console.log(langPrefDifferent);
|
console.log(langPrefDifferent);
|
||||||
});*/
|
});*/
|
||||||
|
|
||||||
|
// Get ghe newest update
|
||||||
|
const newUpdateTimer = 1000 * 60 * 3; // Check for thime every 3 min.
|
||||||
|
setInterval(async () => {
|
||||||
|
newUpdate.value = await checkAppVersion();
|
||||||
|
}, newUpdateTimer);
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div v-if="changeLangAnimation">
|
<div v-if="changeLangAnimation">
|
||||||
|
@ -745,6 +755,35 @@ onMounted(async () => {
|
||||||
</DialogFooter>
|
</DialogFooter>
|
||||||
</DialogContent>
|
</DialogContent>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
|
<!--New Update-->
|
||||||
|
<Dialog v-model:open="langPrefDifferent">
|
||||||
|
<DialogContent class="!border-0 !bg-black !rounded">
|
||||||
|
<DialogHeader>
|
||||||
|
<DialogTitle>There is a new Update!</DialogTitle>
|
||||||
|
<DialogDescription>
|
||||||
|
Click notify later to save your current tasks & update the page.
|
||||||
|
</DialogDescription>
|
||||||
|
</DialogHeader>
|
||||||
|
<DialogFooter>
|
||||||
|
<Button
|
||||||
|
@click="
|
||||||
|
() => {
|
||||||
|
newUpdate.value = false;
|
||||||
|
}
|
||||||
|
"
|
||||||
|
variant="outline"
|
||||||
|
>
|
||||||
|
Notify later
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
@click="() => window.location.reload('/desktop')"
|
||||||
|
variant="outline"
|
||||||
|
>
|
||||||
|
Update
|
||||||
|
</Button>
|
||||||
|
</DialogFooter>
|
||||||
|
</DialogContent>
|
||||||
|
</Dialog>
|
||||||
<!--Window system-->
|
<!--Window system-->
|
||||||
<Transition>
|
<Transition>
|
||||||
<div>
|
<div>
|
||||||
|
|
|
@ -38,20 +38,32 @@ function cleanUpSlug(orgslug: string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Archive articles. For future use?
|
// Archive articles. For future use?
|
||||||
async function storeArticlesIfItDoesNotExists(data, RequestId) {
|
function storeArticlesIfItDoesNotExists(data, RequestId) {
|
||||||
|
try {
|
||||||
|
setImmediate(async () => {
|
||||||
|
try {
|
||||||
const checkDataIsInDatabase = await sql`
|
const checkDataIsInDatabase = await sql`
|
||||||
SELECT * FROM news_articles
|
SELECT uuid FROM news_articles
|
||||||
WHERE jsondata = ${data}
|
WHERE article_id = ${RequestId}
|
||||||
|
LIMIT 1
|
||||||
`;
|
`;
|
||||||
if (checkDataIsInDatabase.length > 0) {
|
if (checkDataIsInDatabase.length > 0) {
|
||||||
|
console.log(`Article ${RequestId} already exists in database`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const storeData = await sql`
|
const jsonData = JSON.stringify(data);
|
||||||
|
await sql`
|
||||||
INSERT INTO news_articles (uuid, article_id, jsondata)
|
INSERT INTO news_articles (uuid, article_id, jsondata)
|
||||||
VALUES (${uuidv4()}, ${RequestId}, ${data}::JSON)
|
VALUES (${uuidv4()}, ${RequestId}, ${jsonData}::JSON)
|
||||||
`;
|
`;
|
||||||
console.log(storeData);
|
console.log(`Successfully archived article ${RequestId} in background`);
|
||||||
return;
|
} catch (error) {
|
||||||
|
console.error("Failed to archive article in background:", error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Failed to initiate background archiving:", error);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default defineEventHandler(async (event) => {
|
export default defineEventHandler(async (event) => {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue