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"> <script lang="ts">
export let disabled: boolean = false
export let style: 'primary' | 'warning' | 'danger' | 'success' = 'primary' export let style: 'primary' | 'warning' | 'danger' | 'success' = 'primary'
export let click: () => void = () => {} export let click: () => void = () => {}
</script> </script>
@ -6,6 +7,7 @@
<button <button
type="button" type="button"
class="btn btn-{style}" class="btn btn-{style}"
{disabled}
style="--bs-btn-padding-y: .05rem; --bs-btn-padding-x: .5rem; --bs-btn-font-size: .75rem;" style="--bs-btn-padding-y: .05rem; --bs-btn-padding-x: .5rem; --bs-btn-font-size: .75rem;"
on:click={click}><slot /></button 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"> <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 { client } from '$src/pocketbase'
import type { InstanceFields } from '@pockethost/common' import type { InstanceFields } from '@pockethost/common'
import MiniEdit from './MiniEdit.svelte'
export let instance: InstanceFields export let instance: InstanceFields
const { subdomain, status, version } = instance const { version } = instance
const url = `${PUBLIC_APP_PROTOCOL}://${subdomain}.${PUBLIC_APP_DOMAIN}`
let msg = ''
let _oldVersion = version
let _version = 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() client()
.saveVersion({ instanceId: instance.id, version: _version }) .saveVersion({ instanceId: instance.id, version: newValue })
.then(() => { .then(() => {
editMode = false _version = newValue
msg = 'saved' return 'saved'
}) })
.catch((e) => {
msg = e.message
})
}
</script> </script>
<div> <div>
Version {#if !editMode} Version <MiniEdit value={_version} save={saveEdit} />
{_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}
</div> </div>