@@ -24,7 +24,8 @@ import { DataLimitUnit, DynamicAccessKeyWithAccessKeysCount } from "@/src/core/d
2424import {
2525 getDynamicAccessKeys ,
2626 getDynamicAccessKeysCount ,
27- removeDynamicAccessKey
27+ removeDynamicAccessKey ,
28+ resetDynamicAccessKeyUsage
2829} from "@/src/core/actions/dynamic-access-key" ;
2930import DynamicAccessKeyModal from "@/src/components/modals/dynamic-access-key-modal" ;
3031import { app , PAGE_SIZE } from "@/src/core/config" ;
@@ -45,7 +46,8 @@ export default function DynamicAccessKeysList() {
4546
4647 const totalPage = Math . ceil ( totalItems / PAGE_SIZE ) ;
4748
48- const removeDynamicAccessKeyConfirmModalDisclosure = useDisclosure ( ) ;
49+ const deleteConfirmModalDisclosure = useDisclosure ( ) ;
50+ const resetConfirmModalDisclosure = useDisclosure ( ) ;
4951 const dynamicAccessKeyModalDisclosure = useDisclosure ( ) ;
5052
5153 const searchForm = useForm < SearchFormProps > ( ) ;
@@ -62,13 +64,20 @@ export default function DynamicAccessKeysList() {
6264 setPage ( 1 ) ;
6365 } ;
6466
65- const handleRemoveDynamicAccessKey = async ( ) => {
67+ const handleDelete = async ( ) => {
6668 if ( ! currentDynamicAccessKey ) return ;
6769
6870 await removeDynamicAccessKey ( currentDynamicAccessKey . id ) ;
6971 await updateData ( ) ;
7072 } ;
7173
74+ const handleReset = async ( ) => {
75+ if ( ! currentDynamicAccessKey ) return ;
76+
77+ await resetDynamicAccessKeyUsage ( currentDynamicAccessKey . id ) ;
78+ await updateData ( ) ;
79+ } ;
80+
7281 const getCurrentAccessKeyUrl = ( ) => {
7382 if ( ! currentDynamicAccessKey ) return ;
7483
@@ -135,15 +144,30 @@ export default function DynamicAccessKeysList() {
135144 body = {
136145 < div className = "grid gap-2" >
137146 < span > Are you sure you want to Delete this dynamic access key?</ span >
138- < p className = "text-default -500 text-sm whitespace-pre-wrap break-all" >
147+ < p className = "text-foreground -500 text-sm whitespace-pre-wrap break-all" >
139148 { getCurrentAccessKeyUrl ( ) }
140149 </ p >
141150 </ div >
142151 }
143152 confirmLabel = "Delete"
144- disclosure = { removeDynamicAccessKeyConfirmModalDisclosure }
153+ disclosure = { deleteConfirmModalDisclosure }
145154 title = "Delete Dyanmic Access Key"
146- onConfirm = { handleRemoveDynamicAccessKey }
155+ onConfirm = { handleDelete }
156+ />
157+
158+ < ConfirmModal
159+ body = {
160+ < div className = "grid gap-2" >
161+ < span > Are you sure you want to reset this dynamic access key?</ span >
162+ < p className = "text-foreground-500 text-sm whitespace-pre-wrap break-all" >
163+ This action will set the data usage to 0 and the usage start date to null.
164+ </ p >
165+ </ div >
166+ }
167+ confirmLabel = "Reset"
168+ disclosure = { resetConfirmModalDisclosure }
169+ title = "Reset Dyanmic Access Key"
170+ onConfirm = { handleReset }
147171 />
148172
149173 < div className = "grid gap-4" >
@@ -266,13 +290,20 @@ export default function DynamicAccessKeysList() {
266290 QR Code
267291 </ Button >
268292
269- < Button
270- as = { Link }
271- href = { `/dynamic-access-keys/${ item . id } /access-keys` }
272- isDisabled = { item . isSelfManaged }
273- >
274- Access Keys
275- </ Button >
293+ { item . isSelfManaged ? (
294+ < Button
295+ onPress = { ( ) => {
296+ setCurrentDynamicAccessKey ( ( ) => item ) ;
297+ resetConfirmModalDisclosure . onOpen ( ) ;
298+ } }
299+ >
300+ Reset
301+ </ Button >
302+ ) : (
303+ < Button as = { Link } href = { `/dynamic-access-keys/${ item . id } /access-keys` } >
304+ Access Keys
305+ </ Button >
306+ ) }
276307
277308 < Button as = { Link } href = { `/dynamic-access-keys/${ item . id } /edit` } >
278309 Edit
@@ -282,7 +313,7 @@ export default function DynamicAccessKeysList() {
282313 color = "danger"
283314 onPress = { ( ) => {
284315 setCurrentDynamicAccessKey ( ( ) => item ) ;
285- removeDynamicAccessKeyConfirmModalDisclosure . onOpen ( ) ;
316+ deleteConfirmModalDisclosure . onOpen ( ) ;
286317 } }
287318 >
288319 Delete
0 commit comments