From bd80e8384ab11a8d5ff20ac1c06953e4ab935826 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Mon, 26 Oct 2020 19:32:48 -0700 Subject: [PATCH] chore: Remove events log from settings --- app/components/Sidebar/Settings.js | 8 - app/routes/settings.js | 2 - app/scenes/Settings/Events.js | 102 -------- .../Settings/components/EventListItem.js | 232 ------------------ app/stores/EventsStore.js | 19 -- app/stores/RootStore.js | 4 - 6 files changed, 367 deletions(-) delete mode 100644 app/scenes/Settings/Events.js delete mode 100644 app/scenes/Settings/components/EventListItem.js delete mode 100644 app/stores/EventsStore.js diff --git a/app/components/Sidebar/Settings.js b/app/components/Sidebar/Settings.js index a8a122f7..3304405c 100644 --- a/app/components/Sidebar/Settings.js +++ b/app/components/Sidebar/Settings.js @@ -10,7 +10,6 @@ import { GroupIcon, LinkIcon, TeamIcon, - BulletedListIcon, ExpandedIcon, } from "outline-icons"; import * as React from "react"; @@ -118,13 +117,6 @@ class SettingsSidebar extends React.Component { icon={} label="Share Links" /> - {can.auditLog && ( - } - label="Audit Log" - /> - )} {can.export && ( - diff --git a/app/scenes/Settings/Events.js b/app/scenes/Settings/Events.js deleted file mode 100644 index 3e70aa40..00000000 --- a/app/scenes/Settings/Events.js +++ /dev/null @@ -1,102 +0,0 @@ -// @flow -import { observable, action } from "mobx"; -import { observer, inject } from "mobx-react"; -import * as React from "react"; -import { type Match } from "react-router-dom"; -import { Waypoint } from "react-waypoint"; - -import { DEFAULT_PAGINATION_LIMIT } from "stores/BaseStore"; -import EventsStore from "stores/EventsStore"; -import CenteredContent from "components/CenteredContent"; -import HelpText from "components/HelpText"; -import List from "components/List"; -import { ListPlaceholder } from "components/LoadingPlaceholder"; -import PageTitle from "components/PageTitle"; -import Tab from "components/Tab"; -import Tabs from "components/Tabs"; -import EventListItem from "./components/EventListItem"; - -type Props = { - events: EventsStore, - match: Match, -}; - -@observer -class Events extends React.Component { - @observable isLoaded: boolean = false; - @observable isFetching: boolean = false; - @observable offset: number = 0; - @observable allowLoadMore: boolean = true; - - componentDidMount() { - this.fetchResults(); - } - - fetchResults = async () => { - this.isFetching = true; - - const limit = DEFAULT_PAGINATION_LIMIT; - const results = await this.props.events.fetchPage({ - limit, - offset: this.offset, - auditLog: true, - }); - - if ( - results && - (results.length === 0 || results.length < DEFAULT_PAGINATION_LIMIT) - ) { - this.allowLoadMore = false; - } else { - this.offset += DEFAULT_PAGINATION_LIMIT; - } - - this.isLoaded = true; - this.isFetching = false; - }; - - @action - loadMoreResults = async () => { - // Don't paginate if there aren't more results or we’re in the middle of fetching - if (!this.allowLoadMore || this.isFetching) return; - await this.fetchResults(); - }; - - render() { - const { events } = this.props; - const showLoading = events.isFetching && !events.orderedData.length; - - return ( - - -

Audit Log

- - The audit log details the history of security related and other events - across your knowledge base. - - - - - Events - - - - {showLoading ? ( - - ) : ( - <> - {events.orderedData.map((event) => ( - - ))} - {this.allowLoadMore && ( - - )} - - )} - -
- ); - } -} - -export default inject("events")(Events); diff --git a/app/scenes/Settings/components/EventListItem.js b/app/scenes/Settings/components/EventListItem.js deleted file mode 100644 index cf2edd0a..00000000 --- a/app/scenes/Settings/components/EventListItem.js +++ /dev/null @@ -1,232 +0,0 @@ -// @flow -import { capitalize } from "lodash"; -import * as React from "react"; -import { Link } from "react-router-dom"; -import styled from "styled-components"; -import Event from "models/Event"; -import Avatar from "components/Avatar"; -import ListItem from "components/List/Item"; -import Time from "components/Time"; - -type Props = { - event: Event, -}; - -const description = (event) => { - switch (event.name) { - case "api_keys.create": - return ( - <> - Created the API token {event.data.name} - - ); - case "api_keys.delete": - return ( - <> - Revoked the API token {event.data.name} - - ); - case "teams.create": - return "Created the team"; - case "shares.create": - case "shares.revoke": - return ( - <> - {capitalize(event.verbPastTense)} a{" "} - share link to the{" "} - {event.data.name}{" "} - document - - ); - case "shares.update": - return ( - <> - {event.data.published ? ( - <> - Published a document{" "} - share link - - ) : ( - <> - Unpublished a document{" "} - share link - - )} - - ); - case "users.create": - return <>{event.data.name} created an account; - case "users.invite": - return ( - <> - {capitalize(event.verbPastTense)} {event.data.name} ( - - {event.data.email || ""} - - ) - - ); - case "users.suspend": - return ( - <> - Suspended {event.data.name}’s account - - ); - case "users.activate": - return ( - <> - Unsuspended {event.data.name}’s account - - ); - case "users.promote": - return ( - <> - Made {event.data.name} an admin - - ); - case "users.demote": - return ( - <> - Made {event.data.name} a member - - ); - case "users.delete": - return "Deleted their account"; - case "groups.create": - return ( - <> - Created the group {event.data.name} - - ); - case "groups.update": - return ( - <> - Update the group {event.data.name} - - ); - case "groups.delete": - return ( - <> - Deleted the group {event.data.name} - - ); - case "collections.add_user": - case "collections.add_group": - return ( - <> - Granted {event.data.name} access to a{" "} - - collection - - - ); - case "collections.remove_user": - case "collections.remove_group": - return ( - <> - Revoked {event.data.name} access to a{" "} - - collection - - - ); - default: - } - - if (event.documentId) { - if (event.name === "documents.delete") { - return ( - <> - Deleted the {event.data.title} document - - ); - } - if (event.name === "documents.create") { - return ( - <> - {capitalize(event.verbPastTense)} the{" "} - - {event.data.title || "Untitled"} - {" "} - document{" "} - {event.data.templateId && ( - <> - from a template - - )} - - ); - } - return ( - <> - {capitalize(event.verbPastTense)} the{" "} - - {event.data.title || "Untitled"} - {" "} - document - - ); - } - if (event.collectionId) { - if (event.name === "collections.delete") { - return ( - <> - Deleted the {event.data.name} collection - - ); - } - return ( - <> - {capitalize(event.verbPastTense)} the{" "} - - {event.data.name} - {" "} - collection - - ); - } - if (event.userId) { - return ( - <> - {capitalize(event.verbPastTense)} the user {event.data.name} - - ); - } - return ""; -}; - -const EventListItem = ({ event }: Props) => { - return ( - } - subtitle={ - <> - {description(event)}