aboutsummaryrefslogtreecommitdiff
path: root/src/background/repositories/MarkRepository.ts
blob: 1f4ab0c1862497524d6ad6e679a366aed6b44baf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { injectable } from 'tsyringe';
import MemoryStorage from '../infrastructures/MemoryStorage';
import GlobalMark from '../domains/GlobalMark';

const MARK_KEY = 'mark';

@injectable()
export default class MarkRepository {
  private cache: MemoryStorage;

  constructor() {
    this.cache = new MemoryStorage();
  }

  getMark(key: string): Promise<GlobalMark | undefined> {
    const marks = this.getOrEmptyMarks();
    const data = marks[key];
    if (!data) {
      return Promise.resolve(undefined);
    }
    const mark = { tabId: data.tabId, url: data.url, x: data.x, y: data.y };
    return Promise.resolve(mark);
  }

  setMark(key: string, mark: GlobalMark): Promise<any> {
    const marks = this.getOrEmptyMarks();
    marks[key] = { tabId: mark.tabId, url: mark.url, x: mark.x, y: mark.y };
    this.cache.set(MARK_KEY, marks);

    return Promise.resolve();
  }

  getOrEmptyMarks() {
    return this.cache.get(MARK_KEY) || {};
  }
}