This repository has been archived on 2024-02-08. You can view files and clone it, but cannot push or open issues or pull requests.
frontend/src/modules/projectHistory.ts

52 lines
1.1 KiB
TypeScript

export interface ProjectHistory {
id: number;
}
export function getHistory(): ProjectHistory[] {
const savedHistory = localStorage.getItem('projectHistory')
if (savedHistory === null) {
return []
}
return JSON.parse(savedHistory)
}
function saveHistory(history: ProjectHistory[]) {
if (history.length === 0) {
localStorage.removeItem('projectHistory')
return
}
localStorage.setItem('projectHistory', JSON.stringify(history))
}
export function saveProjectToHistory(project: ProjectHistory) {
const history: ProjectHistory[] = getHistory()
// Remove the element if it already exists in history, preventing duplicates and essentially moving it to the beginning
history.forEach((l, i) => {
if (l.id === project.id) {
history.splice(i, 1)
}
})
// Add the new project to the beginning of the project
history.unshift(project)
if (history.length > 5) {
history.pop()
}
saveHistory(history)
}
export function removeProjectFromHistory(project: ProjectHistory) {
const history: ProjectHistory[] = getHistory()
history.forEach((l, i) => {
if (l.id === project.id) {
history.splice(i, 1)
}
})
saveHistory(history)
}