import { axios, apiBaseUrl, extractResponseData } from "./common"; import { HttpTimelineInfo } from "./timeline"; export interface HttpHighlightMoveRequest { timeline: string; newPosition: number; } export interface IHttpHighlightClient { list(): Promise; put(timeline: string): Promise; delete(timeline: string): Promise; move(req: HttpHighlightMoveRequest): Promise; } export class HttpHighlightClient implements IHttpHighlightClient { list(): Promise { return axios .get(`${apiBaseUrl}/highlights`) .then(extractResponseData); } put(timeline: string): Promise { return axios.put(`${apiBaseUrl}/highlights/${timeline}`).then(); } delete(timeline: string): Promise { return axios.delete(`${apiBaseUrl}/highlights/${timeline}`).then(); } move(req: HttpHighlightMoveRequest): Promise { return axios.post(`${apiBaseUrl}/highlightop/move`, req).then(); } } let client: IHttpHighlightClient = new HttpHighlightClient(); export function getHttpHighlightClient(): IHttpHighlightClient { return client; } export function setHttpHighlightClient( newClient: IHttpHighlightClient ): IHttpHighlightClient { const old = client; client = newClient; return old; }