A fork of https://github.com/ueokande/vim-vixen
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
944 B
37 lines
944 B
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> { |
|
let marks = this.getOrEmptyMarks(); |
|
let data = marks[key]; |
|
if (!data) { |
|
return Promise.resolve(undefined); |
|
} |
|
let mark = { tabId: data.tabId, url: data.url, x: data.x, y: data.y }; |
|
return Promise.resolve(mark); |
|
} |
|
|
|
setMark(key: string, mark: GlobalMark): Promise<any> { |
|
let 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) || {}; |
|
} |
|
} |
|
|
|
|