diff --git a/frontend/app/Router.js b/frontend/app/Router.js
index 6a4aea446..d1be5a569 100644
--- a/frontend/app/Router.js
+++ b/frontend/app/Router.js
@@ -67,6 +67,7 @@ const DASHBOARD_METRIC_DETAILS_PATH = routes.dashboardMetricDetails();
// const WIDGET_PATAH = routes.dashboardMetric();
const SESSIONS_PATH = routes.sessions();
const ASSIST_PATH = routes.assist();
+const RECORDINGS_PATH = routes.recordings();
const ERRORS_PATH = routes.errors();
const ERROR_PATH = routes.error();
const FUNNEL_PATH = routes.funnels();
@@ -213,6 +214,7 @@ class Router extends React.Component {
+
diff --git a/frontend/app/components/Assist/Assist.tsx b/frontend/app/components/Assist/Assist.tsx
index 3ef99c573..7aa559d43 100644
--- a/frontend/app/components/Assist/Assist.tsx
+++ b/frontend/app/components/Assist/Assist.tsx
@@ -1,26 +1,51 @@
import React from 'react';
-import LiveSessionList from 'Shared/LiveSessionList';
-import LiveSessionSearch from 'Shared/LiveSessionSearch';
-import cn from 'classnames'
+import { withRouter, RouteComponentProps } from 'react-router-dom';
import withPageTitle from 'HOCs/withPageTitle';
import withPermissions from 'HOCs/withPermissions'
-// import SessionSearch from '../shared/SessionSearch';
-// import MainSearchBar from '../shared/MainSearchBar';
-import AssistSearchField from './AssistSearchField';
+import AssistRouter from './AssistRouter';
+import { SideMenuitem } from 'UI';
+import { withSiteId, assist, recordings } from 'App/routes';
-function Assist() {
+
+interface Props extends RouteComponentProps {
+ siteId: string;
+ history: any;
+ setShowAlerts: (show: boolean) => void;
+}
+
+function Assist(props: Props) {
+ const { history, siteId, setShowAlerts } = props;
+ const isAssist = history.location.pathname.includes('assist');
+ const isRecords = history.location.pathname.includes('recordings');
+
+ const redirect = (path: string) => {
+ history.push(path);
+ };
return (
)
}
-export default withPageTitle("Assist - OpenReplay")(withPermissions(['ASSIST_LIVE'])(Assist));
+export default withPageTitle("Assist - OpenReplay")(withPermissions(['ASSIST_LIVE'])(withRouter(Assist)));
diff --git a/frontend/app/components/Assist/AssistRouter.tsx b/frontend/app/components/Assist/AssistRouter.tsx
new file mode 100644
index 000000000..57efaef37
--- /dev/null
+++ b/frontend/app/components/Assist/AssistRouter.tsx
@@ -0,0 +1,39 @@
+import React from 'react';
+import { Switch, Route } from 'react-router';
+import { withRouter, RouteComponentProps } from 'react-router-dom';
+
+import {
+ assist,
+ recordings,
+ withSiteId,
+} from 'App/routes';
+import AssistView from './AssistView'
+import Recordings from './RecordingsList/Recordings'
+
+interface Props extends RouteComponentProps {
+ match: any;
+}
+
+function AssistRouter(props: Props) {
+ const {
+ match: {
+ params: { siteId },
+ },
+ } = props;
+
+ return (
+
+ );
+}
+
+export default withRouter(AssistRouter);
diff --git a/frontend/app/components/Assist/AssistView.tsx b/frontend/app/components/Assist/AssistView.tsx
new file mode 100644
index 000000000..700820cbd
--- /dev/null
+++ b/frontend/app/components/Assist/AssistView.tsx
@@ -0,0 +1,18 @@
+import React from 'react';
+import LiveSessionList from 'Shared/LiveSessionList';
+import LiveSessionSearch from 'Shared/LiveSessionSearch';
+import cn from 'classnames'
+import AssistSearchField from './AssistSearchField';
+
+function AssistView() {
+ return (
+
+ )
+}
+
+export default AssistView;
diff --git a/frontend/app/components/Assist/RecordingsList/Recordings.tsx b/frontend/app/components/Assist/RecordingsList/Recordings.tsx
new file mode 100644
index 000000000..1bc29efaa
--- /dev/null
+++ b/frontend/app/components/Assist/RecordingsList/Recordings.tsx
@@ -0,0 +1,25 @@
+import React from 'react'
+import { PageTitle } from 'UI';
+import RecordingsSearch from './RecordingsSearch';
+import RecordingsList from './RecordingsList';
+
+function Recordings() {
+
+ return (
+
+ )
+}
+
+export default Recordings
diff --git a/frontend/app/components/Assist/RecordingsList/RecordingsList.tsx b/frontend/app/components/Assist/RecordingsList/RecordingsList.tsx
new file mode 100644
index 000000000..7f71d157d
--- /dev/null
+++ b/frontend/app/components/Assist/RecordingsList/RecordingsList.tsx
@@ -0,0 +1,73 @@
+import { observer } from 'mobx-react-lite';
+import React from 'react';
+import { NoContent, Pagination, Icon } from 'UI';
+import { useStore } from 'App/mstore';
+import { filterList } from 'App/utils';
+import { sliceListPerPage } from 'App/utils';
+import RecordsListItem from './RecordsListItem';
+
+function RecordingsList() {
+ const { recordingsStore } = useStore();
+ const [shownRecordings, setRecordings] = React.useState([]);
+ const recordings = recordingsStore.recordings;
+ const recordsSearch = recordingsStore.search;
+
+ React.useEffect(() => {
+ recordingsStore.fetchRecordings()
+ }, [])
+
+ React.useEffect(() => {
+ setRecordings(filterList(recordings, recordsSearch, ['createdBy', 'name']));
+ }, [recordsSearch]);
+
+ const list = recordsSearch !== '' ? shownRecordings : recordings;
+ const lenth = list.length;
+
+ return (
+
+
+
+ {recordsSearch !== ''
+ ? 'No matching results'
+ : "You haven't created any recordings yet"}
+
+
+ }
+ >
+
+
+
+ {sliceListPerPage(list, recordingsStore.page - 1, recordingsStore.pageSize).map(
+ (record: any) => (
+
+
+
+ )
+ )}
+
+
+