* start moving ui to redux tlk * remove unused reducer * changes for gdpr and site types * ui: migrating duck/roles to mobx * ui: drop unreferenced types * ui: drop unreferenced types * ui: move player slice reducer to mobx family * ui: move assignments to issueReportingStore.ts * remove issues store * some fixes after issues store * remove errors reducer, drop old components * finish removing errors reducer * start moving integrations state to mobx * change(ui): funnel duck cleanup * change(ui): custom fields * change(ui): customMetrics cleanup * change(ui): customMetrics cleanup * change(ui): duck/filters minor cleanup * change(ui): duck/filters cleanup * change(ui): duck/customMetrics cleanup and upgrades * fix integrations service, fix babel config to >.25 + not ie * refactoring integrations reducers etc WIP * finish removing integrations state * some fixes for integrated check * start of projects refactoring * move api and "few" files to new project store * new batch for site -> projects * fix setid context * move all critical components, drop site duck * remove all duck/site refs, remove old components * fixup for SessionTags.tsx, remove duck/sources (?) * move session store * init sessionstore outside of context * fix userfilter * replace simple actions for session store * sessions sotre * Rtm temp (#2597) * change(ui): duck/search wip * change(ui): duck/search wip * change(ui): duck/search wip * change(ui): duck/searchLive wip * change(ui): duck/searchLive wip * change(ui): duck/searchLive wip * change(ui): duck/searchLive wip * change(ui): search states * change(ui): search states * change(ui): search states * change(ui): fix savedSearch store * change(ui): fix savedSearch store * some fixes for session connector * change(ui): fix savedSearch store * change(ui): fix searchLive * change(ui): fix searchLive * fixes for session replay * change(ui): bookmark fetch * last components for sessions * add fetchautoplaylist * finish session reducer, remove deleted reducers * change(ui): fix the search fetch * change(ui): fix the search fetch * fix integrations call ctx * ensure ctx for sessionstore * fix(ui): checking for latest sessions path * start removing user reducer * removing user reducer pt2... * finish user store * remove rand log * fix crashes * tinkering workflow file for tracker test * making sure prefetched sessions work properly * fix conflict * fix router redirects during loading --------- Co-authored-by: Shekar Siri <sshekarsiri@gmail.com>
116 lines
3.4 KiB
TypeScript
116 lines
3.4 KiB
TypeScript
import APIClient from 'App/api_client';
|
|
import { ISession } from 'Types/session/session';
|
|
import { IErrorStack } from 'Types/session/errorStack';
|
|
import { clean as cleanParams } from 'App/api_client';
|
|
|
|
export default class SettingsService {
|
|
private client: APIClient;
|
|
|
|
constructor(client?: APIClient) {
|
|
this.client = client ? client : new APIClient();
|
|
}
|
|
|
|
initClient(client?: APIClient) {
|
|
this.client = client || new APIClient();
|
|
}
|
|
|
|
saveCaptureRate(projectId: number, data: any) {
|
|
return this.client.post(`/${projectId}/sample_rate`, data);
|
|
}
|
|
|
|
fetchCaptureRate(projectId: number) {
|
|
return this.client
|
|
.get(`/${projectId}/sample_rate`)
|
|
.then((response) => response.json())
|
|
.then((response) => response.data || 0);
|
|
}
|
|
|
|
fetchCaptureConditions(
|
|
projectId: number
|
|
): Promise<{ rate: number; conditionalCapture: boolean; conditions: any[] }> {
|
|
return this.client
|
|
.get(`/${projectId}/conditions`)
|
|
.then((response) => response.json())
|
|
.then((response) => response.data || []);
|
|
}
|
|
|
|
saveCaptureConditions(projectId: number, data: any) {
|
|
return this.client.post(`/${projectId}/conditions`, data);
|
|
}
|
|
|
|
getSessions(filter: any): Promise<{ sessions: ISession[]; total: number }> {
|
|
return this.client
|
|
.post('/sessions/search', filter)
|
|
.then((r) => r.json())
|
|
.then((response) => response.data || [])
|
|
.catch((e) => Promise.reject(e));
|
|
}
|
|
|
|
getFirstMobUrl(sessionId: string): Promise<{ domURL: string[] }> {
|
|
return this.client
|
|
.get(`/sessions/${sessionId}/first-mob`)
|
|
.then((r) => r.json())
|
|
.then((j) => j.data || {})
|
|
.catch(console.error);
|
|
}
|
|
|
|
getSessionInfo(sessionId: string, isLive?: boolean): Promise<ISession> {
|
|
return this.client
|
|
.get(isLive ? `/assist/sessions/${sessionId}` : `/sessions/${sessionId}/replay`)
|
|
.then((r) => r.json())
|
|
.then((j) => j.data || {})
|
|
.catch(console.error);
|
|
}
|
|
|
|
getSessionEvents = async (sessionId: string) => {
|
|
return this.client
|
|
.get(`/sessions/${sessionId}/events`)
|
|
.then((r) => r.json())
|
|
.then((j) => j.data || [])
|
|
.catch(console.error);
|
|
}
|
|
|
|
getLiveSessions(filter: any): Promise<{ sessions: ISession[] }> {
|
|
return this.client
|
|
.post('/assist/sessions', cleanParams(filter))
|
|
.then((r) => r.json())
|
|
.then((response) => response.data || [])
|
|
.catch((e) => Promise.reject(e));
|
|
}
|
|
|
|
getErrorStack(sessionId: string, errorId: string): Promise<{ trace: IErrorStack[] }> {
|
|
return this.client
|
|
.get(`/sessions/${sessionId}/errors/${errorId}/sourcemaps`)
|
|
.then((r) => r.json())
|
|
.then((j) => j.data || {})
|
|
.catch((e) => Promise.reject(e));
|
|
}
|
|
|
|
getAutoplayList(params = {}): Promise<{ sessionId: string }[]> {
|
|
return this.client
|
|
.post('/sessions/search/ids', cleanParams(params))
|
|
.then((r) => r.json())
|
|
.then((j) => j.data || [])
|
|
.catch((e) => Promise.reject(e));
|
|
}
|
|
|
|
toggleFavorite(sessionId: string): Promise<any> {
|
|
return this.client.get(`/sessions/${sessionId}/favorite`).catch(Promise.reject);
|
|
}
|
|
|
|
getClickMap(params = {}): Promise<any[]> {
|
|
return this.client
|
|
.post('/heatmaps/url', params)
|
|
.then((r) => r.json())
|
|
.then((j) => j.data || [])
|
|
.catch(Promise.reject);
|
|
}
|
|
|
|
getRecordingStatus(): Promise<any> {
|
|
return this.client
|
|
.get('/check-recording-status')
|
|
.then((r) => r.json())
|
|
.then((j) => j.data || {})
|
|
.catch(Promise.reject);
|
|
}
|
|
}
|