@@ -2,6 +2,7 @@ import { createSignal, Show, For, createEffect, Accessor } from "solid-js";
22import { cache , createAsync } from "@solidjs/router" ;
33import { getAccount } from "~/lib/auth" ;
44import { Octokit } from "@octokit/rest" ;
5+ import type { Service } from "~/lib/knative" ;
56
67const 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 >
0 commit comments