openreplay/frontend/app/services/NotesService.ts
Andrey Babushkin fd5c0c9747
Add lokalisation (#3092)
* applied eslint

* add locales and lint the project

* removed error boundary

* updated locales

* fix min files

* fix locales
2025-03-06 17:43:15 +01:00

111 lines
2.5 KiB
TypeScript

import APIClient from 'App/api_client';
export const tagProps = {
ISSUE: 'red',
DESIGN: 'geekblue',
NOTE: 'purple',
};
export type iTag = keyof typeof tagProps | 'ALL';
export const TAGS = Object.keys(
tagProps,
) as unknown as (keyof typeof tagProps)[];
export interface WriteNote {
message: string;
tag: string;
isPublic: boolean;
timestamp?: number;
startAt: number;
endAt: number;
thumbnail: string;
}
export interface Note {
createdAt: string;
deletedAt: string | null;
isPublic: boolean;
message: string;
noteId: number;
projectId: number;
sessionId: string;
tag: iTag;
timestamp: number;
userId: number;
userName: string;
startAt: number;
endAt: number;
thumbnail: string;
}
export interface NotesFilter {
page: number;
limit: number;
sort: string;
order: 'DESC' | 'ASC';
tags: iTag[];
sharedOnly: boolean;
mineOnly: boolean;
search: string;
}
export default class NotesService {
private client: APIClient;
constructor(client?: APIClient) {
this.client = client || new APIClient();
}
initClient(client?: APIClient) {
this.client = client || new APIClient();
}
fetchNotes(filter: NotesFilter): Promise<{ notes: Note[]; count: number }> {
return this.client
.post('/notes', filter)
.then((r) => r.json().then((r) => r.data));
}
fetchNoteById(noteId: string): Promise<Note> {
return this.client
.get(`/notes/${noteId}`)
.then((r) => r.json().then((r) => r.data));
}
getNotesBySessionId(sessionID: string): Promise<Note[]> {
return this.client
.get(`/sessions/${sessionID}/notes`)
.then((r) => r.json().then((r) => r.data));
}
addNote(sessionID: string, note: WriteNote): Promise<Note> {
return this.client
.post(`/sessions/${sessionID}/notes`, note)
.then((r) => r.json().then((r) => r.data));
}
updateNote(noteID: string, note: WriteNote): Promise<Note> {
return this.client
.post(`/notes/${noteID}`, note)
.then((r) => r.json().then((r) => r.data));
}
deleteNote(noteID: number) {
return this.client
.delete(`/notes/${noteID}`)
.then((r) => r.json().then((r) => r.data));
}
sendSlackNotification(noteId: string, webhook: string) {
return this.client
.get(`/notes/${noteId}/slack/${webhook}`)
.then((r) => r.json().then((r) => r.data));
}
sendMsTeamsNotification(noteId: string, webhook: string) {
return this.client
.get(`/notes/${noteId}/msteams/${webhook}`)
.then((r) => r.json().then((r) => r.data));
}
}