mirror of
https://github.com/JonasunderscoreJones/BingoGenerator.git
synced 2025-10-22 22:09:18 +02:00
offloaded cookie methods to cookies.js lib
This commit is contained in:
parent
ab73036fdb
commit
35b2781ad6
2 changed files with 106 additions and 68 deletions
94
src/lib/cookies.js
Normal file
94
src/lib/cookies.js
Normal file
|
@ -0,0 +1,94 @@
|
|||
/**
|
||||
* Functions to add the gameLock cookie
|
||||
* @module cookies
|
||||
*/
|
||||
export function addGameLockCookie() {
|
||||
document.cookie = `gameLock=;path=/;max-age=31536000`; // Cookie lasts for 1 year
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to check if the gameLock cookie is present
|
||||
* @returns {boolean} True if the gameLock cookie is present, false otherwise
|
||||
*/
|
||||
export function isGameLockCookiePresent() {
|
||||
return document.cookie.split('; ').some(cookie => cookie.startsWith('gameLock='));
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to delete the gameLock cookie
|
||||
*/
|
||||
export function deleteGameLockCookie() {
|
||||
document.cookie = `gameLock=;path=/;max-age=0`;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param {String} entries
|
||||
* @param {String} cookieName
|
||||
*/
|
||||
export function saveEntriesAsCookie(entries, cookieName = 'bingoEntries') {
|
||||
document.cookie = `${cookieName}=${encodeURIComponent(entries)};path=/;max-age=31536000`; // Cookie lasts for 1 year
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to retrieve the entries from
|
||||
* the cookie
|
||||
* @param {String} cookieName
|
||||
* @returns {String} The entries from the cookie
|
||||
*/
|
||||
export function getEntriesFromCookie(cookieName = 'bingoEntries') {
|
||||
const cookies = document.cookie.split('; ');
|
||||
for (let cookie of cookies) {
|
||||
const [name, value] = cookie.split('=');
|
||||
if (name === cookieName) {
|
||||
return decodeURIComponent(value);
|
||||
}
|
||||
}
|
||||
return ""; // if the cookie is not found
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to delete the entries cookie
|
||||
* @param {String} cookieName
|
||||
*/
|
||||
export function deleteSavedEntriesCookie(cookieName = 'bingoEntries') {
|
||||
document.cookie = `${cookieName}=;path=/;max-age=0`;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Array<JSON>} grid
|
||||
*/
|
||||
export function saveGridAsCookie(grid, cookieName = 'bingoGrid') {
|
||||
const jsonString = JSON.stringify(grid);
|
||||
document.cookie = `${cookieName}=${encodeURIComponent(jsonString)};path=/;max-age=31536000`; // Cookie lasts for 1 year
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to retrieve the grid from the cookie
|
||||
* @param {String} cookieName
|
||||
* @returns {Array<JSON>} the grid from the cookie
|
||||
*/
|
||||
export function getGridFromCookie(cookieName = 'bingoGrid') {
|
||||
const cookies = document.cookie.split('; ');
|
||||
for (let cookie of cookies) {
|
||||
const [name, value] = cookie.split('=');
|
||||
if (name === cookieName) {
|
||||
try {
|
||||
console.log(JSON.parse(decodeURIComponent(value)))
|
||||
return JSON.parse(decodeURIComponent(value));
|
||||
} catch (error) {
|
||||
console.error('Error parsing grid from cookie:', error);
|
||||
}
|
||||
}
|
||||
}
|
||||
return []; //if the cookie is not found
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to delete the grid cookie
|
||||
* @param {String} cookieName
|
||||
*/
|
||||
export function deleteSavedGridCookie(cookieName = 'bingoGrid') {
|
||||
document.cookie = `${cookieName}=;path=/;max-age=0`;
|
||||
deleteGameLockCookie();
|
||||
}
|
|
@ -4,6 +4,7 @@
|
|||
import jsPDF from 'jspdf';
|
||||
import { page } from '$app/stores';
|
||||
import party from "party-js";
|
||||
import { getGridFromCookie, saveGridAsCookie, getEntriesFromCookie, saveEntriesAsCookie, deleteSavedGridCookie, isGameLockCookiePresent, addGameLockCookie, deleteGameLockCookie } from '$lib/cookies.js';
|
||||
|
||||
$: queryParams = $page.url.searchParams;
|
||||
$: bingocode = queryParams.get('bingo');
|
||||
|
@ -52,72 +53,6 @@ Bingo Item 25`;
|
|||
alertBackground.style.display = 'none';
|
||||
}
|
||||
|
||||
// Function to add an empty cookie called gameLock
|
||||
export function addGameLockCookie() {
|
||||
document.cookie = `gameLock=;path=/;max-age=31536000`; // Cookie lasts for 1 year
|
||||
}
|
||||
|
||||
// Function to check if the gameLock cookie is present
|
||||
export function isGameLockCookiePresent() {
|
||||
return document.cookie.split('; ').some(cookie => cookie.startsWith('gameLock='));
|
||||
}
|
||||
|
||||
// Function to delete the gameLock cookie
|
||||
export function deleteGameLockCookie() {
|
||||
document.cookie = `gameLock=;path=/;max-age=0`;
|
||||
}
|
||||
|
||||
|
||||
// Function to save a string as a cookie
|
||||
export function saveEntriesAsCookie(entries, cookieName = 'bingoEntries') {
|
||||
document.cookie = `${cookieName}=${encodeURIComponent(entries)};path=/;max-age=31536000`; // Cookie lasts for 1 year
|
||||
}
|
||||
|
||||
// Function to retrieve a string from a cookie
|
||||
export function getEntriesFromCookie(cookieName = 'bingoEntries') {
|
||||
const cookies = document.cookie.split('; ');
|
||||
for (let cookie of cookies) {
|
||||
const [name, value] = cookie.split('=');
|
||||
if (name === cookieName) {
|
||||
return decodeURIComponent(value);
|
||||
}
|
||||
}
|
||||
return null; // Return null if the cookie is not found
|
||||
}
|
||||
|
||||
export function deleteSavedEntriesCookie(cookieName = 'bingoEntries') {
|
||||
document.cookie = `${cookieName}=;path=/;max-age=0`;
|
||||
}
|
||||
|
||||
// Function to save the nested list as a cookie
|
||||
export function saveGridAsCookie(grid, cookieName = 'bingoGrid') {
|
||||
const jsonString = JSON.stringify(grid);
|
||||
document.cookie = `${cookieName}=${encodeURIComponent(jsonString)};path=/;max-age=31536000`; // Cookie lasts for 1 year
|
||||
}
|
||||
|
||||
// Function to retrieve the nested list from a cookie
|
||||
export function getGridFromCookie(cookieName = 'bingoGrid') {
|
||||
const cookies = document.cookie.split('; ');
|
||||
for (let cookie of cookies) {
|
||||
const [name, value] = cookie.split('=');
|
||||
if (name === cookieName) {
|
||||
try {
|
||||
console.log(JSON.parse(decodeURIComponent(value)))
|
||||
return JSON.parse(decodeURIComponent(value));
|
||||
} catch (error) {
|
||||
console.error('Error parsing grid from cookie:', error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null; // Return null if the cookie is not found
|
||||
}
|
||||
|
||||
export function deleteSavedGridCookie(cookieName = 'bingoGrid') {
|
||||
document.cookie = `${cookieName}=;path=/;max-age=0`;
|
||||
deleteGameLockCookie();
|
||||
}
|
||||
|
||||
|
||||
function generateBingo() {
|
||||
if (running_bingo) {
|
||||
|
@ -238,15 +173,24 @@ Bingo Item 25`;
|
|||
const gridElement = document.querySelector('.bingo-grid');
|
||||
const canvas = await html2canvas(gridElement, { scale: 2 });
|
||||
const imgData = canvas.toDataURL('image/png');
|
||||
|
||||
const padding = 40;
|
||||
|
||||
// Create a jsPDF instance
|
||||
const pdf = new jsPDF({
|
||||
orientation: 'landscape',
|
||||
unit: 'pt',
|
||||
format: [canvas.width, canvas.height]
|
||||
format: [canvas.width + padding * 2, canvas.height + padding * 2],
|
||||
});
|
||||
pdf.addImage(imgData, 'PNG', 0, 0, canvas.width, canvas.height);
|
||||
|
||||
// Add the image to the PDF with padding
|
||||
pdf.addImage(imgData, 'PNG', padding, padding, canvas.width, canvas.height);
|
||||
|
||||
// Save the PDF
|
||||
pdf.save('bingo-grid.pdf');
|
||||
}
|
||||
|
||||
|
||||
export function deleteGridCookieOnNotPlaying() {
|
||||
if (!isGameLockCookiePresent()) {
|
||||
deleteSavedGridCookie();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue