ui: split services
This commit is contained in:
parent
c16bf9644d
commit
1d9ba3de6d
13 changed files with 96 additions and 34 deletions
3
frontend/app/Tracker.ts
Normal file
3
frontend/app/Tracker.ts
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
export default function Tracker() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
3
frontend/app/components/Client/Billing/Billing.tsx
Normal file
3
frontend/app/components/Client/Billing/Billing.tsx
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
export default function Billing() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { withRouter } from 'react-router-dom';
|
import { withRouter } from 'react-router-dom';
|
||||||
import { Switch, Route, Redirect } from 'react-router';
|
import { Switch, Route, Redirect } from 'react-router';
|
||||||
import { CLIENT_TABS, client as clientRoute } from 'App/routes';
|
import { client as clientRoute } from 'App/routes';
|
||||||
|
import { CLIENT_TABS } from 'App/utils/routeUtils';
|
||||||
import { PANEL_SIZES } from 'App/constants/panelSizes'
|
import { PANEL_SIZES } from 'App/constants/panelSizes'
|
||||||
|
|
||||||
import SessionsListingSettings from 'Components/Client/SessionsListingSettings';
|
import SessionsListingSettings from 'Components/Client/SessionsListingSettings';
|
||||||
|
|
@ -10,7 +11,7 @@ import ProfileSettings from './ProfileSettings';
|
||||||
import Integrations from './Integrations';
|
import Integrations from './Integrations';
|
||||||
import UserView from './Users/UsersView';
|
import UserView from './Users/UsersView';
|
||||||
import AuditView from './Audit/AuditView';
|
import AuditView from './Audit/AuditView';
|
||||||
import Sites from './Sites';
|
import Billing from './Billing/Billing';
|
||||||
import Projects from './Projects';
|
import Projects from './Projects';
|
||||||
import CustomFields from './CustomFields';
|
import CustomFields from './CustomFields';
|
||||||
import Webhooks from './Webhooks';
|
import Webhooks from './Webhooks';
|
||||||
|
|
@ -65,6 +66,12 @@ export default class Client extends React.PureComponent {
|
||||||
path={clientRoute(CLIENT_TABS.CUSTOM_FIELDS)}
|
path={clientRoute(CLIENT_TABS.CUSTOM_FIELDS)}
|
||||||
component={CustomFields}
|
component={CustomFields}
|
||||||
/>
|
/>
|
||||||
|
<Route
|
||||||
|
exact
|
||||||
|
strict
|
||||||
|
path={clientRoute(CLIENT_TABS.BILLING)}
|
||||||
|
component={Billing}
|
||||||
|
/>
|
||||||
<Route
|
<Route
|
||||||
exact
|
exact
|
||||||
strict
|
strict
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Icon } from 'UI';
|
|
||||||
import HealthModal from 'Components/Header/HealthStatus/HealthModal/HealthModal';
|
import HealthModal from 'Components/Header/HealthStatus/HealthModal/HealthModal';
|
||||||
import HealthWidget from 'Components/Header/HealthStatus/HealthWidget';
|
import HealthWidget from 'Components/Header/HealthStatus/HealthWidget';
|
||||||
import UserMenu from 'Components/Header/UserMenu/UserMenu';
|
|
||||||
import { Popover, Button } from 'antd';
|
import { Popover, Button } from 'antd';
|
||||||
import { ExclamationCircleOutlined } from '@ant-design/icons';
|
import { ExclamationCircleOutlined } from '@ant-design/icons';
|
||||||
import { getHealthRequest } from './getHealth';
|
import { getHealthRequest } from './getHealth';
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
export default function SaasHeaderMenuItems() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
3
frontend/app/layout/CrispIframe.tsx
Normal file
3
frontend/app/layout/CrispIframe.tsx
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
export default function CrispIframe({ WEBSITE_ID }: { WEBSITE_ID?: string }) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
@ -2,7 +2,7 @@ import { ArrowRightOutlined } from '@ant-design/icons';
|
||||||
import { Button, Drawer, Space, Typography } from 'antd';
|
import { Button, Drawer, Space, Typography } from 'antd';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
|
import CrispIframe from './CrispIframe';
|
||||||
import { Icon } from 'UI';
|
import { Icon } from 'UI';
|
||||||
|
|
||||||
const { Text } = Typography;
|
const { Text } = Typography;
|
||||||
|
|
@ -126,19 +126,7 @@ function SupportModal(props: Props) {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{!!WEBSITE_ID && (
|
<CrispIframe WEBSITE_ID={WEBSITE_ID} />
|
||||||
<div className="flex rounded border w-full">
|
|
||||||
<iframe
|
|
||||||
src={`https://go.crisp.chat/chat/embed/?website_id=${WEBSITE_ID}`}
|
|
||||||
style={{
|
|
||||||
height: '415px',
|
|
||||||
margin: '0',
|
|
||||||
padding: '0',
|
|
||||||
width: '100%',
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
</Drawer>
|
</Drawer>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,7 @@ import { getInitials } from 'App/utils';
|
||||||
import Notifications from 'Components/Alerts/Notifications/Notifications';
|
import Notifications from 'Components/Alerts/Notifications/Notifications';
|
||||||
import HealthStatus from 'Components/Header/HealthStatus';
|
import HealthStatus from 'Components/Header/HealthStatus';
|
||||||
import UserMenu from 'Components/Header/UserMenu/UserMenu';
|
import UserMenu from 'Components/Header/UserMenu/UserMenu';
|
||||||
import LanguageSwitcher from 'Components/LanguageSwitcher/LanguageSwitcher';
|
import SaasHeaderMenuItems from 'Components/Header/SaasHeaderMenuItems/SaasHeaderMenuItems';
|
||||||
|
|
||||||
import GettingStartedProgress from 'Shared/GettingStarted/GettingStartedProgress';
|
import GettingStartedProgress from 'Shared/GettingStarted/GettingStartedProgress';
|
||||||
import ProjectDropdown from 'Shared/ProjectDropdown';
|
import ProjectDropdown from 'Shared/ProjectDropdown';
|
||||||
import { useStore } from 'App/mstore';
|
import { useStore } from 'App/mstore';
|
||||||
|
|
@ -20,6 +19,7 @@ function TopRight() {
|
||||||
<Space style={{ lineHeight: '0' }}>
|
<Space style={{ lineHeight: '0' }}>
|
||||||
{spotOnly ? null : (
|
{spotOnly ? null : (
|
||||||
<>
|
<>
|
||||||
|
<SaasHeaderMenuItems />
|
||||||
<ProjectDropdown />
|
<ProjectDropdown />
|
||||||
<GettingStartedProgress />
|
<GettingStartedProgress />
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { CLIENT_TABS } from './utils/routeUtils'
|
||||||
|
|
||||||
const hashed = (path: string, hash?: string | number): string => {
|
const hashed = (path: string, hash?: string | number): string => {
|
||||||
if ((typeof hash === 'string' && hash !== '') || typeof hash === 'number') {
|
if ((typeof hash === 'string' && hash !== '') || typeof hash === 'number') {
|
||||||
return `${path}#${hash}`;
|
return `${path}#${hash}`;
|
||||||
|
|
@ -77,20 +79,6 @@ export const signup = (): string => '/signup';
|
||||||
|
|
||||||
export const forgotPassword = (): string => '/reset-password';
|
export const forgotPassword = (): string => '/reset-password';
|
||||||
|
|
||||||
export const CLIENT_TABS = {
|
|
||||||
INTEGRATIONS: 'integrations',
|
|
||||||
PROFILE: 'account',
|
|
||||||
SESSIONS_LISTING: 'sessions-listing',
|
|
||||||
MANAGE_USERS: 'team',
|
|
||||||
MANAGE_ROLES: 'roles',
|
|
||||||
SITES: 'projects',
|
|
||||||
CUSTOM_FIELDS: 'metadata',
|
|
||||||
WEBHOOKS: 'webhooks',
|
|
||||||
NOTIFICATIONS: 'notifications',
|
|
||||||
AUDIT: 'audit',
|
|
||||||
BILLING: 'billing',
|
|
||||||
MODULES: 'modules',
|
|
||||||
};
|
|
||||||
export const CLIENT_DEFAULT_TAB = CLIENT_TABS.PROFILE;
|
export const CLIENT_DEFAULT_TAB = CLIENT_TABS.PROFILE;
|
||||||
const routerClientTabString = `:activeTab(${Object.values(CLIENT_TABS).join('|')})`;
|
const routerClientTabString = `:activeTab(${Object.values(CLIENT_TABS).join('|')})`;
|
||||||
export const client = (tab = routerClientTabString): string => `/client/${tab}`;
|
export const client = (tab = routerClientTabString): string => `/client/${tab}`;
|
||||||
|
|
|
||||||
38
frontend/app/services/BillingService.ts
Normal file
38
frontend/app/services/BillingService.ts
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
export default class BillingService {
|
||||||
|
initClient(arg: any) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
fetchPlan = async () => {
|
||||||
|
return Promise.resolve()
|
||||||
|
}
|
||||||
|
|
||||||
|
fetchInvoices = async (period: {
|
||||||
|
startTimestamp: number,
|
||||||
|
endTimestamp: number,
|
||||||
|
limit: number,
|
||||||
|
page: number,
|
||||||
|
}) => {
|
||||||
|
return Promise.resolve()
|
||||||
|
}
|
||||||
|
|
||||||
|
upgradePlan = async (instance: any) => {
|
||||||
|
return Promise.resolve()
|
||||||
|
}
|
||||||
|
|
||||||
|
updatePlan = async (instance: any) => {
|
||||||
|
return Promise.resolve()
|
||||||
|
}
|
||||||
|
|
||||||
|
cancelPlan = async () => {
|
||||||
|
return Promise.resolve()
|
||||||
|
}
|
||||||
|
|
||||||
|
enablePlan = async () => {
|
||||||
|
return Promise.resolve()
|
||||||
|
}
|
||||||
|
|
||||||
|
getOnboard = async () => {
|
||||||
|
return Promise.resolve()
|
||||||
|
}
|
||||||
|
}
|
||||||
9
frontend/app/services/SignalService.ts
Normal file
9
frontend/app/services/SignalService.ts
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
export default class SignalService {
|
||||||
|
initClient(arg: any) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
send(...args: any[]): Promise<any> {
|
||||||
|
return Promise.resolve()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -18,6 +18,7 @@ import SessionService from './SessionService';
|
||||||
import UserService from './UserService';
|
import UserService from './UserService';
|
||||||
import UxtestingService from './UxtestingService';
|
import UxtestingService from './UxtestingService';
|
||||||
import WebhookService from './WebhookService';
|
import WebhookService from './WebhookService';
|
||||||
|
|
||||||
import SpotService from './spotService';
|
import SpotService from './spotService';
|
||||||
import LoginService from './loginService';
|
import LoginService from './loginService';
|
||||||
import FilterService from './FilterService';
|
import FilterService from './FilterService';
|
||||||
|
|
@ -26,6 +27,8 @@ import CustomFieldService from './CustomFieldService';
|
||||||
import IntegrationsService from './IntegrationsService';
|
import IntegrationsService from './IntegrationsService';
|
||||||
import ProjectsService from './ProjectsService';
|
import ProjectsService from './ProjectsService';
|
||||||
import KaiService from '@/components/Kai/KaiService';
|
import KaiService from '@/components/Kai/KaiService';
|
||||||
|
import SignalService from './SignalService';
|
||||||
|
import BillingService from '@/services/BillingService';
|
||||||
|
|
||||||
export const dashboardService = new DashboardService();
|
export const dashboardService = new DashboardService();
|
||||||
export const metricService = new MetricService();
|
export const metricService = new MetricService();
|
||||||
|
|
@ -39,6 +42,8 @@ export const recordingsService = new RecordingsService();
|
||||||
export const configService = new ConfigService();
|
export const configService = new ConfigService();
|
||||||
export const alertsService = new AlertsService();
|
export const alertsService = new AlertsService();
|
||||||
export const webhookService = new WebhookService();
|
export const webhookService = new WebhookService();
|
||||||
|
export const signalService = new SignalService();
|
||||||
|
|
||||||
export const healthService = new HealthService();
|
export const healthService = new HealthService();
|
||||||
export const fflagsService = new FFlagsService();
|
export const fflagsService = new FFlagsService();
|
||||||
export const assistStatsService = new AssistStatsService();
|
export const assistStatsService = new AssistStatsService();
|
||||||
|
|
@ -54,6 +59,7 @@ export const integrationsService = new IntegrationsService();
|
||||||
export const searchService = new SearchService();
|
export const searchService = new SearchService();
|
||||||
export const projectsService = new ProjectsService();
|
export const projectsService = new ProjectsService();
|
||||||
export const kaiService = new KaiService();
|
export const kaiService = new KaiService();
|
||||||
|
export const billingService = new BillingService();
|
||||||
|
|
||||||
export const services = [
|
export const services = [
|
||||||
projectsService,
|
projectsService,
|
||||||
|
|
@ -69,6 +75,7 @@ export const services = [
|
||||||
configService,
|
configService,
|
||||||
alertsService,
|
alertsService,
|
||||||
webhookService,
|
webhookService,
|
||||||
|
signalService,
|
||||||
healthService,
|
healthService,
|
||||||
fflagsService,
|
fflagsService,
|
||||||
assistStatsService,
|
assistStatsService,
|
||||||
|
|
@ -83,4 +90,5 @@ export const services = [
|
||||||
integrationsService,
|
integrationsService,
|
||||||
searchService,
|
searchService,
|
||||||
kaiService,
|
kaiService,
|
||||||
|
billingService,
|
||||||
];
|
];
|
||||||
|
|
|
||||||
14
frontend/app/utils/routeUtils.ts
Normal file
14
frontend/app/utils/routeUtils.ts
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
export const CLIENT_TABS = {
|
||||||
|
INTEGRATIONS: 'integrations',
|
||||||
|
PROFILE: 'account',
|
||||||
|
SESSIONS_LISTING: 'sessions-listing',
|
||||||
|
MANAGE_USERS: 'team',
|
||||||
|
MANAGE_ROLES: 'roles',
|
||||||
|
SITES: 'projects',
|
||||||
|
CUSTOM_FIELDS: 'metadata',
|
||||||
|
WEBHOOKS: 'webhooks',
|
||||||
|
NOTIFICATIONS: 'notifications',
|
||||||
|
AUDIT: 'audit',
|
||||||
|
BILLING: '$_this_url_does_not_exist',
|
||||||
|
MODULES: 'modules',
|
||||||
|
};
|
||||||
Loading…
Add table
Reference in a new issue