@@ -2,33 +2,28 @@ import { formatDistanceToNow } from "date-fns";
2
2
import {
3
3
Cell ,
4
4
Column ,
5
- Input ,
6
5
Row ,
7
- SearchField ,
8
6
Table ,
9
7
TableBody ,
10
- FieldGroup ,
11
8
TableHeader ,
12
- SearchFieldClearButton ,
13
9
Badge ,
14
10
Button ,
15
11
ResizableTableContainer ,
16
12
} from "@stacklok/ui-kit" ;
17
- import { Switch } from "@stacklok/ui-kit" ;
18
13
import { AlertConversation , QuestionType } from "@/api/generated" ;
19
- import { Tooltip , TooltipTrigger } from "@stacklok/ui-kit" ;
20
14
import {
21
15
sanitizeQuestionPrompt ,
22
16
parsingPromptText ,
23
17
getIssueDetectedType ,
24
18
} from "@/lib/utils" ;
25
19
import { useAlertSearch } from "@/hooks/useAlertSearch" ;
26
- import { useCallback } from "react" ;
27
- import { useNavigate , useSearchParams } from "react-router-dom" ;
28
- import { useFilteredAlerts } from "@/hooks/useAlertsData" ;
20
+ import { useNavigate } from "react-router-dom" ;
29
21
import { useClientSidePagination } from "@/hooks/useClientSidePagination" ;
30
22
import { TableAlertTokenUsage } from "./table-alert-token-usage" ;
31
- import { Key01 , PackageX , SearchMd } from "@untitled-ui/icons-react" ;
23
+ import { Key01 , PackageX } from "@untitled-ui/icons-react" ;
24
+ import { SearchFieldAlerts } from "./search-field-alerts" ;
25
+ import { useQueryGetWorkspaceAlertTable } from "../hooks/use-query-get-workspace-alerts-table" ;
26
+ import { SwitchMaliciousAlertsFilter } from "./switch-malicious-alerts-filter" ;
32
27
33
28
const getTitle = ( alert : AlertConversation ) => {
34
29
const prompt = alert . conversation ;
@@ -80,56 +75,16 @@ function IssueDetectedCellContent({ alert }: { alert: AlertConversation }) {
80
75
}
81
76
82
77
export function TableAlerts ( ) {
83
- const {
84
- isMaliciousFilterActive,
85
- setIsMaliciousFilterActive,
86
- setSearch,
87
- search,
88
- page,
89
- nextPage,
90
- prevPage,
91
- } = useAlertSearch ( ) ;
78
+ const { page, nextPage, prevPage } = useAlertSearch ( ) ;
92
79
const navigate = useNavigate ( ) ;
93
- const [ searchParams , setSearchParams ] = useSearchParams ( ) ;
94
- const { data : filteredAlerts = [ ] } = useFilteredAlerts ( ) ;
80
+ const { data : filteredAlerts = [ ] } = useQueryGetWorkspaceAlertTable ( ) ;
95
81
96
82
const { dataView, hasNextPage, hasPreviousPage } = useClientSidePagination (
97
83
filteredAlerts ,
98
84
page ,
99
85
15 ,
100
86
) ;
101
87
102
- const handleToggleFilter = useCallback (
103
- ( isChecked : boolean ) => {
104
- if ( isChecked ) {
105
- searchParams . set ( "maliciousPkg" , "true" ) ;
106
- searchParams . delete ( "search" ) ;
107
- setSearch ( "" ) ;
108
- } else {
109
- searchParams . delete ( "maliciousPkg" ) ;
110
- }
111
- setSearchParams ( searchParams ) ;
112
- setIsMaliciousFilterActive ( isChecked ) ;
113
- } ,
114
- [ setSearchParams , setSearch , searchParams , setIsMaliciousFilterActive ] ,
115
- ) ;
116
-
117
- const handleSearch = useCallback (
118
- ( value : string ) => {
119
- if ( value ) {
120
- searchParams . set ( "search" , value ) ;
121
- searchParams . delete ( "maliciousPkg" ) ;
122
- setSearch ( value ) ;
123
- setIsMaliciousFilterActive ( false ) ;
124
- } else {
125
- searchParams . delete ( "search" ) ;
126
- setSearch ( "" ) ;
127
- }
128
- setSearchParams ( searchParams ) ;
129
- } ,
130
- [ searchParams , setIsMaliciousFilterActive , setSearch , setSearchParams ] ,
131
- ) ;
132
-
133
88
return (
134
89
< >
135
90
< div className = "flex mb-2 mx-2 justify-between w-[calc(100vw-20rem)]" >
@@ -141,37 +96,8 @@ export function TableAlerts() {
141
96
</ div >
142
97
143
98
< div className = "flex items-center gap-8" >
144
- < div className = "flex items-center space-x-2" >
145
- < TooltipTrigger >
146
- < Switch
147
- id = "malicious-packages"
148
- isSelected = { isMaliciousFilterActive }
149
- onChange = { handleToggleFilter }
150
- >
151
- Malicious Packages
152
- </ Switch >
153
-
154
- < Tooltip >
155
- < p > Filter by malicious packages</ p >
156
- </ Tooltip >
157
- </ TooltipTrigger >
158
- </ div >
159
- < SearchField
160
- type = "text"
161
- aria-label = "Search alerts"
162
- value = { search }
163
- onChange = { ( value ) => handleSearch ( value . toLowerCase ( ) . trim ( ) ) }
164
- >
165
- < FieldGroup >
166
- < Input
167
- type = "search"
168
- placeholder = "Search..."
169
- isBorderless
170
- icon = { < SearchMd /> }
171
- />
172
- < SearchFieldClearButton />
173
- </ FieldGroup >
174
- </ SearchField >
99
+ < SwitchMaliciousAlertsFilter />
100
+ < SearchFieldAlerts />
175
101
</ div >
176
102
</ div >
177
103
< div className = "overflow-x-auto" >
0 commit comments