* fix(player): fix initial visual offset jump check * change(ui): add empty feature flags page * change(ui): add empty feature flags page * fix(ui): some more fixes * change(ui): add subrouting for sessions tab * change(ui): more fixes for routing * change(ui): add flag creation page, flags list table, flag store/type * change(tracker): flags in tracker * change(tracker): return all flags * feat(ui): add API and types connector * feat(ui): split components to prevent rerendering * feat(ui): add icon, fix redirect.path crashlooping * feat(ui): add conditions and stuff, add flags class to tracker to handle stuff * feat(ui): add condition state and filters * feat(ui): fix flag creation with api change * feat(ui): fix flag editing (api changes); simplify new/edit flag component * feat(ui): add filters, make table pretty :insert_magic_emoji: * feat(ui): remove rollout percentage from list, remove console logs * feat(ui): multivar toggler * feat(tracker): add more methods to tracker * feat(tracker): more type coverage * feat(tracker): add tests * fix(ui): some fixes for multivar * feat(ui): multivar api support * fix(ui):start adding tests for fflags * fix(ui): rm not working file.. * fix(ui): rm unused packages * fix(ui): remove name field, fix some api and type names * fix(ui): fix crash * fix(tracker/ui): keep flags in sessionStorage, support API errors in feature flags storage * fix(tracker/ui): clear unused things, fix url handling, fix icons rendering etc
81 lines
2.7 KiB
TypeScript
81 lines
2.7 KiB
TypeScript
import React from 'react';
|
|
import DashboardStore from './dashboardStore';
|
|
import MetricStore from './metricStore';
|
|
import UserStore from './userStore';
|
|
import RoleStore from './roleStore';
|
|
import APIClient from 'App/api_client';
|
|
import FunnelStore from './funnelStore';
|
|
import {
|
|
services
|
|
} from 'App/services';
|
|
import SettingsStore from './settingsStore';
|
|
import AuditStore from './auditStore';
|
|
import NotificationStore from './notificationStore';
|
|
import ErrorStore from './errorStore';
|
|
import SessionStore from './sessionStore';
|
|
import NotesStore from './notesStore';
|
|
import BugReportStore from './bugReportStore'
|
|
import RecordingsStore from './recordingsStore'
|
|
import AssistMultiviewStore from './assistMultiviewStore';
|
|
import WeeklyReportStore from './weeklyReportConfigStore'
|
|
import AlertStore from './alertsStore'
|
|
import FeatureFlagsStore from "./featureFlagsStore";
|
|
|
|
export class RootStore {
|
|
dashboardStore: DashboardStore;
|
|
metricStore: MetricStore;
|
|
funnelStore: FunnelStore;
|
|
settingsStore: SettingsStore;
|
|
userStore: UserStore;
|
|
roleStore: RoleStore;
|
|
auditStore: AuditStore;
|
|
errorStore: ErrorStore;
|
|
notificationStore: NotificationStore;
|
|
sessionStore: SessionStore;
|
|
notesStore: NotesStore;
|
|
bugReportStore: BugReportStore;
|
|
recordingsStore: RecordingsStore;
|
|
assistMultiviewStore: AssistMultiviewStore;
|
|
weeklyReportStore: WeeklyReportStore
|
|
alertsStore: AlertStore
|
|
featureFlagsStore: FeatureFlagsStore
|
|
|
|
constructor() {
|
|
this.dashboardStore = new DashboardStore();
|
|
this.metricStore = new MetricStore();
|
|
this.funnelStore = new FunnelStore();
|
|
this.settingsStore = new SettingsStore();
|
|
this.userStore = new UserStore();
|
|
this.roleStore = new RoleStore();
|
|
this.auditStore = new AuditStore();
|
|
this.errorStore = new ErrorStore();
|
|
this.notificationStore = new NotificationStore();
|
|
this.sessionStore = new SessionStore();
|
|
this.notesStore = new NotesStore();
|
|
this.bugReportStore = new BugReportStore();
|
|
this.recordingsStore = new RecordingsStore();
|
|
this.assistMultiviewStore = new AssistMultiviewStore();
|
|
this.weeklyReportStore = new WeeklyReportStore();
|
|
this.alertsStore = new AlertStore();
|
|
this.featureFlagsStore = new FeatureFlagsStore();
|
|
}
|
|
|
|
initClient() {
|
|
const client = new APIClient();
|
|
services.forEach(service => {
|
|
service.initClient(client);
|
|
})
|
|
}
|
|
}
|
|
|
|
const StoreContext = React.createContext<RootStore>({} as RootStore);
|
|
|
|
export const StoreProvider = ({ children, store }: any) => {
|
|
return <StoreContext.Provider value={store}>{children}</StoreContext.Provider>;
|
|
};
|
|
|
|
export const useStore = () => React.useContext(StoreContext);
|
|
|
|
export const withStore = (Component: any) => (props: any) => {
|
|
return <Component {...props} mstore={useStore()} />;
|
|
};
|