Skip to content

Commit faf5fcd

Browse files
committed
SourceInput on settings page
1 parent f77f75a commit faf5fcd

File tree

3 files changed

+36
-32
lines changed

3 files changed

+36
-32
lines changed

src/components/cloud/service/SourceInput.tsx

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { createSignal, Show, For, createEffect, Accessor } from "solid-js";
22
import { cache, createAsync } from "@solidjs/router";
33
import { getAccount } from "~/lib/auth";
44
import { Octokit } from "@octokit/rest";
5+
import type { Service } from "~/lib/knative";
56

67
const getPackages = cache(async () => {
78
"use server";
@@ -45,16 +46,24 @@ const sourceOptions = [
4546
{ name: "GitHub Container Registry", slug: "ghcr" },
4647
] as Array<{ name: string; slug: Source }>;
4748

48-
export const SourceInput = ({ data }) => {
49-
const [source, setSource] = createSignal("manual" as Source);
49+
export const SourceInput = ({ service }: { service?: Service }) => {
50+
const [source, setSource] = createSignal(
51+
service?.annotations["apps.deploycat.io/source"] ?? ("manual" as Source)
52+
);
5053
const packages = createAsync(() => getPackages());
5154
type Package = typeof packages extends Accessor<(infer U)[] | undefined>
5255
? U
5356
: never;
5457
const [pkg, setPkg] = createSignal(undefined as Package | undefined);
5558

5659
createEffect(() => {
57-
setPkg(packages()?.[0]);
60+
setPkg(
61+
packages()?.find(
62+
(pkg) =>
63+
pkg.id ===
64+
Number(service?.annotations["apps.deploycat.io/gh-package"])
65+
) ?? packages()?.[0]
66+
);
5867
});
5968

6069
return (
@@ -87,6 +96,7 @@ export const SourceInput = ({ data }) => {
8796
<input
8897
type="text"
8998
name="image"
99+
value={service?.image ?? ""}
90100
required
91101
placeholder="traefik/whoami"
92102
class="input input-bordered w-full"
@@ -113,7 +123,7 @@ export const SourceInput = ({ data }) => {
113123
>
114124
<For each={pkgs()}>
115125
{(p) => (
116-
<option value={p.id}>
126+
<option selected={p.id === pkg()?.id} value={p.id}>
117127
{p.name} ({p.repository?.full_name})
118128
</option>
119129
)}
@@ -124,7 +134,24 @@ export const SourceInput = ({ data }) => {
124134
class="select select-bordered join-item"
125135
>
126136
<For each={pkg()?.tags}>
127-
{(t) => <option value={t}>{t}</option>}
137+
{(t) => (
138+
<option
139+
selected={
140+
Number(
141+
service?.annotations[
142+
"apps.deploycat.io/gh-package"
143+
]
144+
) === pkg()?.id &&
145+
t ===
146+
service?.annotations[
147+
"apps.deploycat.io/gh-package-tag"
148+
]
149+
}
150+
value={t}
151+
>
152+
{t}
153+
</option>
154+
)}
128155
</For>
129156
</select>
130157
</div>

src/composables/solidauth.ts

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/routes/cloud/apps/[app]/settings.tsx

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { EnvVarsInput } from "~/components/EnvVarsInput";
22
import { ScalingInput } from "~/components/ScalingInput";
33
import { ResourcesInput } from "~/components/ResourcesInput";
4+
import { SourceInput } from "~/components/cloud/service/SourceInput";
45
import { Service } from "~/components/cloud/service/Service";
56
import { CreateServiceForm } from "~/components/cloud/CreateServiceForm";
67
import { action, useSubmission } from "@solidjs/router";
@@ -36,11 +37,7 @@ const updateServiceFromForm = async (form: FormData) => {
3637
envVars: JSON.parse(form.get("env") as string) as { [key: string]: string },
3738
};
3839
const user = await getUser();
39-
await knative.updateService(
40-
form.get("name") as string,
41-
service,
42-
user.name
43-
);
40+
await knative.updateService(form.get("name") as string, service, user.name);
4441
};
4542

4643
const updateServiceAction = action(updateServiceFromForm, "updateService");
@@ -75,22 +72,11 @@ export default () => {
7572
type="hidden"
7673
name="name"
7774
required
78-
value={service()?.name}
79-
class="input input-bordered w-full"
80-
/>
81-
</label>
82-
<label class="form-control w-full">
83-
<div class="label">
84-
<span class="label-text">Image</span>
85-
</div>
86-
<input
87-
type="text"
88-
name="image"
89-
required
90-
value={service()?.image}
75+
value={service().name}
9176
class="input input-bordered w-full"
9277
/>
9378
</label>
79+
<SourceInput service={service()} />
9480
<label class="form-control w-full">
9581
<div class="label">
9682
<span class="label-text">Port</span>

0 commit comments

Comments
 (0)