()
| 12 | type RecentTask = Pick<Task, 'id' | 'title'> |
| 13 | |
| 14 | function readRecentTasks(): RecentTask[] { |
| 15 | try { |
| 16 | const parsed = JSON.parse(localStorage.getItem(recentTasksKey) ?? '[]') as unknown |
| 17 | if (!Array.isArray(parsed)) return [] |
| 18 | return parsed.filter( |
| 19 | (item): item is RecentTask => |
| 20 | typeof item === 'object' && |
| 21 | item !== null && |
| 22 | typeof (item as RecentTask).id === 'string' && |
| 23 | typeof (item as RecentTask).title === 'string', |
| 24 | ) |
| 25 | } catch { |
| 26 | return [] |
| 27 | } |
| 28 | } |
| 29 | |
| 30 | function writeRecentTask(task: RecentTask): RecentTask[] { |
| 31 | const next = [task, ...readRecentTasks().filter((item) => item.id !== task.id)].slice(0, 5) |
no test coverage detected