Skip to content

Commit 9a107e7

Browse files
committed
secrets: use env from team, remove unneeded deepcopy
1 parent af2fb37 commit 9a107e7

File tree

10 files changed

+105
-144
lines changed

10 files changed

+105
-144
lines changed

package-lock.json

+1-5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

schema.graphql

+1-11
Original file line numberDiff line numberDiff line change
@@ -356,11 +356,6 @@ input EnvCostFilter {
356356
to: Date!
357357
}
358358

359-
type EnvSecret {
360-
env: Env!
361-
secrets: [Secret!]!
362-
}
363-
364359
type Error {
365360
message: String!
366361
}
@@ -1714,12 +1709,7 @@ type Team {
17141709
): Secret!
17151710

17161711
"""Get all secrets for the team."""
1717-
secrets: [EnvSecret!]!
1718-
1719-
"""
1720-
A list of Slack channels for NAIS alerts. If no channel is specified for a given environment, NAIS will fallback to the slackChannel value.
1721-
"""
1722-
slackAlertsChannels: [SlackAlertsChannel!]!
1712+
secrets: [Secret!]!
17231713

17241714
"""Slack channel for the team."""
17251715
slackChannel: String!

src/routes/team/[team]/(teamTabs)/secrets/+page.gql

+5-4
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ query Secrets($team: Slug!) @cache(policy: CacheAndNetwork) {
44
env {
55
name
66
}
7-
secrets {
8-
name
9-
lastModifiedAt
10-
}
7+
name
8+
lastModifiedAt
9+
}
10+
environments {
11+
name
1112
}
1213
}
1314
}

src/routes/team/[team]/(teamTabs)/secrets/+page.svelte

+23-43
Original file line numberDiff line numberDiff line change
@@ -13,47 +13,23 @@
1313
Tr
1414
} from '@nais/ds-svelte-community';
1515
import type { PageData } from './$houdini';
16-
import type { Secrets$result } from '$houdini';
1716
import { page } from '$app/stores';
1817
import CreateSecret from './CreateSecret.svelte';
1918
import { PlusIcon } from '@nais/ds-svelte-community/icons';
2019
import HumanTime from '$lib/HumanTime.svelte';
21-
import { parseISO } from 'date-fns';
2220
2321
export let data: PageData;
24-
let team = $page.params.team;
25-
26-
let update: {
27-
env: {
28-
name: string;
29-
};
30-
secrets: {
31-
name: string;
32-
lastModifiedAt?: string;
33-
}[];
34-
}[] = [];
3522
3623
$: ({ Secrets } = data);
37-
$: mkUpdate($Secrets.data?.team.secrets);
38-
let mkUpdate = (secret: Secrets$result['team']['secrets'] | undefined | null) => {
39-
if (!secret) {
40-
return;
41-
}
42-
43-
update = JSON.parse(JSON.stringify(secret));
44-
};
24+
$: allSecrets = $Secrets.data?.team.secrets;
25+
$: environments = $Secrets.data?.team.environments;
26+
$: team = $page.params.team;
4527
4628
// (obj: Record<string, any>) => obj[key];
47-
let createSecretOpen = update
48-
? update.reduce(
49-
(acc: Record<string, boolean>, curr) => ({
50-
...acc,
51-
[curr.env.name]: false
52-
}),
53-
{}
54-
)
29+
const createSecretOpen: Record<string, boolean> = environments
30+
? environments.reduce((acc, curr) => ({ ...acc, [curr.name]: false }), {})
5531
: {};
56-
let openCreateSecretModal = (env: string) => {
32+
const openCreateSecretModal = (env: string) => {
5733
createSecretOpen[env] = true;
5834
};
5935
</script>
@@ -66,15 +42,19 @@
6642
</Alert>
6743
{:else if $Secrets.fetching}
6844
<Loader></Loader>
69-
{:else}
45+
{:else if allSecrets && environments}
7046
<div class="grid">
71-
{#each update as secrets}
72-
{@const env = secrets.env.name}
47+
{#each environments as environment}
48+
{@const secrets = allSecrets.filter((s) => s.env.name === environment.name)}
7349
<Card columns={12}>
7450
<div class="heading">
75-
<h3>{env}</h3>
51+
<h3>{environment.name}</h3>
7652
<Tooltip content="Create new secret in environment" arrow={false}>
77-
<Button variant="tertiary" size="small" on:click={() => openCreateSecretModal(env)}>
53+
<Button
54+
variant="primary"
55+
size="small"
56+
on:click={() => openCreateSecretModal(environment.name)}
57+
>
7858
Create Secret
7959
<svelte:fragment slot="icon-left">
8060
<PlusIcon />
@@ -85,26 +65,26 @@
8565

8666
<CreateSecret
8767
refetch={() => Secrets.fetch({})}
88-
existingNames={secrets.secrets.map((s) => s.name)}
89-
bind:open={createSecretOpen[env]}
90-
bind:team
91-
{env}
68+
existingNames={secrets.map((s) => s.name)}
69+
bind:open={createSecretOpen[environment.name]}
70+
env={environment.name}
71+
{team}
9272
/>
9373

94-
<Table size="small">
74+
<Table size="small" zebraStripes>
9575
<Thead>
9676
<Th>Name</Th>
9777
<Th align="right">Last Modified</Th>
9878
</Thead>
9979
<Tbody>
100-
{#each secrets.secrets as secret}
80+
{#each secrets as secret}
10181
<Tr>
10282
<Td>
103-
<a href="/team/{team}/{env}/secret/{secret.name}">{secret.name}</a>
83+
<a href="/team/{team}/{environment.name}/secret/{secret.name}">{secret.name}</a>
10484
</Td>
10585
<Td align="right">
10686
{#if secret.lastModifiedAt}
107-
<HumanTime time={parseISO(secret.lastModifiedAt)} distance />
87+
<HumanTime time={secret.lastModifiedAt} distance />
10888
{:else}
10989
<code>n/a</code>
11090
{/if}

src/routes/team/[team]/(teamTabs)/secrets/CreateSecret.svelte

+4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<script lang="ts">
22
import { graphql, type SecretTupleInput } from '$houdini';
33
import { Alert, Button, Heading, Modal, TextField } from '@nais/ds-svelte-community';
4+
import { goto } from '$app/navigation';
45
56
export let open: boolean;
67
export let team: string;
@@ -38,8 +39,11 @@
3839
if ($createSecret.errors) {
3940
open = true;
4041
} else {
42+
const secretPage = '/team/' + team + '/' + env + '/secret/' + name
43+
name = '';
4144
open = false;
4245
refetch();
46+
await goto(secretPage);
4347
}
4448
};
4549

src/routes/team/[team]/[env]/app/[app]/+page.svelte

+5-5
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,11 @@
7171
<h4>Authentications</h4>
7272
<Authentications app={$App.data.app} />
7373
</Card>
74-
{#if $App.data.team.viewerIsMember || $App.data.team.viewerIsOwner }
75-
<Card columns={4}>
76-
<h4>Secrets</h4>
77-
<Secrets />
78-
</Card>
74+
{#if $App.data.team.viewerIsMember || $App.data.team.viewerIsOwner}
75+
<Card columns={4}>
76+
<h4>Secrets</h4>
77+
<Secrets />
78+
</Card>
7979
{/if}
8080
</div>
8181
{/if}

src/routes/team/[team]/[env]/app/[app]/Secrets.svelte

+18-18
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
const appSecrets = graphql(`
1212
query AppSecrets($app: String!, $team: Slug!, $env: String!) @load {
1313
app(name: $app, team: $team, env: $env) @loading {
14-
secrets @loading {
15-
name
16-
}
14+
secrets @loading {
15+
name
16+
}
1717
}
1818
}
1919
`);
@@ -31,21 +31,21 @@
3131
{/each}
3232
</Alert>
3333
{:else if $appSecrets.data}
34-
<div>
35-
{#if $appSecrets.data.app.secrets.length > 0}
36-
<ul>
37-
{#each $appSecrets.data.app.secrets as secret}
38-
{#if secret === PendingValue}
39-
<Skeleton variant="text" width="300px" />
40-
{:else}
41-
<li><a href="/team/{team}/{env}/secret/{secret.name}">{secret.name}</a></li>
42-
{/if}
43-
{/each}
44-
</ul>
45-
{:else}
46-
<p>No secrets</p>
47-
{/if}
48-
</div>
34+
<div>
35+
{#if $appSecrets.data.app.secrets.length > 0}
36+
<ul>
37+
{#each $appSecrets.data.app.secrets as secret}
38+
{#if secret === PendingValue}
39+
<Skeleton variant="text" width="300px" />
40+
{:else}
41+
<li><a href="/team/{team}/{env}/secret/{secret.name}">{secret.name}</a></li>
42+
{/if}
43+
{/each}
44+
</ul>
45+
{:else}
46+
<p>No secrets</p>
47+
{/if}
48+
</div>
4949
{/if}
5050

5151
<style>

0 commit comments

Comments
 (0)