Skip to content

Commit 2e12b27

Browse files
authored
Merge pull request #277 from KomelT/feature/security-tab
Update key generation
2 parents 88efdc4 + 989fad7 commit 2e12b27

File tree

9 files changed

+277
-174
lines changed

9 files changed

+277
-174
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"@bufbuild/protobuf": "^1.10.0",
2525
"@emeraldpay/hashicon-react": "^0.5.2",
2626
"@meshtastic/js": "2.3.7-1",
27+
"@noble/curves": "^1.5.0",
2728
"@radix-ui/react-accordion": "^1.2.0",
2829
"@radix-ui/react-checkbox": "^1.1.0",
2930
"@radix-ui/react-dialog": "^1.1.1",

pnpm-lock.yaml

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { Button } from "@components/UI/Button.js";
2+
import {
3+
Dialog,
4+
DialogContent,
5+
DialogDescription,
6+
DialogFooter,
7+
DialogHeader,
8+
DialogTitle,
9+
} from "@components/UI/Dialog.js";
10+
11+
export interface PkiRegenerateDialogProps {
12+
open: boolean;
13+
onOpenChange: () => void;
14+
onSubmit: () => void;
15+
}
16+
17+
export const PkiRegenerateDialog = ({
18+
open,
19+
onOpenChange,
20+
onSubmit,
21+
}: PkiRegenerateDialogProps): JSX.Element => {
22+
return (
23+
<Dialog open={open} onOpenChange={onOpenChange}>
24+
<DialogContent>
25+
<DialogHeader>
26+
<DialogTitle>Regenerate Key pair?</DialogTitle>
27+
<DialogDescription>
28+
Are you sure you want to regenerate key pair?
29+
</DialogDescription>
30+
</DialogHeader>
31+
<DialogFooter>
32+
<Button variant="destructive" onClick={() => onSubmit()}>
33+
Regenerate
34+
</Button>
35+
</DialogFooter>
36+
</DialogContent>
37+
</Dialog>
38+
);
39+
};

src/components/Form/FormInput.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@ import type {
44
} from "@components/Form/DynamicForm.js";
55
import { Input } from "@components/UI/Input.js";
66
import type { LucideIcon } from "lucide-react";
7+
import type { ChangeEventHandler } from "react";
78
import { Controller, type FieldValues } from "react-hook-form";
89

910
export interface InputFieldProps<T> extends BaseFormBuilderProps<T> {
1011
type: "text" | "number" | "password";
12+
inputChange?: ChangeEventHandler;
1113
properties?: {
14+
value?: string;
1215
prefix?: string;
1316
suffix?: string;
1417
step?: number;
@@ -33,13 +36,14 @@ export function GenericInput<T extends FieldValues>({
3336
type={field.type}
3437
step={field.properties?.step}
3538
value={field.type === "number" ? Number.parseFloat(value) : value}
36-
onChange={(e) =>
39+
onChange={(e) => {
40+
if (field.inputChange) field.inputChange(e);
3741
onChange(
3842
field.type === "number"
3943
? Number.parseFloat(e.target.value)
4044
: e.target.value,
41-
)
42-
}
45+
);
46+
}}
4347
{...field.properties}
4448
{...rest}
4549
disabled={disabled}

src/components/Form/FormPasswordGenerator.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { Controller, type FieldValues } from "react-hook-form";
99
export interface PasswordGeneratorProps<T> extends BaseFormBuilderProps<T> {
1010
type: "passwordGenerator";
1111
hide?: boolean;
12+
bits?: { text: string; value: string; key: string }[];
1213
devicePSKBitCount: number;
1314
inputChange: ChangeEventHandler;
1415
selectChange: (event: string) => void;
@@ -28,6 +29,7 @@ export function PasswordGenerator<T extends FieldValues>({
2829
<Generator
2930
hide={field.hide}
3031
devicePSKBitCount={field.devicePSKBitCount}
32+
bits={field.bits}
3133
inputChange={field.inputChange}
3234
selectChange={field.selectChange}
3335
buttonClick={field.buttonClick}

0 commit comments

Comments
 (0)