refactor: version change

This commit is contained in:
Ben Allfree 2023-06-18 07:21:13 -07:00
parent 671a69f943
commit 66b71aa75e
3 changed files with 52 additions and 33 deletions

View File

@ -1,4 +1,5 @@
<script lang="ts">
export let disabled: boolean = false
export let style: 'primary' | 'warning' | 'danger' | 'success' = 'primary'
export let click: () => void = () => {}
</script>
@ -6,6 +7,7 @@
<button
type="button"
class="btn btn-{style}"
{disabled}
style="--bs-btn-padding-y: .05rem; --bs-btn-padding-x: .5rem; --bs-btn-font-size: .75rem;"
on:click={click}><slot /></button
>

View File

@ -0,0 +1,43 @@
<script lang="ts">
import TinyButton from '$components/helpers/TinyButton.svelte'
export let value: string = ''
export let disabled: boolean = false
export let save: (newValue: string) => Promise<string> = async () => 'saved'
let msg = ''
let oldValue = value
let editedValue = value
let editMode = false
const startEdit = () => {
oldValue = editedValue
editMode = true
}
const cancelEdit = () => {
editedValue = oldValue
editMode = false
}
const saveEdit = () => {
save(editedValue)
.then((res) => {
editMode = false
msg = res
})
.catch((e) => {
msg = e.message
})
}
</script>
{#if !editMode || disabled}
{editedValue}
<TinyButton click={startEdit} {disabled}>edit</TinyButton>
{msg}
{/if}
{#if editMode && !disabled}
<input type="text" bind:value={editedValue} />
<TinyButton style="success" {disabled} click={saveEdit}>save</TinyButton>
<TinyButton style="danger" {disabled} click={cancelEdit}>cancel</TinyButton>
{/if}

View File

@ -1,49 +1,23 @@
<script lang="ts">
import TinyButton from '$components/helpers/TinyButton.svelte'
import { PUBLIC_APP_DOMAIN, PUBLIC_APP_PROTOCOL } from '$src/env'
import { client } from '$src/pocketbase'
import type { InstanceFields } from '@pockethost/common'
import MiniEdit from './MiniEdit.svelte'
export let instance: InstanceFields
const { subdomain, status, version } = instance
const url = `${PUBLIC_APP_PROTOCOL}://${subdomain}.${PUBLIC_APP_DOMAIN}`
const { version } = instance
let msg = ''
let _oldVersion = version
let _version = version
let editMode = false
const startEdit = () => {
_oldVersion = _version
editMode = true
}
const cancelEdit = () => {
_version = _oldVersion
editMode = false
}
const saveEdit = () => {
const saveEdit = async (newValue: string) =>
client()
.saveVersion({ instanceId: instance.id, version: _version })
.saveVersion({ instanceId: instance.id, version: newValue })
.then(() => {
editMode = false
msg = 'saved'
_version = newValue
return 'saved'
})
.catch((e) => {
msg = e.message
})
}
</script>
<div>
Version {#if !editMode}
{_version}
<TinyButton click={startEdit}>edit</TinyButton>
{msg}
{/if}
{#if editMode}
<input type="text" bind:value={_version} />
<TinyButton style="success" click={saveEdit}>save</TinyButton>
<TinyButton style="danger" click={cancelEdit}>cancel</TinyButton>
{/if}
Version <MiniEdit value={_version} save={saveEdit} />
</div>