PDFs in public direct von CPL anfragen und nicht in indexedDB speichern.

IndexedDB wird nicht mehr benötigt, Redux übernimmt die Speicherung der Variablen
This commit is contained in:
ISA
2024-11-04 11:37:52 +01:00
parent f9fb338915
commit eabcb1f25a
4 changed files with 19 additions and 75 deletions

View File

@@ -1,10 +1,8 @@
"use client"; // app/Footer.jsx "use client"; // Wichtig, um sicherzustellen, dass der Code nur auf dem Client ausgeführt wird
import React, { useEffect, useState, useRef } from "react"; import React, { useEffect, useState, useRef } from "react";
import { Icon } from "@iconify/react"; import { Icon } from "@iconify/react";
import { storePDF, getPDF } from "../utils/indexedDB"; // Korrekte Importe für die PDF-Funktionen
function Footer() { function Footer() {
const [pdfName, setPdfName] = useState("");
const [showSlider, setShowSlider] = useState(false); const [showSlider, setShowSlider] = useState(false);
const sliderRef = useRef(null); const sliderRef = useRef(null);
@@ -27,41 +25,14 @@ function Footer() {
//"XIOPM.PDF", //"XIOPM.PDF",
]; ];
useEffect(() => { // Funktion zum Laden der PDFs direkt aus dem öffentlichen Verzeichnis
async function loadAndStorePDFs() { const loadPDF = (fileName) => {
try { const pdfUrl = `/doku/${fileName}`; // Annahme: Die PDFs liegen im Ordner "public/doku"
for (const fileName of pdfFiles) { window.open(pdfUrl, "_blank"); // Öffnet die PDF in einem neuen Tab
const storedPdf = await getPDF(fileName); setShowSlider(false);
if (!storedPdf) {
const response = await fetch(`/doku/${fileName}`);
const pdfBlob = await response.blob();
await storePDF(fileName, pdfBlob);
console.log(`${fileName} in IndexedDB gespeichert.`);
}
}
} catch (error) {
console.error("Fehler beim Laden oder Speichern der PDFs:", error);
}
}
if (typeof window !== "undefined") {
loadAndStorePDFs();
}
}, []);
const loadPDF = async (fileName) => {
const storedPdf = await getPDF(fileName);
if (storedPdf) {
const pdfUrl = URL.createObjectURL(storedPdf);
window.open(pdfUrl, "_blank"); // Öffnet die PDF in einem neuen Tab
setPdfName(fileName);
setShowSlider(false);
} else {
console.error("PDF nicht in IndexedDB gefunden");
}
}; };
// Close slider when clicking outside // Schließt den Slider, wenn außerhalb geklickt wird
useEffect(() => { useEffect(() => {
function handleClickOutside(event) { function handleClickOutside(event) {
if (sliderRef.current && !sliderRef.current.contains(event.target)) { if (sliderRef.current && !sliderRef.current.contains(event.target)) {

View File

@@ -163,7 +163,14 @@ function Dashboard() {
<div className="flex flex-row p-2 space-x-2"> <div className="flex flex-row p-2 space-x-2">
<Icon icon="bx:code-block" className="text-xl text-blue-400" /> <Icon icon="bx:code-block" className="text-xl text-blue-400" />
<p className="text-sm text-gray-600"> <p className="text-sm text-gray-600">
Applikationsversion: {appVersion} <span className="font-bold"></span> Applikationsversion:{" "}
{appVersion}{" "}
</p>
</div>
<div className="flex flex-row p-2 space-x-2">
<Icon icon="mdi:web" className="text-xl text-blue-400" />
<p className="text-sm text-gray-600">
<span className="font-bold"> </span>Webserverversion: 1.0.0
</p> </p>
</div> </div>
</div> </div>

View File

@@ -3,29 +3,10 @@ import { useEffect } from "react";
import { useRouter } from "next/navigation"; import { useRouter } from "next/navigation";
import { ClipLoader } from "react-spinners"; import { ClipLoader } from "react-spinners";
// IndexedDB functions only in the browser
let storePage, getPage;
if (typeof window !== "undefined") {
const indexedDBModule = require("../utils/indexedDB");
storePage = indexedDBModule.storePage;
getPage = indexedDBModule.getPage;
}
export default function WaitPage() { export default function WaitPage() {
const router = useRouter(); const router = useRouter();
useEffect(() => { useEffect(() => {
// Store the page as a Blob in IndexedDB in the background
if (typeof window !== "undefined" && storePage) {
const pageContent = `
<div style="text-align: center; margin-top: 100px;">
<h1>Bitte warten...</h1>
<div class="spinner"></div>
<p>Die Seite wird automatisch neu geladen.</p>
</div>`;
storePage("waitPage", new Blob([pageContent], { type: "text/html" }));
}
// Timer to redirect after 20 seconds // Timer to redirect after 20 seconds
const timer = setTimeout(() => { const timer = setTimeout(() => {
router.push("/"); router.push("/");

View File

@@ -1,16 +1,11 @@
import { openDB, deleteDB } from "idb"; //wird nicht mehr benötigt, Redux übernimmt die Speicherung der Variablen
//import { openDB, deleteDB } from "idb";
// Exportiere die Funktion initializeDatabase // Exportiere die Funktion initializeDatabase
export async function initializeDatabase() { /* export async function initializeDatabase() {
try { try {
const db = await openDB("CPLDatabase", 1, { const db = await openDB("CPLDatabase", 1, {
upgrade(db) { upgrade(db) {
if (!db.objectStoreNames.contains("pdfs")) {
db.createObjectStore("pdfs");
}
if (!db.objectStoreNames.contains("pages")) {
db.createObjectStore("pages");
}
if (!db.objectStoreNames.contains("cplVariables")) { if (!db.objectStoreNames.contains("cplVariables")) {
db.createObjectStore("cplVariables"); db.createObjectStore("cplVariables");
} }
@@ -36,14 +31,4 @@ export async function getFromIndexedDB(key) {
const db = await initializeDatabase(); const db = await initializeDatabase();
return await db.get("cplVariables", key); return await db.get("cplVariables", key);
} }
*/
// Beispiel weitere Funktion für PDF-Speicherung
export async function storePDF(name, file) {
const db = await initializeDatabase();
await db.put("pdfs", file, name);
}
// Funktion zum Abrufen von PDF-Dateien aus der IndexedDB
export async function getPDF(name) {
const db = await initializeDatabase();
return await db.get("pdfs", name);
}