|
1 | 1 | import { Drawing, TagDrawingSets } from '../types' |
| 2 | +import { tagDrawingSets as fixtureTagDrawingSets } from '../__fixtures__' |
2 | 3 |
|
3 | | -export function loadTagDrawingSets(): TagDrawingSets { |
| 4 | +export function loadMyTagDrawingSets(): TagDrawingSets { |
4 | 5 | if (typeof window === 'undefined') return {} as TagDrawingSets |
5 | 6 | return JSON.parse(localStorage.getItem('tagDrawingSets') || '{}') as TagDrawingSets |
6 | 7 | } |
7 | 8 |
|
8 | | -export function saveTagDrawingSets(tagDrawingSets: TagDrawingSets) { |
9 | | - saveTagDrawingSetsString(JSON.stringify(tagDrawingSets || {})) |
| 9 | +export function saveMyTagDrawingSets(tagDrawingSets: TagDrawingSets): void { |
| 10 | + saveMyTagDrawingSetsString(JSON.stringify(tagDrawingSets || {} as TagDrawingSets)) |
10 | 11 | } |
11 | 12 |
|
12 | | -export function saveTagDrawingSetsString(value: string) { |
| 13 | +export function saveMyTagDrawingSetsString(value: string): void { |
13 | 14 | localStorage.setItem('tagDrawingSets', value) |
14 | 15 | } |
15 | 16 |
|
16 | | -export function drawingHasTag(drawing: Drawing, tag: string) { |
17 | | - const tagDrawingSets: TagDrawingSets = loadTagDrawingSets() |
| 17 | +export function drawingHasMyTag(drawing: Drawing, tag: string): boolean { |
| 18 | + const tagDrawingSets: TagDrawingSets = loadMyTagDrawingSets() |
18 | 19 | const drawings: Drawing[] = tagDrawingSets[tag] ?? [] |
19 | | - return drawings.some(o => o.slug === drawing.slug) |
| 20 | + return drawings.some(o => o.id === drawing.id) |
20 | 21 | } |
21 | 22 |
|
22 | | -export function addTagToDrawing(tag: string, drawing: Drawing) { |
23 | | - const tagDrawingSets: TagDrawingSets = loadTagDrawingSets() |
| 23 | +export function addMyTagToDrawing(tag: string, drawing: Drawing): void { |
| 24 | + const tagDrawingSets: TagDrawingSets = loadMyTagDrawingSets() |
24 | 25 | const drawings: Drawing[] = tagDrawingSets[tag] ?? [] |
25 | | - if (!drawings.includes(drawing)) { |
| 26 | + if (!drawings.some(o => o.id === drawing.id)) { |
26 | 27 | drawings.push(drawing) |
27 | 28 | tagDrawingSets[tag] = drawings |
28 | | - saveTagDrawingSets(tagDrawingSets) |
| 29 | + saveMyTagDrawingSets(tagDrawingSets) |
29 | 30 | } |
30 | 31 | } |
31 | 32 |
|
32 | | -export function removeTagFromDrawing(tag: string, drawing: Drawing) { |
33 | | - const tagDrawingSets: TagDrawingSets = loadTagDrawingSets() |
| 33 | +export function removeMyTagFromDrawing(tag: string, drawing: Drawing): void { |
| 34 | + const tagDrawingSets: TagDrawingSets = loadMyTagDrawingSets() |
34 | 35 | const drawings: Drawing[] | undefined = tagDrawingSets[tag] |
35 | 36 | if (!drawings) return |
36 | | - tagDrawingSets[tag] = drawings.filter(o => o.slug !== drawing.slug) |
| 37 | + tagDrawingSets[tag] = drawings.filter(o => o.id !== drawing.id) |
37 | 38 | if (!tagDrawingSets[tag].length) delete tagDrawingSets[tag] |
38 | | - saveTagDrawingSets(tagDrawingSets) |
| 39 | + saveMyTagDrawingSets(tagDrawingSets) |
| 40 | +} |
| 41 | + |
| 42 | +export function getMyTags(): string[] { |
| 43 | + const tagDrawingSets: TagDrawingSets = loadMyTagDrawingSets() |
| 44 | + return Object.keys(tagDrawingSets) |
| 45 | +} |
| 46 | + |
| 47 | +export function getMyTagsForDrawing(drawing: Drawing): string[] { |
| 48 | + return getMyTags().filter(tag => drawingHasMyTag(drawing, tag)) |
| 49 | +} |
| 50 | + |
| 51 | +export function getFixtureTagsForDrawing(drawing: Drawing): string[] { |
| 52 | + return getFixtureTags().filter(tag => drawingHasFixtureTag(drawing, tag)) |
| 53 | +} |
| 54 | + |
| 55 | +export function getFixtureTags(): string[] { |
| 56 | + return Object.keys(fixtureTagDrawingSets) |
| 57 | +} |
| 58 | + |
| 59 | +export function drawingHasFixtureTag(drawing: Drawing, tag: string): boolean { |
| 60 | + const drawings: Drawing[] = fixtureTagDrawingSets[tag] ?? [] |
| 61 | + return drawings.some(o => o.id === drawing.id) |
39 | 62 | } |
0 commit comments