All Downloads are FREE. Search and download functionalities are using the official Maven repository.

web-interface.assets.1255d548-8373.282dae638c3b2547cce7.js.map Maven / Gradle / Ivy

There is a newer version: 6.1.4
Show newest version
{"version":3,"file":"1255d548-8373.282dae638c3b2547cce7.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/contexts/ContentStreamQueryClientProvider.tsx","webpack://graylog-web-interface/./src/components/content-stream/Constants.ts","webpack://graylog-web-interface/./src/preflight/util/UserNotification.ts","webpack://graylog-web-interface/./src/components/content-stream/hook/useContentStreamSettings.ts","webpack://graylog-web-interface/./src/components/content-stream/hook/useContentStream.ts","webpack://graylog-web-interface/./src/components/content-stream/news/ContentStreamNewsItem.tsx","webpack://graylog-web-interface/./src/components/content-stream/ContentStreamNews.tsx","webpack://graylog-web-interface/./src/hooks/useCarouselAction.ts","webpack://graylog-web-interface/./src/components/content-stream/news/ContentStreamNewsContentActions.tsx","webpack://graylog-web-interface/./src/components/content-stream/news/ContentStreamNewsFooter.tsx","webpack://graylog-web-interface/./src/components/content-stream/ContentStreamReleasesSection.tsx","webpack://graylog-web-interface/./src/components/content-stream/ToggleActionButton.tsx","webpack://graylog-web-interface/./src/components/content-stream/ContentStreamSection.tsx","webpack://graylog-web-interface/./src/components/content-stream/ContentStreamContainer.tsx","webpack://graylog-web-interface/./src/components/welcome/Constants.ts","webpack://graylog-web-interface/./src/util/getTitleForEntityType.ts","webpack://graylog-web-interface/./src/util/getPermissionPrefixByType.tsx","webpack://graylog-web-interface/./src/hooks/useHasEntityPermissionByGRN.ts","webpack://graylog-web-interface/./src/components/welcome/EntityListItem.tsx","webpack://graylog-web-interface/./src/components/welcome/hooks/useLastOpened.ts","webpack://graylog-web-interface/./src/components/welcome/LastOpenList.tsx","webpack://graylog-web-interface/./src/components/welcome/hooks/useFavoriteItems.ts","webpack://graylog-web-interface/./src/components/welcome/FavoriteItemsList.tsx","webpack://graylog-web-interface/./src/components/welcome/hooks/useRecentActivity.ts","webpack://graylog-web-interface/./src/components/welcome/RecentActivityList.tsx","webpack://graylog-web-interface/./src/components/welcome/Welcome.tsx","webpack://graylog-web-interface/./src/pages/WelcomePage.tsx"],"sourcesContent":["/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { QueryClient } from '@tanstack/react-query';\nimport { PersistQueryClientProvider } from '@tanstack/react-query-persist-client';\nimport { createSyncStoragePersister } from '@tanstack/query-sync-storage-persister';\n\ntype Props = {\n  children: React.ReactNode,\n};\n\nconst options = {\n  defaultOptions: {\n    queries: {\n      cacheTime: 1000 * 60 * 60 * 24, // 24 hours\n    },\n  },\n};\nconst persister = createSyncStoragePersister({\n  storage: window.localStorage,\n});\n\n/*\n * Use a separate client provider from the default one to be able to save cached data to local storage\n */\n\nconst ContentStreamQueryClientProvider = ({ children }: Props) => {\n  const queryClient = useMemo(() => new QueryClient(options), []);\n\n  return (\n    \n      {children}\n    \n  );\n};\n\nexport default ContentStreamQueryClientProvider;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nexport const DEFAULT_FEED = 'open-feed';\nexport const ENTERPRISE_FEED = 'enterprise-feed';\nexport const SMB_FEED = 'smb-feed';\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { notifications } from '@mantine/notifications';\n\nconst UserNotification = {\n  error(message: string, title = 'Error') {\n    notifications.show({\n      message,\n      title,\n      autoClose: 10000,\n      color: 'red',\n    });\n  },\n  warning(message: string, title = 'Attention') {\n    notifications.show({\n      message,\n      title,\n    });\n  },\n  success(message: string, title = 'Success') {\n    notifications.show({\n      message,\n      title,\n      color: 'green',\n    });\n  },\n};\n\nexport default UserNotification;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\n\nimport { ContentStream } from '@graylog/server-api';\nimport UserNotification from 'preflight/util/UserNotification';\nimport useCurrentUser from 'hooks/useCurrentUser';\nimport { CONTENT_STREAM_CONTENT_KEY } from 'components/content-stream/hook/useContentStream';\n\nexport const CONTENT_STREAM_SETTINGS_KEY = ['content-stream', 'settings'];\nexport const CONTENT_STREAM_TAGS_KEY = ['content-stream', 'tags'];\n\ntype ContentStreamSettingsApi = {\n  content_stream_topics: Array;\n  releases_enabled: boolean;\n  content_stream_enabled: boolean;\n};\n\ntype ContentStreamSettings = {\n  contentStreamTopics: Array;\n  releasesSectionEnabled: boolean;\n  contentStreamEnabled: boolean;\n};\n\nconst useContentStreamSettings = (): {\n  contentStreamSettings: ContentStreamSettings,\n  isLoadingContentStreamSettings: boolean,\n  onSaveContentStreamSetting: ({ settings, username }: {\n    settings: ContentStreamSettingsApi,\n    username: string,\n  }) => Promise,\n  contenStreamTags: {\n    currentTag: string,\n    isLoadingTags: boolean,\n    refetchContentStreamTag: () => void,\n    contentStreamTagError: Error,\n  },\n  refetchContentStream: () => void,\n} => {\n  const queryClient = useQueryClient();\n  const currentUser = useCurrentUser();\n  const { getContentStreamUserSettings, setContentStreamUserSettings, getContentStreamTags } = ContentStream;\n\n  const saveSettings = async ({ settings, username }: { settings: ContentStreamSettingsApi, username: string }) => {\n    await setContentStreamUserSettings(settings, username);\n  };\n\n  const {\n    data,\n    isLoading,\n    refetch: refetchContentStream,\n  } = useQuery([CONTENT_STREAM_SETTINGS_KEY], () => getContentStreamUserSettings(currentUser.username), {\n    onError: (errorThrown) => {\n      UserNotification.error(`Loading content stream config failed with status: ${errorThrown}`,\n        'Could not load content stream.');\n    },\n  });\n  const {\n    data: tags,\n    isLoading: isLoadingTags,\n    refetch: refetchContentStreamTag,\n    error: contentStreamTagError,\n  } = useQuery, Error>([CONTENT_STREAM_TAGS_KEY], () => getContentStreamTags(), {\n    onError: (errorThrown) => {\n      UserNotification.error(`Loading content stream tag failed with status: ${errorThrown}`,\n        'Could not load content stream tags.');\n    },\n  });\n  const { mutateAsync: onSaveContentStreamSetting } = useMutation(saveSettings, {\n    onSuccess: () => {\n      queryClient.invalidateQueries(CONTENT_STREAM_SETTINGS_KEY);\n      queryClient.invalidateQueries(CONTENT_STREAM_CONTENT_KEY);\n    },\n    onError: (errorThrown) => {\n      UserNotification.error(`Enabling content stream failed with status: ${errorThrown}`,\n        'Could not cancel instant archiving jobs');\n    },\n  });\n\n  return {\n    contentStreamSettings: {\n      contentStreamTopics: data?.content_stream_topics,\n      releasesSectionEnabled: data?.releases_enabled,\n      contentStreamEnabled: data?.content_stream_enabled,\n    },\n    contenStreamTags: {\n      currentTag: tags?.[0],\n      isLoadingTags,\n      refetchContentStreamTag,\n      contentStreamTagError,\n    },\n    isLoadingContentStreamSettings: isLoading,\n    refetchContentStream,\n    onSaveContentStreamSetting,\n  };\n};\n\nexport default useContentStreamSettings;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { useQuery } from '@tanstack/react-query';\nimport { XMLParser } from 'fast-xml-parser';\nimport { useCallback } from 'react';\n\nimport { DEFAULT_FEED } from 'components/content-stream/Constants';\nimport AppConfig from 'util/AppConfig';\nimport useContentStreamSettings from 'components/content-stream/hook/useContentStreamSettings';\n\nexport type FeedMediaContent = {\n  'media:title'?: {\n    '#text'?: string,\n    attr_type?: string,\n  },\n  'media:thumbnail'?: {\n    attr_url?: string,\n    attr_width?: string,\n    attr_height?: string,\n  },\n  'media:copyright'?: string,\n  attr_url?: string,\n  attr_type?: string,\n  attr_medium?: string,\n  attr_width?: string,\n  attr_height?: string,\n};\nexport type FeedItem = {\n  title?: string,\n  link?: string,\n  comments?: string,\n  'dc:creator'?: string,\n  pubDate?: string,\n  category?: Array\n  guid?: {\n    '#text'?: string,\n    attr_isPermaLink?: string,\n  },\n  description?: string,\n  'content:encoded'?: string,\n  'wfw:commentRss'?: string,\n  'slash:comments'?: number,\n  'media:content'?: Array | FeedMediaContent\n}\n\ntype RssFeed = {\n  rss: {\n    channel: {\n      'atom:link': string,\n      description: string\n      generator: string,\n      image: string\n      item: Array | FeedItem,\n      language: string\n      lastBuildDate: string,\n      link: string\n      site: number\n      'sy:updateFrequency': number\n      'sy:updatePeriod': string\n      title: string\n    }\n  }\n}\n\nconst parseXML = (text: string): Array => {\n  const options = {\n    ignoreAttributes: false,\n    attributeNamePrefix: 'attr_',\n  };\n  const parser = new XMLParser(options);\n\n  const parsed = parser.parse(text);\n\n  const { rss: { channel: { item: items = undefined } } } = parsed as RssFeed;\n\n  return Array.isArray(items) ? items : [items];\n};\n\nexport const fetchNewsFeed = (rssUrl: string) => rssUrl && window.fetch(rssUrl, { method: 'GET' })\n  .then((response) => response.text())\n  .then(parseXML)\n  .catch((error) => error);\nexport const CONTENT_STREAM_CONTENT_KEY = ['content-stream', 'content'];\n\nconst useContentStream = (path?: string): { isLoadingFeed: boolean, feedList: Array, error: Error } => {\n  const { contenStreamTags: { currentTag, isLoadingTags, contentStreamTagError } } = useContentStreamSettings();\n  const { rss_url } = AppConfig.contentStream() || {};\n\n  const getDefaultTag = useCallback(() => {\n    if (path) {\n      return path;\n    }\n\n    if (isLoadingTags || contentStreamTagError || !currentTag) {\n      return DEFAULT_FEED;\n    }\n\n    return currentTag;\n  }, [contentStreamTagError, currentTag, isLoadingTags, path]);\n\n  const rssUrl = rss_url && `${rss_url}/${getDefaultTag()}/feed`;\n\n  const {\n    data,\n    isLoading,\n    error,\n  } = useQuery, Error>([...CONTENT_STREAM_CONTENT_KEY, rssUrl], () => fetchNewsFeed(rssUrl), {\n    initialData: [],\n  });\n\n  return {\n    error,\n    feedList: data,\n    isLoadingFeed: isLoading,\n  };\n};\n\nexport default useContentStream;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport type { DefaultTheme } from 'styled-components';\nimport styled, { css } from 'styled-components';\nimport DOMPurify from 'dompurify';\n\nimport { Carousel, Timestamp } from 'components/common';\nimport { Panel } from 'components/bootstrap';\nimport type { FeedItem, FeedMediaContent } from 'components/content-stream/hook/useContentStream';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\n\ntype Props = {\n  feed: FeedItem\n}\n\nconst StyledImage = styled.img(({ theme }: { theme: DefaultTheme }) => css`\n  max-width: 100%;\n  width: 100%;\n  object-fit: contain;\n  border-radius: ${theme.spacings.xxs} ${theme.spacings.xxs} 0 0;\n`);\nconst StyledPanelBody = styled(Panel.Body)(({ theme }: { theme: DefaultTheme }) => css`\n  flex-grow: 1;\n  background-color: ${theme.colors.table.backgroundAlt};\n\n  > a {\n    font-weight: bold;\n  }\n`);\nconst StyledPanelFooter = styled(Panel.Footer)(({ theme }: { theme: DefaultTheme }) => css`\n  background-color: ${theme.colors.table.backgroundAlt};\n  border-radius: 0 0 ${theme.spacings.xxs} ${theme.spacings.xxs};\n`);\nconst StyledPanel = styled(Panel)(({ theme }: { theme: DefaultTheme }) => css`\n  display: flex;\n  flex-direction: column;\n  height: 100%;\n  border: none;\n  border-radius: ${theme.spacings.xxs};\n`);\nconst _sanitizeText = (text) => DOMPurify.sanitize(text);\n\nconst getImage = (media: FeedMediaContent | Array) => (Array.isArray(media) ? media?.[0]?.attr_url : media?.attr_url);\n\nconst ContentStreamNewsItem = ({ feed }: Props) => {\n  const sendTelemetry = useSendTelemetry();\n\n  const handleSendTelemetry = () => {\n    sendTelemetry(TELEMETRY_EVENT_TYPE.CONTENTSTREAM.ARTICLE_CLICKED, {\n      app_pathname: 'welcome',\n      app_section: 'content-stream',\n      event_details: {\n        title: feed?.title,\n        link: feed?.link,\n      },\n    });\n  };\n\n  return (\n    \n      \n         handleSendTelemetry()} target=\"_blank\" rel=\"noreferrer\">\n          \n        \n\n        \n           handleSendTelemetry()}\n             rel=\"noreferrer\">\n            {/* eslint-disable-next-line react/no-danger */}\n            \n          \n        \n        \n          \n        \n      \n    \n  );\n};\n\nexport default ContentStreamNewsItem;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport isEmpty from 'lodash/isEmpty';\n\nimport Carousel from 'components/common/carousel/Carousel';\nimport useContentStream from 'components/content-stream/hook/useContentStream';\nimport { Spinner, ExternalLink } from 'components/common';\nimport ContentStreamNewsItem from 'components/content-stream/news/ContentStreamNewsItem';\nimport { Alert } from 'components/bootstrap';\n\nconst ContentStreamNews = () => {\n  const { feedList, isLoadingFeed, error } = useContentStream();\n\n  if (isLoadingFeed) {\n    return ;\n  }\n\n  if (error || isEmpty(feedList)) {\n    return (\n      \n        

\n Unable to load RSS feed at the moment ! You can read more\n on {' '}\n \n Graylog\n \n .\n

\n
\n );\n }\n\n return (\n \n {feedList?.map((feed) => )}\n \n );\n};\n\nexport default ContentStreamNews;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport EmblaCarousel from 'embla-carousel';\nimport { useCallback, useMemo, useState, useEffect } from 'react';\n\nconst useCarouselAction = (carouselElementClass: string) => {\n const [carousel, setCarousel] = useState(undefined);\n\n useEffect(() => {\n if (!carousel) {\n setInterval(() => {\n setCarousel(document.querySelector(carouselElementClass));\n }, 200);\n }\n }, [carousel, carouselElementClass]);\n\n const emblaApi = useMemo(() => carousel && EmblaCarousel(carousel, { containScroll: 'trimSnaps' }), [carousel]);\n\n const scrollPrev = useCallback(() => {\n if (emblaApi) emblaApi.scrollPrev();\n }, [emblaApi]);\n const scrollNext = useCallback(() => {\n if (emblaApi) emblaApi.scrollNext();\n }, [emblaApi]);\n\n return {\n scrollNext,\n scrollPrev,\n };\n};\n\nexport default useCarouselAction;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\n\nimport useCarouselAction from 'hooks/useCarouselAction';\nimport { Icon } from 'components/common';\nimport { Button } from 'components/bootstrap';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\n\nconst ContentStreamNewsContentActions = () => {\n const { scrollPrev, scrollNext } = useCarouselAction('.carousel');\n const sendTelemetry = useSendTelemetry();\n\n const handlePrev = () => {\n sendTelemetry(TELEMETRY_EVENT_TYPE.CONTENTSTREAM.PREV_ARROW_CLICKED, {\n app_pathname: 'welcome',\n app_section: 'content-stream',\n });\n\n scrollPrev();\n };\n\n const handleNext = () => {\n sendTelemetry(TELEMETRY_EVENT_TYPE.CONTENTSTREAM.NEXT_ARROW_CLICKED, {\n app_pathname: 'welcome',\n app_section: 'content-stream',\n });\n\n scrollNext();\n };\n\n return (\n <>\n \n \n \n );\n};\n\nexport default ContentStreamNewsContentActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport type { DefaultTheme } from 'styled-components';\nimport styled, { css } from 'styled-components';\n\nimport ContentStreamNewsContentActions from 'components/content-stream/news/ContentStreamNewsContentActions';\nimport { ExternalLink } from 'components/common';\n\nconst StyledDiv = styled.div(({ theme }: { theme: DefaultTheme }) => css`\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: 1fr;\n grid-auto-flow: row;\n margin-top: ${theme.spacings.sm};\n`);\nconst StyledActionDiv = styled.div`\n display: flex;\n align-items: center;\n justify-content: right;\n`;\n\nconst StyledReadMoreDiv = styled.div`\n justify-content: center;\n display: flex;\n flex-direction: column;\n`;\nconst ContentStreamNewsFooter = () => (\n \n \n \n Read more\n \n \n \n \n);\n\nexport default ContentStreamNewsFooter;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport type { DefaultTheme } from 'styled-components';\nimport styled, { css } from 'styled-components';\nimport isEmpty from 'lodash/isEmpty';\nimport DOMPurify from 'dompurify';\n\nimport { ListGroup, ListGroupItem, Label, Alert } from 'components/bootstrap';\nimport { RelativeTime, Spinner, ExternalLink } from 'components/common';\nimport type { FeedItem } from 'components/content-stream/hook/useContentStream';\nimport useContentStream from 'components/content-stream/hook/useContentStream';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\n\nconst StyledListGroupItem = styled(ListGroupItem)(({ theme }: { theme: DefaultTheme }) => css`\n display: flex;\n gap: ${theme.spacings.md};\n align-items: flex-start;\n`);\nconst LastOpenedTime = styled.i(({ theme }: { theme: DefaultTheme }) => css`\n color: ${theme.colors.gray[60]};\n`);\nexport const StyledLabel = styled(Label)`\n cursor: default;\n width: 110px;\n display: block;\n`;\n\nconst _sanitizeText = (text = '') => DOMPurify.sanitize(text);\n\nconst ContentStreamReleasesSection = () => {\n const path = 'release-info';\n const { feedList, isLoadingFeed, error } = useContentStream(path);\n const sendTelemetry = useSendTelemetry();\n\n const handleSendTelemetry = (feed: FeedItem) => {\n sendTelemetry(TELEMETRY_EVENT_TYPE.CONTENTSTREAM.RELESE_ARTICLE_CLICKED, {\n app_pathname: 'welcome',\n app_section: 'content-stream',\n event_details: {\n title: feed?.title,\n link: feed?.link,\n },\n });\n };\n\n if (isLoadingFeed && !isEmpty(feedList)) {\n return ;\n }\n\n if (error || isEmpty(feedList)) {\n return (\n \n

\n Unable to load RSS feed at the moment ! You can read more\n on {' '}\n \n Graylog.org\n \n .\n

\n
\n );\n }\n\n return (\n \n {feedList.map((feed) => (\n \n handleSendTelemetry(feed)} target=\"_blank\" rel=\"noreferrer\">\n {/* eslint-disable-next-line react/no-danger */}\n \n \n {feed?.pubDate ? : null}\n \n ))}\n \n );\n};\n\nexport default ContentStreamReleasesSection;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Button } from 'components/bootstrap';\nimport { Icon } from 'components/common';\n\ntype Props = {\n onClick: () => void,\n isOpen: boolean\n}\nconst StyledButton = styled(Button)(({ theme }) => css`\n border: 0;\n font-size: ${theme.fonts.size.large};\n\n &:hover {\n text-decoration: none;\n }\n`);\nconst ToggleActionButton = ({ onClick, isOpen }: Props) => (\n onClick()}\n type=\"button\">{isOpen ? 'Close' : 'Open'}\n \n \n);\n\nexport default ToggleActionButton;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport SectionGrid from 'components/common/Section/SectionGrid';\nimport SectionComponent from 'components/common/Section/SectionComponent';\nimport ContentStreamNews from 'components/content-stream/ContentStreamNews';\nimport ContentStreamNewsFooter from 'components/content-stream/news/ContentStreamNewsFooter';\nimport ContentStreamReleasesSection from 'components/content-stream/ContentStreamReleasesSection';\nimport useContentStreamSettings from 'components/content-stream/hook/useContentStreamSettings';\nimport useCurrentUser from 'hooks/useCurrentUser';\nimport ToggleActionButton from 'components/content-stream/ToggleActionButton';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\n\nconst StyledNewsSectionComponent = styled(SectionComponent)<{ $enabled: boolean }>(({ $enabled, theme }) => css`\n overflow: hidden;\n flex-grow: 3;\n height: ${$enabled ? 'initial' : 'min-content'};\n\n @media (max-width: ${theme.breakpoints.max.md}) {\n flex-grow: 1;\n }\n`);\nconst StyledReleaseSectionComponent = styled(SectionComponent)<{ $enabled: boolean }>(({ $enabled }) => css`\n flex-grow: 1;\n height: ${$enabled ? 'initial' : 'min-content'};\n`);\n\nconst ContentStreamSection = () => {\n const { username } = useCurrentUser();\n const sendTelemetry = useSendTelemetry();\n const {\n contentStreamSettings,\n isLoadingContentStreamSettings,\n onSaveContentStreamSetting,\n refetchContentStream,\n } = useContentStreamSettings();\n\n if (isLoadingContentStreamSettings || !contentStreamSettings) {\n return null;\n }\n\n const updateContentStreamSettings = async ({ enableContentStream, enableRelease }: {\n enableContentStream?: boolean,\n enableRelease?: boolean\n }) => {\n await onSaveContentStreamSetting({\n settings: {\n content_stream_enabled: enableContentStream,\n releases_enabled: enableRelease,\n content_stream_topics: contentStreamSettings.contentStreamTopics,\n },\n username,\n });\n\n refetchContentStream();\n };\n\n const { contentStreamEnabled, releasesSectionEnabled } = contentStreamSettings;\n\n const toggleNews = () => {\n sendTelemetry(TELEMETRY_EVENT_TYPE.CONTENTSTREAM.NEWS_OPT_IN_TOGGLED, {\n app_pathname: 'welcome',\n app_section: 'content-stream',\n event_details: {\n contentStreamEnabled: !contentStreamEnabled,\n },\n });\n\n updateContentStreamSettings({\n enableContentStream: !contentStreamEnabled,\n enableRelease: releasesSectionEnabled,\n });\n };\n\n const toggleRelease = () => {\n sendTelemetry(TELEMETRY_EVENT_TYPE.CONTENTSTREAM.RELEASE_OPT_IN_TOGGLED, {\n app_pathname: 'welcome',\n app_section: 'content-stream',\n event_details: {\n contentStreamEnabled: !releasesSectionEnabled,\n },\n });\n\n updateContentStreamSettings({\n enableContentStream: contentStreamEnabled,\n enableRelease: !releasesSectionEnabled,\n });\n };\n\n return (\n \n \n )}>\n {contentStreamEnabled && (\n <>\n \n \n \n )}\n \n \n )}>\n {releasesSectionEnabled && (\n \n )}\n \n \n );\n};\n\nexport default ContentStreamSection;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\n\nimport ContentStreamQueryClientProvider from 'contexts/ContentStreamQueryClientProvider';\nimport ContentStreamSection from 'components/content-stream/ContentStreamSection';\n\nconst ContentStreamContainer = () => (\n \n \n \n);\n\nexport default ContentStreamContainer;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n\nexport const entityTypeMap = {\n dashboard: { link: 'DASHBOARDS_VIEWID', typeTitle: 'dashboard' },\n search: { link: 'SEARCH_VIEWID', typeTitle: 'search' },\n search_filter: { link: 'MY-FILTERS_DETAILS_FILTERID', typeTitle: 'search filter' },\n unknown: { typeTitle: 'unknown', link: undefined },\n};\n\nexport const DEFAULT_PAGINATION = {\n per_page: 5,\n page: 1,\n count: 0,\n total: 0,\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport lowerCase from 'lodash/lowerCase';\n\nconst assertUnreachable = (type: string): never => {\n throw new Error(`Can't find title for type: ${type ?? '(undefined)'}`);\n};\n\nconst supportedTypes = new Set([\n 'user',\n 'team',\n 'dashboard',\n 'event_definition',\n 'notification',\n 'search',\n 'stream',\n 'search_filter',\n 'report',\n 'role',\n 'output',\n]);\n\nconst getTitleForEntityType = (type: string, throwErrorOnUnknown = true) => {\n if (supportedTypes.has(type)) return lowerCase(type);\n\n return throwErrorOnUnknown ? assertUnreachable(type) : undefined;\n};\n\nexport default getTitleForEntityType;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n\nconst assertUnreachable = (type: string): never => {\n throw new Error(`Can't find prefix for type: ${type ?? '(undefined)'}`);\n};\n\nconst supportedTypes = new Set([\n 'user',\n 'team',\n 'dashboard',\n 'event_definition',\n 'notification',\n 'search',\n 'stream',\n 'search_filter',\n 'report',\n 'role',\n 'output',\n]);\n\nconst typePrefixCornerCasesMap = {\n event_definition: 'eventdefinitions:',\n notification: 'eventnotifications:',\n search: 'view:',\n report: 'report:',\n};\n\nconst getPermissionPrefixByType = (type: string, throwErrorOnUnknown = true) => {\n if (supportedTypes.has(type)) return typePrefixCornerCasesMap[type] ?? `${type}s:`;\n\n return throwErrorOnUnknown ? assertUnreachable(type) : `(unsupported type ${type})`;\n};\n\nexport default getPermissionPrefixByType;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n\nimport { useMemo } from 'react';\n\nimport useCurrentUser from 'hooks/useCurrentUser';\nimport getPermissionPrefixByType from 'util/getPermissionPrefixByType';\nimport { isPermitted } from 'util/PermissionsMixin';\nimport { getValuesFromGRN } from 'logic/permissions/GRN';\n\nconst useHasEntityPermissionByGRN = (grn: string, permissionType: string = 'read') => {\n const { id, type } = getValuesFromGRN(grn);\n const { permissions } = useCurrentUser();\n\n return useMemo(() => isPermitted(permissions, `${getPermissionPrefixByType(type)}${permissionType}:${id}`), [id, permissionType, permissions, type]);\n};\n\nexport default useHasEntityPermissionByGRN;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n\nimport React, { useMemo } from 'react';\nimport styled, { css } from 'styled-components';\nimport type { DefaultTheme } from 'styled-components';\n\nimport { Link } from 'components/common/router';\nimport { ListGroupItem, Label } from 'components/bootstrap';\nimport getTitleForEntityType from 'util/getTitleForEntityType';\nimport { RelativeTime } from 'components/common';\nimport { getValuesFromGRN } from 'logic/permissions/GRN';\nimport useHasEntityPermissionByGRN from 'hooks/useHasEntityPermissionByGRN';\nimport useShowRouteFromGRN from 'routing/hooks/useShowRouteFromGRN';\n\nconst StyledListGroupItem = styled(ListGroupItem)`\n display: flex;\n gap: 16px;\n align-items: flex-start;\n`;\n\nexport const StyledLabel = styled(Label)`\n cursor: default;\n width: 110px;\n display: block;\n`;\n\nconst LastOpenedTime = styled.i(({ theme }: { theme: DefaultTheme }) => css`\n color: ${theme.colors.gray[60]};\n`);\n\ntype Props = {\n title: string,\n timestamp?: string,\n grn: string,\n}\n\nconst EntityItem = ({ title, grn, timestamp }: Props) => {\n const { id, type } = getValuesFromGRN(grn);\n const hasReadPermission = useHasEntityPermissionByGRN(grn, 'read');\n const entityTypeTitle = useMemo(() => getTitleForEntityType(type, false) ?? 'unknown', [type]);\n const entityLink = useShowRouteFromGRN(grn);\n const entityTitle = title || id;\n const showLink = !!entityLink && hasReadPermission;\n\n return (\n \n {entityTypeTitle}\n {!showLink\n ? {entityTitle}\n : {entityTitle}}\n {timestamp ? : null}\n \n );\n};\n\nEntityItem.defaultProps = {\n timestamp: undefined,\n};\n\nexport default EntityItem;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n\nimport { useQuery } from '@tanstack/react-query';\n\nimport type { PaginatedLastOpened, RequestQuery } from 'components/welcome/types';\nimport PaginationURL from 'util/PaginationURL';\nimport fetch from 'logic/rest/FetchProvider';\nimport { qualifyUrl } from 'util/URLUtils';\nimport { DEFAULT_PAGINATION } from 'components/welcome/Constants';\nimport UserNotification from 'util/UserNotification';\n\nconst urlPrefix = '/startpage';\n\nexport const LAST_OPEN_QUERY_KEY = 'last_open_query_key';\n\nconst fetchLastOpen = async ({ page }: RequestQuery): Promise => {\n const url = PaginationURL(`${urlPrefix}/lastOpened`, page, 5, '');\n\n return fetch('GET', qualifyUrl(url));\n};\n\nconst useLastOpened = (pagination: RequestQuery): { data: PaginatedLastOpened, isFetching: boolean } => useQuery([LAST_OPEN_QUERY_KEY, pagination], () => fetchLastOpen(pagination), {\n onError: (errorThrown) => {\n UserNotification.error(`Loading last opened items failed with status: ${errorThrown}`,\n 'Could not load last opened items');\n },\n retry: 0,\n initialData: {\n lastOpened: [],\n ...DEFAULT_PAGINATION,\n },\n});\n\nexport default useLastOpened;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n\nimport React from 'react';\n\nimport { ListGroup } from 'components/bootstrap';\nimport { DEFAULT_PAGINATION } from 'components/welcome/Constants';\nimport EntityItem from 'components/welcome/EntityListItem';\nimport { NoSearchResult, Spinner } from 'components/common';\nimport { Link } from 'components/common/router';\nimport Routes from 'routing/Routes';\nimport useLastOpened from 'components/welcome/hooks/useLastOpened';\n\nconst LastOpenList = () => {\n const { data: { lastOpened }, isFetching } = useLastOpened(DEFAULT_PAGINATION);\n\n if (isFetching) return ;\n\n if (lastOpened.length === 0) {\n return (\n \n You do not have opened any searches/dashboards yet.\n
\n From now on, whenever you open a saved search/dashboard, it will show up here.\n In the meantime, you can start a new Search or Dashboard.\n
\n );\n }\n\n return (\n \n {lastOpened.map(({ grn, title, timestamp }) => )}\n \n );\n};\n\nexport default LastOpenList;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n\nimport { useQuery } from '@tanstack/react-query';\n\nimport type { PaginatedFavoriteItems, RequestQuery } from 'components/welcome/types';\nimport { DEFAULT_PAGINATION } from 'components/welcome/Constants';\nimport PaginationURL from 'util/PaginationURL';\nimport fetch from 'logic/rest/FetchProvider';\nimport { qualifyUrl } from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\n\nexport const FAVORITE_ITEMS_QUERY_KEY = 'favorite_items_query_key';\n\nconst fetchFavoriteItems = async ({ page }: RequestQuery): Promise => {\n const url = PaginationURL('/favorites', page, 5, '');\n\n return fetch('GET', qualifyUrl(url));\n};\n\nconst useFavoriteItems = (pagination: RequestQuery): { data: PaginatedFavoriteItems, isFetching: boolean } => useQuery([FAVORITE_ITEMS_QUERY_KEY, pagination], () => fetchFavoriteItems(pagination), {\n onError: (errorThrown) => {\n UserNotification.error(`Loading favorite items failed with status: ${errorThrown}`,\n 'Could not load favorite items');\n },\n retry: 0,\n initialData: {\n favorites: [],\n ...DEFAULT_PAGINATION,\n },\n});\n\nexport default useFavoriteItems;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n\nimport React, { useCallback, useState } from 'react';\n\nimport { ListGroup } from 'components/bootstrap';\nimport { DEFAULT_PAGINATION } from 'components/welcome/Constants';\nimport EntityItem from 'components/welcome/EntityListItem';\nimport { NoSearchResult, PaginatedList, Spinner } from 'components/common';\nimport { Link } from 'components/common/router';\nimport Routes from 'routing/Routes';\nimport useFavoriteItems from 'components/welcome/hooks/useFavoriteItems';\n\nconst FavoriteItemsList = () => {\n const [pagination, setPagination] = useState(DEFAULT_PAGINATION);\n const { data: { favorites, total }, isFetching } = useFavoriteItems(pagination);\n const onPageChange = useCallback((newPage) => {\n setPagination((cur) => ({ ...cur, page: newPage }));\n }, [setPagination]);\n\n if (isFetching) return ;\n\n if (favorites.length === 0) {\n return (\n \n You do not have any favorite items yet.\n
\n Make any Search or Dashboard favorite to show up here.\n
\n );\n }\n\n return (\n \n \n {favorites.map(({ grn, title }) => )}\n \n \n );\n};\n\nexport default FavoriteItemsList;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n\nimport { useQuery } from '@tanstack/react-query';\n\nimport type { PaginatedRecentActivity, PaginatedResponseRecentActivity, RequestQuery } from 'components/welcome/types';\nimport { DEFAULT_PAGINATION } from 'components/welcome/Constants';\nimport PaginationURL from 'util/PaginationURL';\nimport fetch from 'logic/rest/FetchProvider';\nimport { qualifyUrl } from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\n\nconst urlPrefix = '/startpage';\nexport const RECENT_ACTIONS_QUERY_KEY = 'recent_actions_query_key';\n\nconst fetchRecentActivities = async ({ page }: RequestQuery): Promise => {\n const url = PaginationURL(`${urlPrefix}/recentActivity`, page, 5, '');\n\n return fetch('GET', qualifyUrl(url)).then((data: PaginatedResponseRecentActivity): PaginatedRecentActivity => ({\n page: data.page,\n per_page: data.per_page,\n count: data.count,\n total: data.total,\n recentActivity: data.recentActivity.map((activity) => ({\n id: activity.id,\n itemTitle: activity.item_title,\n timestamp: activity.timestamp,\n activityType: activity.activity_type,\n itemGrn: activity.item_grn,\n userName: activity.user_name,\n })),\n }));\n};\n\nconst useRecentActivity = (pagination: RequestQuery): { data: PaginatedRecentActivity, isFetching: boolean } => useQuery([RECENT_ACTIONS_QUERY_KEY, pagination], () => fetchRecentActivities(pagination), {\n onError: (errorThrown) => {\n UserNotification.error(`Loading recent activity failed with status: ${errorThrown}`,\n 'Could not load recent activity');\n },\n retry: 0,\n initialData: {\n recentActivity: [],\n ...DEFAULT_PAGINATION,\n },\n});\n\nexport default useRecentActivity;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n\nimport React, { useCallback, useMemo, useState } from 'react';\n\nimport { Table } from 'components/bootstrap';\nimport { DEFAULT_PAGINATION } from 'components/welcome/Constants';\nimport { NoSearchResult, PaginatedList, RelativeTime, Spinner } from 'components/common';\nimport { Link } from 'components/common/router';\nimport { StyledLabel } from 'components/welcome/EntityListItem';\nimport type { RecentActivityType } from 'components/welcome/types';\nimport useRecentActivity from 'components/welcome/hooks/useRecentActivity';\nimport getTitleForEntityType from 'util/getTitleForEntityType';\nimport { getValuesFromGRN } from 'logic/permissions/GRN';\nimport useHasEntityPermissionByGRN from 'hooks/useHasEntityPermissionByGRN';\nimport useShowRouteFromGRN from 'routing/hooks/useShowRouteFromGRN';\n\ntype Props = { itemGrn: string, activityType: RecentActivityType, itemTitle: string, userName?: string };\n\nconst ActionItem = ({ itemGrn, activityType, itemTitle, userName }: Props) => {\n const hasReadPermission = useHasEntityPermissionByGRN(itemGrn, 'read');\n const { id: itemId, type: itemType } = getValuesFromGRN(itemGrn);\n const entityTypeTitle = useMemo(() => getTitleForEntityType(itemType, false) ?? `(unsupported type ${itemType})`, [itemType]);\n const entityLink = useShowRouteFromGRN(itemGrn);\n const entityTitle = itemTitle || itemId;\n const showLink = activityType !== 'delete' && !!entityLink && hasReadPermission;\n\n return (\n
\n {`The ${entityTypeTitle} `}\n {!showLink\n ? {entityTitle}\n : {entityTitle}}\n {' was '}\n {`${activityType}d`}\n {userName ? ` by ${userName}` : ''}\n
\n );\n};\n\nActionItem.defaultProps = {\n userName: null,\n};\n\nconst RecentActivityList = () => {\n const [pagination, setPagination] = useState(DEFAULT_PAGINATION);\n const { data: { recentActivity, total }, isFetching } = useRecentActivity(pagination);\n const onPageChange = useCallback((newPage) => {\n setPagination((cur) => ({ ...cur, page: newPage }));\n }, [setPagination]);\n\n if (isFetching) return ;\n\n if (recentActivity.length === 0) {\n return (\n \n There is no recent activity yet.\n

\n Whenever any other user will update content you have access to, or share new content with you, it will show up here.\n

\n
\n );\n }\n\n return (\n \n \n \n {\n recentActivity.map(({ id, timestamp, activityType, itemGrn, itemTitle, userName }) => (\n \n \n \n \n ))\n }\n \n
\n \n \n \n \n \n
\n
\n );\n};\n\nexport default RecentActivityList;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport PageHeader from 'components/common/PageHeader';\nimport SectionComponent from 'components/common/Section/SectionComponent';\nimport { Link } from 'components/common/router';\nimport Routes from 'routing/Routes';\nimport type { StartPage } from 'logic/users/User';\nimport ContentStreamContainer from 'components/content-stream/ContentStreamContainer';\n\nimport LastOpenList from './LastOpenList';\nimport FavoriteItemsList from './FavoriteItemsList';\nimport RecentActivityList from './RecentActivityList';\n\nimport SectionGrid from '../common/Section/SectionGrid';\nimport useCurrentUser from '../../hooks/useCurrentUser';\n\nconst StyledSectionComponent = styled(SectionComponent)`\n flex-grow: 1;\n`;\n\ntype HelperProps = { readOnly: boolean, userId: string, startpage: StartPage }\n\nconst ChangeStartPageHelper = ({ readOnly, userId, startpage }: HelperProps) => {\n const defaultPageIsDefined = startpage !== null;\n\n if (defaultPageIsDefined || readOnly) {\n return (\n \n This is your personal page, allowing easy access to the content most relevant for you.\n \n );\n }\n\n return (\n <>\n \n This is your personal start page, allowing easy access to the content most relevant for you.\n \n \n {' '}\n You can change your personal start page on the edit profile page.\n \n \n );\n};\n\nconst Welcome = () => {\n const { permissions, readOnly, id: userId, startpage } = useCurrentUser();\n const isAdmin = permissions.includes('*');\n\n return (\n <>\n \n \n \n \n \n

Overview of recently visited saved searches and dashboards.

\n \n
\n \n

Overview of your favorite saved searches and dashboards.

\n \n
\n
\n \n

\n {isAdmin\n ? 'This list includes all actions Graylog users performed, like creating or sharing an entity.'\n : 'Overview of actions you made with entities or somebody else made with entities which relates to you, like creating or sharing an entity.'}\n

\n \n
\n \n \n );\n};\n\nexport default Welcome;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nimport { DocumentTitle } from 'components/common';\nimport Welcome from 'components/welcome/Welcome';\n\nconst WelcomePage = () => (\n \n \n \n);\n\nexport default WelcomePage;\n"],"names":["options","persister","children","queryClient","PersistQueryClientProvider","DEFAULT_FEED","ENTERPRISE_FEED","SMB_FEED","message","title","CONTENT_STREAM_SETTINGS_KEY","CONTENT_STREAM_TAGS_KEY","currentUser","useCurrentUser","getContentStreamUserSettings","setContentStreamUserSettings","getContentStreamTags","saveSettings","settings","username","data","isLoading","refetchContentStream","errorThrown","tags","isLoadingTags","refetchContentStreamTag","contentStreamTagError","onSaveContentStreamSetting","CONTENT_STREAM_CONTENT_KEY","parseXML","text","parsed","items","fetchNewsFeed","rssUrl","response","error","path","currentTag","rss_url","AppConfig","getDefaultTag","StyledImage","theme","StyledPanelBody","StyledPanelFooter","StyledPanel","_sanitizeText","getImage","media","feed","sendTelemetry","useSendTelemetry","handleSendTelemetry","feedList","isLoadingFeed","Carousel","carouselElementClass","carousel","setCarousel","emblaApi","scrollPrev","scrollNext","handlePrev","handleNext","StyledDiv","StyledActionDiv","StyledReadMoreDiv","StyledListGroupItem","LastOpenedTime","StyledLabel","StyledButton","onClick","isOpen","StyledNewsSectionComponent","SectionComponent","$enabled","StyledReleaseSectionComponent","contentStreamSettings","isLoadingContentStreamSettings","updateContentStreamSettings","enableContentStream","enableRelease","contentStreamEnabled","releasesSectionEnabled","toggleNews","toggleRelease","SectionGrid","entityTypeMap","DEFAULT_PAGINATION","assertUnreachable","type","supportedTypes","throwErrorOnUnknown","typePrefixCornerCasesMap","grn","permissionType","id","permissions","EntityItem","timestamp","hasReadPermission","entityTypeTitle","entityLink","useShowRouteFromGRN","entityTitle","showLink","urlPrefix","LAST_OPEN_QUERY_KEY","fetchLastOpen","page","url","PaginationURL","pagination","lastOpened","isFetching","Routes","FAVORITE_ITEMS_QUERY_KEY","fetchFavoriteItems","setPagination","favorites","total","onPageChange","newPage","cur","RECENT_ACTIONS_QUERY_KEY","fetchRecentActivities","activity","ActionItem","itemGrn","activityType","itemTitle","userName","itemId","itemType","recentActivity","StyledSectionComponent","ChangeStartPageHelper","readOnly","userId","startpage","isAdmin","PageHeader"],"sourceRoot":""}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy