diff --git a/frontend/app/Router.js b/frontend/app/Router.js
index 8ee29802a..51ec3f9ee 100644
--- a/frontend/app/Router.js
+++ b/frontend/app/Router.js
@@ -8,7 +8,6 @@ import { fetchUserInfo } from 'Duck/user';
import withSiteIdUpdater from 'HOCs/withSiteIdUpdater';
import Header from 'Components/Header/Header';
import { fetchList as fetchSiteList } from 'Duck/site';
-import { fetchList as fetchAnnouncements } from 'Duck/announcements';
import { fetchList as fetchAlerts } from 'Duck/alerts';
import { withStore } from 'App/mstore';
@@ -115,7 +114,6 @@ const MULTIVIEW_INDEX_PATH = routes.multiviewIndex();
fetchTenants,
setSessionPath,
fetchSiteList,
- fetchAnnouncements,
fetchAlerts,
}
)
diff --git a/frontend/app/components/Announcements/Announcements.js b/frontend/app/components/Announcements/Announcements.js
deleted file mode 100644
index 55306e643..000000000
--- a/frontend/app/components/Announcements/Announcements.js
+++ /dev/null
@@ -1,99 +0,0 @@
-import React from 'react';
-import stl from './announcements.module.css';
-import ListItem from './ListItem';
-import { connect } from 'react-redux';
-import { SlideModal, Icon, NoContent, Tooltip } from 'UI';
-import { fetchList, setLastRead } from 'Duck/announcements';
-import withToggle from 'Components/hocs/withToggle';
-import { withRouter } from 'react-router-dom';
-import AnimatedSVG, { ICONS } from 'Shared/AnimatedSVG/AnimatedSVG';
-
-@withToggle('visible', 'toggleVisisble')
-@withRouter
-class Announcements extends React.Component {
-
- navigateToUrl = url => {
- if (url) {
- if (url.startsWith(window.env.ORIGIN || window.location.origin)) {
- const { history } = this.props;
- var path = new URL(url).pathname
- if (path.includes('/metrics')) {
- const { siteId, sites } = this.props;
- const activeSite = sites.find(s => s.id == siteId);
- history.push(`/${activeSite.id + path}`);
- } else {
- history.push(path)
- }
- } else {
- window.open(url, "_blank")
- }
- this.toggleModal()
- }
- }
-
- toggleModal = () => {
- if (!this.props.visible) {
- const { setLastRead, fetchList } = this.props;
- fetchList().then(() => { setTimeout(() => { setLastRead() }, 5000); });
- }
- this.props.toggleVisisble(!this.props.visible);
- }
-
- render() {
- const { announcements, visible, loading } = this.props;
- const unReadNotificationsCount = announcements.filter(({viewed}) => !viewed).size
-
- return (
-
-
-
-
- { unReadNotificationsCount }
-
-
-
-
-
-
-
-
- No announcements to show.
-
- }
- size="small"
- show={ !loading && announcements.size === 0 }
- >
- {
- announcements.map(item => (
-
- ))
- }
-
-
- }
- />
-
- );
- }
-}
-
-export default connect(state => ({
- announcements: state.getIn(['announcements', 'list']),
- loading: state.getIn(['announcements', 'fetchList', 'loading']),
- siteId: state.getIn([ 'site', 'siteId' ]),
- sites: state.getIn([ 'site', 'list' ]),
-}), { fetchList, setLastRead })(Announcements);
\ No newline at end of file
diff --git a/frontend/app/components/Announcements/ListItem/ListItem.js b/frontend/app/components/Announcements/ListItem/ListItem.js
deleted file mode 100644
index dd777c719..000000000
--- a/frontend/app/components/Announcements/ListItem/ListItem.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import React from 'react';
-import { Button, Label } from 'UI';
-import stl from './listItem.module.css';
-
-const ListItem = ({ announcement, onButtonClick }) => {
- return (
-
-
-
{announcement.createdAt && announcement.createdAt.toFormat('LLL dd, yyyy')}
-
-
- {announcement.imageUrl &&
-

- }
-
-
{announcement.title}
-
{announcement.description}
- {announcement.buttonUrl &&
-
- }
-
-
- )
-}
-
-export default ListItem
diff --git a/frontend/app/components/Announcements/ListItem/index.js b/frontend/app/components/Announcements/ListItem/index.js
deleted file mode 100644
index 741aed270..000000000
--- a/frontend/app/components/Announcements/ListItem/index.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './ListItem';
diff --git a/frontend/app/components/Announcements/ListItem/listItem.module.css b/frontend/app/components/Announcements/ListItem/listItem.module.css
deleted file mode 100644
index 5bc3a44c8..000000000
--- a/frontend/app/components/Announcements/ListItem/listItem.module.css
+++ /dev/null
@@ -1,5 +0,0 @@
-.wrapper {
- background-color: white;
- margin-bottom: 20px;
- padding: 15px;
-}
\ No newline at end of file
diff --git a/frontend/app/components/Announcements/announcements.module.css b/frontend/app/components/Announcements/announcements.module.css
deleted file mode 100644
index 5a3704af2..000000000
--- a/frontend/app/components/Announcements/announcements.module.css
+++ /dev/null
@@ -1,39 +0,0 @@
-.wrapper {
- position: relative;
-}
-
-.button {
- position: relative;
- cursor: pointer;
- display: flex;
- align-items: center;
- padding: 0 15px;
- height: 50px;
- transition: all 0.3s;
-
- &:hover {
- background-color: $gray-lightest;
- transition: all 0.2s;
- }
-
- &[data-active=true] {
- background-color: $gray-lightest;
- }
-}
-
-.counter {
- position: absolute;
- top: 8px;
- left: 24px;
- background-color: #CC0000;
- color: white;
- font-size: 9px;
- font-weight: 300;
- min-width: 16px;
- height: 16px;
- border-radius: 8px;
- display: flex;
- align-items: center;
- justify-content: center;
- padding: 3px;
-}
diff --git a/frontend/app/components/Announcements/index.js b/frontend/app/components/Announcements/index.js
deleted file mode 100644
index faeffcfcd..000000000
--- a/frontend/app/components/Announcements/index.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './Announcements';
\ No newline at end of file
diff --git a/frontend/app/components/Session_/EventsBlock/EventsBlock.tsx b/frontend/app/components/Session_/EventsBlock/EventsBlock.tsx
index daa68d85d..8df9be6ff 100644
--- a/frontend/app/components/Session_/EventsBlock/EventsBlock.tsx
+++ b/frontend/app/components/Session_/EventsBlock/EventsBlock.tsx
@@ -13,7 +13,7 @@ import { PlayerContext } from 'App/components/Session/playerContext';
import { observer } from 'mobx-react-lite';
import { RootStore } from 'App/duck'
import { List as ImmList } from 'immutable'
-import useCellMeasurerCache from 'Components/shared/DevTools/useCellMeasurerCache'
+import useCellMeasurerCache from 'App/hooks/useCellMeasurerCache'
interface IProps {
setEventFilter: (filter: { query: string }) => void
diff --git a/frontend/app/components/shared/AnnouncementModal/AnnouncementModal.tsx b/frontend/app/components/shared/AnnouncementModal/AnnouncementModal.tsx
deleted file mode 100644
index 5f69de976..000000000
--- a/frontend/app/components/shared/AnnouncementModal/AnnouncementModal.tsx
+++ /dev/null
@@ -1,55 +0,0 @@
-import React from 'react';
-import { Button, NoContent } from 'UI';
-import { connect } from 'react-redux';
-import { fetchList, setLastRead } from 'Duck/announcements';
-import cn from 'classnames';
-import AnimatedSVG, { ICONS } from 'Shared/AnimatedSVG/AnimatedSVG';
-import ListItem from './ListItem'
-
-interface Props {
- unReadNotificationsCount: number;
- setLastRead: Function;
- list: any;
-}
-function AnnouncementModal(props: Props) {
- const { list, unReadNotificationsCount } = props;
-
- // const onClear = (notification: any) => {
- // console.log('onClear', notification);
- // props.setViewed(notification.notificationId)
- // }
-
- return (
-
-
-
-
- }
- subtext="There are no alerts to show."
- // show={ !loading && unReadNotificationsCount === 0 }
- size="small"
- >
- {list.map((item: any, i: any) => (
-
- {/* onClear(item)} loading={false} /> */}
-
- ))}
-
-
-
- );
-}
-
-export default connect((state: any) => ({
- list: state.getIn(['announcements', 'list']),
-}), {
- fetchList,
- setLastRead,
-})(AnnouncementModal);
\ No newline at end of file
diff --git a/frontend/app/components/shared/AnnouncementModal/ListItem/ListItem.tsx b/frontend/app/components/shared/AnnouncementModal/ListItem/ListItem.tsx
deleted file mode 100644
index dd777c719..000000000
--- a/frontend/app/components/shared/AnnouncementModal/ListItem/ListItem.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import React from 'react';
-import { Button, Label } from 'UI';
-import stl from './listItem.module.css';
-
-const ListItem = ({ announcement, onButtonClick }) => {
- return (
-
-
-
{announcement.createdAt && announcement.createdAt.toFormat('LLL dd, yyyy')}
-
-
- {announcement.imageUrl &&
-

- }
-
-
{announcement.title}
-
{announcement.description}
- {announcement.buttonUrl &&
-
- }
-
-
- )
-}
-
-export default ListItem
diff --git a/frontend/app/components/shared/AnnouncementModal/ListItem/index.ts b/frontend/app/components/shared/AnnouncementModal/ListItem/index.ts
deleted file mode 100644
index 741aed270..000000000
--- a/frontend/app/components/shared/AnnouncementModal/ListItem/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './ListItem';
diff --git a/frontend/app/components/shared/AnnouncementModal/ListItem/listItem.module.css b/frontend/app/components/shared/AnnouncementModal/ListItem/listItem.module.css
deleted file mode 100644
index 5bc3a44c8..000000000
--- a/frontend/app/components/shared/AnnouncementModal/ListItem/listItem.module.css
+++ /dev/null
@@ -1,5 +0,0 @@
-.wrapper {
- background-color: white;
- margin-bottom: 20px;
- padding: 15px;
-}
\ No newline at end of file
diff --git a/frontend/app/components/shared/AnnouncementModal/index.ts b/frontend/app/components/shared/AnnouncementModal/index.ts
deleted file mode 100644
index b9af0fc52..000000000
--- a/frontend/app/components/shared/AnnouncementModal/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './AnnouncementModal';
\ No newline at end of file
diff --git a/frontend/app/components/shared/DevTools/ConsolePanel/ConsolePanel.tsx b/frontend/app/components/shared/DevTools/ConsolePanel/ConsolePanel.tsx
index 4719914ba..1c7e9c425 100644
--- a/frontend/app/components/shared/DevTools/ConsolePanel/ConsolePanel.tsx
+++ b/frontend/app/components/shared/DevTools/ConsolePanel/ConsolePanel.tsx
@@ -12,7 +12,7 @@ import ErrorDetailsModal from 'App/components/Dashboard/components/Errors/ErrorD
import { useModal } from 'App/components/Modal';
import useAutoscroll, { getLastItemTime } from '../useAutoscroll';
import { useRegExListFilterMemo, useTabListFilterMemo } from '../useListFilter'
-import useCellMeasurerCache from '../useCellMeasurerCache'
+import useCellMeasurerCache from 'App/hooks/useCellMeasurerCache'
const ALL = 'ALL';
const INFO = 'INFO';
diff --git a/frontend/app/components/shared/DevTools/StackEventPanel/StackEventPanel.tsx b/frontend/app/components/shared/DevTools/StackEventPanel/StackEventPanel.tsx
index 366750b51..b97e82e97 100644
--- a/frontend/app/components/shared/DevTools/StackEventPanel/StackEventPanel.tsx
+++ b/frontend/app/components/shared/DevTools/StackEventPanel/StackEventPanel.tsx
@@ -12,7 +12,7 @@ import StackEventRow from 'Shared/DevTools/StackEventRow';
import StackEventModal from '../StackEventModal';
import useAutoscroll, { getLastItemTime } from '../useAutoscroll';
import { useRegExListFilterMemo, useTabListFilterMemo } from '../useListFilter'
-import useCellMeasurerCache from '../useCellMeasurerCache'
+import useCellMeasurerCache from 'App/hooks/useCellMeasurerCache'
const INDEX_KEY = 'stackEvent';
const ALL = 'ALL';
diff --git a/frontend/app/duck/announcements.js b/frontend/app/duck/announcements.js
deleted file mode 100644
index 3a7612ee7..000000000
--- a/frontend/app/duck/announcements.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import { List, Map } from 'immutable';
-import Announcement from 'Types/announcement';
-import { RequestTypes } from './requestStateCreator';
-
-import { mergeReducers } from './funcTools/tools';
-import { createRequestReducer } from './funcTools/request';
-import {
- createCRUDReducer,
- getCRUDRequestTypes,
- createFetchList
-} from './funcTools/crud';
-
-const name = 'announcement';
-const idKey = 'id';
-
-const SET_LAST_READ = new RequestTypes('announcement/SET_LAST_READ');
-
-const initialState = Map({
- list: List()
-});
-
-const reducer = (state = initialState, action = {}) => {
- switch (action.type) {
- case SET_LAST_READ.SUCCESS:
- return state.update('list', (list) => list.map(i => ({...i.toJS(), viewed: true })));
- }
- return state;
-};
-
-export function setLastRead() {
- return {
- types: SET_LAST_READ.toArray(),
- call: client => client.get(`/announcements/view`),
- };
-}
-
-export const fetchList = createFetchList(name);
-
-export default mergeReducers(
- reducer,
- createCRUDReducer(name, Announcement, idKey),
- createRequestReducer({
- ...getCRUDRequestTypes(name),
- }),
-);
\ No newline at end of file
diff --git a/frontend/app/duck/index.ts b/frontend/app/duck/index.ts
index 0a5bdc3e7..69a1ae994 100644
--- a/frontend/app/duck/index.ts
+++ b/frontend/app/duck/index.ts
@@ -18,7 +18,6 @@ import customFields from './customField';
import webhooks from './webhook';
import integrations from './integrations';
import rehydrate from './rehydrate';
-import announcements from './announcements';
import errors from './errors';
import funnels from './funnels';
import roles from './roles';
@@ -43,7 +42,6 @@ const rootReducer = combineReducers({
customFields,
webhooks,
rehydrate,
- announcements,
errors,
funnels,
roles,
diff --git a/frontend/app/duck/member.js b/frontend/app/duck/member.js
index 290b53f3a..ce12c1659 100644
--- a/frontend/app/duck/member.js
+++ b/frontend/app/duck/member.js
@@ -1,7 +1,7 @@
import { Map } from 'immutable';
import Member from 'Types/member';
import crudDuckGenerator from './tools/crudDuck';
-import withRequestState, { RequestTypes } from 'Duck/requestStateCreator';
+import { RequestTypes } from 'Duck/requestStateCreator';
import { reduceDucks } from 'Duck/tools';
const GENERATE_LINK = new RequestTypes('member/GENERATE_LINK');
diff --git a/frontend/app/components/shared/DevTools/useCellMeasurerCache.ts b/frontend/app/hooks/useCellMeasurerCache.ts
similarity index 100%
rename from frontend/app/components/shared/DevTools/useCellMeasurerCache.ts
rename to frontend/app/hooks/useCellMeasurerCache.ts