Skip to content

Commit 7f3c36a

Browse files
authored
Merge pull request #44 from AmRo045/dev
Add ability to reset usage of dynamic access key
2 parents bdb821b + 0abe68a commit 7f3c36a

File tree

2 files changed

+57
-14
lines changed

2 files changed

+57
-14
lines changed

src/components/dynamic-access-keys-list.tsx

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ import { DataLimitUnit, DynamicAccessKeyWithAccessKeysCount } from "@/src/core/d
2424
import {
2525
getDynamicAccessKeys,
2626
getDynamicAccessKeysCount,
27-
removeDynamicAccessKey
27+
removeDynamicAccessKey,
28+
resetDynamicAccessKeyUsage
2829
} from "@/src/core/actions/dynamic-access-key";
2930
import DynamicAccessKeyModal from "@/src/components/modals/dynamic-access-key-modal";
3031
import { 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

src/core/actions/dynamic-access-key.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,18 @@ export async function updateDynamicAccessKey(data: EditDynamicAccessKeyRequest):
138138
revalidatePath("/dynamic-access-keys");
139139
}
140140

141+
export async function resetDynamicAccessKeyUsage(id: number): Promise<void> {
142+
await prisma.dynamicAccessKey.update({
143+
where: { id },
144+
data: {
145+
dataUsage: 0,
146+
usageStartedAt: null
147+
}
148+
});
149+
150+
revalidatePath("/dynamic-access-keys");
151+
}
152+
141153
export async function removeDynamicAccessKey(id: number): Promise<void> {
142154
const dak = await prisma.dynamicAccessKey.findUnique({
143155
where: { id }

0 commit comments

Comments
 (0)