From cf6ded11051ff1ccb8da73428689533091544a6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96ZT=C3=9CRK?= <76204082+iamsedatozturk@users.noreply.github.com> Date: Tue, 24 Mar 2026 09:38:55 +0300 Subject: [PATCH] =?UTF-8?q?ActivityLog=20d=C3=BCzenlemesi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/admin/activityLog/ActivityLog.tsx | 84 +++++++++++++------ .../admin/activityLog/components/Log.tsx | 2 +- .../activityLog/components/LogFilter.tsx | 51 ++++++----- 3 files changed, 90 insertions(+), 47 deletions(-) diff --git a/ui/src/views/admin/activityLog/ActivityLog.tsx b/ui/src/views/admin/activityLog/ActivityLog.tsx index 0c9c0e6..4946711 100644 --- a/ui/src/views/admin/activityLog/ActivityLog.tsx +++ b/ui/src/views/admin/activityLog/ActivityLog.tsx @@ -1,5 +1,7 @@ import AdaptableCard from '@/components/shared/AdaptableCard' import Container from '@/components/shared/Container' +import Drawer from '@/components/ui/Drawer' +import Button from '@/components/ui/Button' import NotificationChannels from '@/constants/notification-channel.enum' import { NotificationDto } from '@/proxy/notification/models' import { getList } from '@/services/notification.service' @@ -9,13 +11,14 @@ import { Dictionary } from 'lodash' import forOwn from 'lodash/forOwn' import groupBy from 'lodash/groupBy' import has from 'lodash/has' -import isEmpty from 'lodash/isEmpty' import merge from 'lodash/merge' import { useEffect, useState } from 'react' import Log from './components/Log' import LogFilter from './components/LogFilter' import { Helmet } from 'react-helmet' import { APP_NAME } from '@/constants/app.constant' +import { DIR_RTL } from '@/constants/theme.constant' +import { useStoreState } from '@/store' const itemsPerPage = 10 @@ -26,12 +29,13 @@ const ActivityLog = () => { const [notifications, setNotifications] = useState>({}) const [page, setPage] = useState(0) const [hasMore, setHasMore] = useState(false) + const [isFilterDrawerOpen, setIsFilterDrawerOpen] = useState(false) + const direction = useStoreState((state) => state.theme.direction) const [filter, setFilter] = useState([ NotificationChannels.Desktop, NotificationChannels.Mail, NotificationChannels.Rocket, NotificationChannels.Sms, - NotificationChannels.Telegram, NotificationChannels.UiActivity, NotificationChannels.UiToast, NotificationChannels.WhatsApp, @@ -67,18 +71,16 @@ const ActivityLog = () => { } useEffect(() => { - if (isEmpty(notifications)) { - fetchData() - } - }, []) + fetchData(page > 0) + }, [page, filter]) - useEffect(() => { - fetchData(true) - }, [page]) - - useEffect(() => { - fetchData() - }, [filter]) + const handleFilterChange = (value: string[]) => { + setPage(0) + setNotifications({}) + setHasMore(false) + setFilter(value) + setIsFilterDrawerOpen(false) + } return ( @@ -88,19 +90,53 @@ const ActivityLog = () => { defaultTitle={APP_NAME} > - -
-
-

{translate('::Abp.Identity.ActivityLogs')}

- setPage(page + 1)} - loadable={hasMore} - > + +
+
+

+ {translate('::Abp.Identity.ActivityLogs')} +

+ +
+ +
+
+ setPage((prev) => prev + 1)} + loadable={hasMore} + > +
+ +
+ +
- setFilter(value)} />
+ + setIsFilterDrawerOpen(false)} + onRequestClose={() => setIsFilterDrawerOpen(false)} + > + +
) diff --git a/ui/src/views/admin/activityLog/components/Log.tsx b/ui/src/views/admin/activityLog/components/Log.tsx index 82412f5..56a888b 100644 --- a/ui/src/views/admin/activityLog/components/Log.tsx +++ b/ui/src/views/admin/activityLog/components/Log.tsx @@ -28,7 +28,7 @@ const Log = ({ return ( -
+
{keys(notifications).map((group) => (
diff --git a/ui/src/views/admin/activityLog/components/LogFilter.tsx b/ui/src/views/admin/activityLog/components/LogFilter.tsx index 93453ef..31aa21f 100644 --- a/ui/src/views/admin/activityLog/components/LogFilter.tsx +++ b/ui/src/views/admin/activityLog/components/LogFilter.tsx @@ -15,7 +15,6 @@ const ticketCheckboxes = [ { label: NotificationChannels.UiActivity, value: NotificationChannels.UiActivity }, { label: NotificationChannels.UiToast, value: NotificationChannels.UiToast }, { label: NotificationChannels.WhatsApp, value: NotificationChannels.WhatsApp }, - { label: NotificationChannels.Telegram, value: NotificationChannels.Telegram }, ] const CategoryTitle = ({ children, className }: CategoryTitleProps) => { @@ -34,35 +33,43 @@ const CategoryTitle = ({ children, className }: CategoryTitleProps) => { const LogFilter = ({ filter, onFilterChange, + useAffix = true, + className, }: { filter: string[] onFilterChange: (value: string[]) => void + useAffix?: boolean + className?: string }) => { const { translate } = useLocalization() - return ( -
- -
{translate('::Abp.Identity.ActivityLogs.Filters')}
- { - onFilterChange(value as string[]) - }} - > - - {translate('::Abp.Identity.ActivityLogs.Channels')} - - {ticketCheckboxes.map((checkbox) => ( - - {checkbox.label} - - ))} - -
+ const content = ( +
+
{translate('::Abp.Identity.ActivityLogs.Filters')}
+ { + onFilterChange(value as string[]) + }} + > + + {translate('::Abp.Identity.ActivityLogs.Channels')} + + {ticketCheckboxes.map((checkbox) => ( + + {checkbox.label} + + ))} +
) + + if (useAffix) { + return {content} + } + + return content } export default LogFilter