openreplay/frontend/app/services/UserService.ts
Delirium a71381da40
getting rid of redux for good (#2556)
* 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>
2024-10-03 11:38:36 +02:00

205 lines
5.9 KiB
TypeScript

import APIClient from 'App/api_client';
import User from 'App/mstore/types/user';
export default class UserService {
private client: APIClient;
constructor(client?: APIClient) {
this.client = client ? client : new APIClient();
}
initClient(client?: APIClient) {
this.client = client || new APIClient();
}
all() {
return this.client
.get('/client/members')
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || []);
}
one(userId: string) {
return this.client
.get('/users/' + userId)
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || {});
}
save(user: User): Promise<any> {
const data = user.toSave();
if (user.userId) {
return this.client
.put('/client/members/' + user.userId, data)
.then((r) => r.json())
.then((response: { data: any }) => response.data || {})
.catch((e) => Promise.reject(e));
} else {
return this.client
.post('/client/members', data)
.then((r) => r.json())
.then((response: { data: any }) => response.data || {})
.catch((e) => Promise.reject(e));
}
}
generateInviteCode(userId: any): Promise<any> {
return this.client
.get(`/client/members/${userId}/reset`)
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || {});
}
delete(userId: string) {
return this.client
.delete('/client/members/' + userId)
.then((r) => r.json())
.then((response: { data: any }) => response.data || {})
.catch((e) => Promise.reject(e));
}
getRoles() {
return this.client
.get('/client/roles')
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || []);
}
createRole(role: any) {
return this.client.post('/client/roles/', role).then((r) => r.json());
}
modifyRole(role: any) {
return this.client
.put(`/client/roles/${role.roleId}`, role)
.then((r) => r.json());
}
deleteRole(roleId: string) {
return this.client.delete(`/client/roles/${roleId}`).then((r) => r.json());
}
getLimits() {
return this.client
.get('/limits')
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || {});
}
getNotificationsCount() {
return this.client
.get('/notifications/count')
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || {});
}
getNotifications() {
return this.client
.get('/notifications')
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || {});
}
ignoreNotification(notificationId: number) {
return this.client
.get(`/notifications/${notificationId}/view`)
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || {});
}
ignoreAllNotifications(params: any) {
return this.client
.post(`/notifications/view`, params)
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || {});
}
saveModules(module: any) {
return this.client
.post('/users/modules', module)
.then((r) => r.json())
.then((response: { data: any }) => response.data || {})
.catch((e) => Promise.reject(e));
}
login(data: any) {
return this.client
.post('/login', data)
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || {});
}
signup(data: any) {
return this.client
.post('/signup', data)
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || {});
}
resetPassword(data: any) {
return this.client
.post('/password/reset', data)
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || {});
}
requestResetPassword(data: any) {
return this.client
.post('/password/reset-link', data)
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || {});
}
updatePassword(data: any) {
return this.client
.post('/account/password', data)
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || {});
}
fetchTenants() {
return this.client
.get('/signup')
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || []);
}
fetchUserInfo() {
return this.client
.get('/account')
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || {});
}
logout() {
return this.client
.post('/logout')
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || {});
}
updateClient(data: any) {
return this.client
.post('/account', data)
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || {});
}
updateAccount(data: any) {
return this.updateClient(data)
}
resendEmailVerification(data: any) {
return this.client
.post('/re-validate', data)
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || {});
}
changeScope(scope: 1 | 2) {
return this.client
.post('/account/scope', { scope })
.then((response: { json: () => any }) => response.json())
.then((response: { data: any }) => response.data || {});
}
}