-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
3810f87
commit 1d722ed
Showing
3 changed files
with
158 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
/** | ||
* Save data to local storage under the specified key. | ||
* @param {string} key - The key under which the data should be stored. | ||
* @param {any} data - The data to be stored. | ||
*/ | ||
export const saveToLocalStorage = (key, data) => { | ||
try { | ||
const serializedData = JSON.stringify(data); | ||
localStorage.setItem(key, serializedData); | ||
} catch (error) { | ||
console.error("Failed to save data to local storage:", error); | ||
} | ||
}; | ||
|
||
/** | ||
* Retrieve data from local storage for the given key. | ||
* @param {string} key - The key for which data should be retrieved. | ||
* @param {any} defaultValue - The default value to return if the key doesn't exist. | ||
* @returns {any} - The retrieved data or the default value. | ||
*/ | ||
export const getFromLocalStorage = (key, defaultValue = null) => { | ||
try { | ||
const serializedData = localStorage.getItem(key); | ||
if (serializedData === null) { | ||
return defaultValue; | ||
} | ||
return JSON.parse(serializedData); | ||
} catch (error) { | ||
console.error("Failed to retrieve data from local storage:", error); | ||
return defaultValue; | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
// convert tasks list to JSON string | ||
export const exportTasksToJSON = (tasks) => { | ||
try { | ||
return JSON.stringify(tasks); | ||
} catch (error) { | ||
console.error("Failed to convert tasks to JSON:", error); | ||
return null; | ||
} | ||
}; | ||
|
||
// parse JSON string and return tasks list | ||
export const importTasksFromJSON = (jsonString) => { | ||
try { | ||
const tasks = JSON.parse(jsonString); | ||
|
||
if (!Array.isArray(tasks)) { | ||
throw new Error("The JSON content isn't an array."); | ||
} | ||
|
||
for (let task of tasks) { | ||
if (typeof task !== 'object') { | ||
throw new Error("A task in the JSON isn't an object."); | ||
} | ||
if (!task.hasOwnProperty('id')) { | ||
throw new Error("A task in the JSON doesn't have an 'id' property."); | ||
} | ||
if (typeof task.id !== 'number') { | ||
throw new Error("The 'id' property in a task isn't a number."); | ||
} | ||
if (!task.hasOwnProperty('text')) { | ||
throw new Error("A task in the JSON doesn't have a 'text' property."); | ||
} | ||
if (typeof task.text !== 'string') { | ||
throw new Error("The 'text' property in a task isn't a string."); | ||
} | ||
} | ||
|
||
return tasks; | ||
|
||
} catch (error) { | ||
console.error("Failed to parse JSON to tasks:", error); | ||
return null; | ||
} | ||
}; |