school-dashboard-exercise/src/utils/setLocalStorageBaseQuestions.ts
karimalden b873ac0bba format
2024-08-07 14:52:29 +03:00

67 lines
2.1 KiB
TypeScript

import { convertFileToBase64 } from "./LocalStorage";
import { base64StringToFile } from "./base64StringToFile";
export const setLocalStorageBaseQuestions = async (key: string, data: any) => {
try {
// Convert the main image if it is a File
if (data.image instanceof File) {
data.image = await convertFileToBase64(data.image);
}
if (Array.isArray(data.Questions)) {
for (const option of data.Questions) {
if (option.image instanceof File) {
option.image = await convertFileToBase64(option.image);
}
}
}
if (Array.isArray(data.Questions.QuestionOptions)) {
for (const option of data.Questions.QuestionOptions) {
if (option.answer_image instanceof File) {
option.answer_image = await convertFileToBase64(option.answer_image);
}
}
}
const jsonData = JSON.stringify(data);
localStorage.setItem(key, jsonData);
} catch (error) {
console.error("Error stringifying data for localStorage", error);
}
};
export const getLocalStorageBaseQuestions = (key: string): any | null => {
try {
const jsonData = localStorage.getItem(key);
if (!jsonData) return null;
const data = JSON.parse(jsonData);
// Convert the main image from base64 to File if necessary
if (typeof data.image === "string" && data.image.length > 0) {
data.image = base64StringToFile(data.image);
}
// Convert each image in Questions from base64 to File if necessary
if (Array.isArray(data.Questions)) {
for (const option of data.Questions) {
if (typeof option.image === "string") {
option.image = base64StringToFile(option.image);
}
}
}
if (Array.isArray(data.Questions.QuestionOptions)) {
for (const option of data.Questions.QuestionOptions) {
if (typeof option.answer_image === "string") {
option.answer_image = base64StringToFile(option.answer_image);
}
}
}
return data;
} catch (error) {
console.error("Error parsing data from localStorage", error);
return null;
}
};