Skip to content

Commit c6b540d

Browse files
committed
refactor: clean up unused props and improve state management in dialogs
1 parent cd714d2 commit c6b540d

5 files changed

Lines changed: 18 additions & 13 deletions

File tree

resources/js/components/git-credential-dialog.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import {
1111
import { Input } from '@/components/ui/input';
1212
import { Label } from '@/components/ui/label';
1313
import { Form } from '@inertiajs/react';
14-
import { useState } from 'react';
1514

1615
type GitCredentialData = App.Domains.Organization.Contracts.Data.GitCredentialData;
1716

resources/js/components/token-created-dialog.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ interface TokenCreatedDialogProps {
1414
token: string;
1515
name: string;
1616
expiresAt: string | null;
17-
organizationSlug: string;
1817
isOpen: boolean;
1918
onClose: () => void;
2019
}
@@ -23,7 +22,6 @@ export default function TokenCreatedDialog({
2322
token,
2423
name,
2524
expiresAt,
26-
organizationSlug,
2725
isOpen,
2826
onClose,
2927
}: TokenCreatedDialogProps) {

resources/js/layouts/organization-settings-layout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export default function OrganizationSettingsLayout({
4646
icon: GitBranch,
4747
},
4848
];
49-
}, [organization?.slug]);
49+
}, [organization]);
5050

5151
if (!organization) {
5252
return null;

resources/js/pages/organizations/settings/git-credentials.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ export default function GitCredentials({
229229
organizationSlug={organization.slug}
230230
organizationName={organization.name}
231231
credential={editingCredential}
232-
provider={addingProvider || editingCredential?.provider}
232+
provider={addingProvider ?? editingCredential!.provider}
233233
providers={providers}
234234
isOpen={dialogOpen}
235235
onClose={() => {

resources/js/pages/organizations/settings/tokens.tsx

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { Button } from '@/components/ui/button';
66
import AppLayout from '@/layouts/app-layout';
77
import OrganizationSettingsLayout from '@/layouts/organization-settings-layout';
88
import { Plus } from 'lucide-react';
9-
import { useEffect, useState } from 'react';
9+
import { startTransition, useEffect, useRef, useState } from 'react';
1010

1111
type AccessTokenData = App.Domains.Token.Contracts.Data.AccessTokenData;
1212
type OrganizationData =
@@ -29,18 +29,27 @@ export default function Tokens({
2929
}: TokensPageProps) {
3030
const [createDialogOpen, setCreateDialogOpen] = useState(false);
3131
const [revokeDialogOpen, setRevokeDialogOpen] = useState(false);
32-
const [tokenCreatedDialogOpen, setTokenCreatedDialogOpen] = useState(false);
32+
const [tokenCreatedDialogClosed, setTokenCreatedDialogClosed] =
33+
useState(false);
3334
const [selectedToken, setSelectedToken] = useState<{
3435
uuid: string;
3536
name: string;
3637
} | null>(null);
38+
const previousTokenCreatedRef = useRef(tokenCreated);
3739

38-
// Show token created dialog when a new token is created
40+
// Reset closed state when a new token is created
3941
useEffect(() => {
40-
if (tokenCreated) {
41-
setTokenCreatedDialogOpen(true);
42+
if (tokenCreated && tokenCreated !== previousTokenCreatedRef.current) {
43+
previousTokenCreatedRef.current = tokenCreated;
44+
if (tokenCreatedDialogClosed) {
45+
startTransition(() => {
46+
setTokenCreatedDialogClosed(false);
47+
});
48+
}
4249
}
43-
}, [tokenCreated]);
50+
}, [tokenCreated, tokenCreatedDialogClosed]);
51+
52+
const tokenCreatedDialogOpen = !!tokenCreated && !tokenCreatedDialogClosed;
4453

4554
const handleRevoke = (uuid: string, name: string) => {
4655
setSelectedToken({ uuid, name });
@@ -101,9 +110,8 @@ export default function Tokens({
101110
token={tokenCreated.plainToken}
102111
name={tokenCreated.name}
103112
expiresAt={tokenCreated.expires_at}
104-
organizationSlug={organization.slug}
105113
isOpen={tokenCreatedDialogOpen}
106-
onClose={() => setTokenCreatedDialogOpen(false)}
114+
onClose={() => setTokenCreatedDialogClosed(true)}
107115
/>
108116
)}
109117
</div>

0 commit comments

Comments
 (0)