Merge pull request #2136 from hmacr/fix-1we4-hide-redeploy-when-sourceSize-is-zero

fix: Disable redeploy button when `sourceSize` is 0
This commit is contained in:
Matej Bačo
2025-07-24 16:28:43 +02:00
committed by GitHub
5 changed files with 99 additions and 47 deletions
@@ -12,7 +12,15 @@
import DeploymentCard from './(components)/deploymentCard.svelte';
import RedeployModal from './(modals)/redeployModal.svelte';
import { canWriteFunctions } from '$lib/stores/roles';
import { ActionMenu, Alert, Card, Empty, Icon, Layout } from '@appwrite.io/pink-svelte';
import {
ActionMenu,
Alert,
Card,
Empty,
Icon,
Layout,
Tooltip
} from '@appwrite.io/pink-svelte';
import { Click, trackEvent } from '$lib/actions/analytics';
import {
IconDotsHorizontal,
@@ -99,16 +107,27 @@
<svelte:fragment slot="menu" let:toggle>
<ActionMenu.Root>
{#if $canWriteFunctions}
<ActionMenu.Item.Button
trailingIcon={IconRefresh}
on:click={() => {
selectedDeployment = activeDeployment;
showRedeploy = true;
trackEvent(Click.FunctionsRedeployClick);
toggle();
}}>
Redeploy
</ActionMenu.Item.Button>
<Tooltip
disabled={activeDeployment.sourceSize !== 0}
placement={'bottom'}>
<div>
<ActionMenu.Item.Button
trailingIcon={IconRefresh}
disabled={activeDeployment.sourceSize === 0}
on:click={() => {
selectedDeployment = activeDeployment;
showRedeploy = true;
trackEvent(
Click.FunctionsRedeployClick
);
toggle();
}}
style="width: 100%">
Redeploy
</ActionMenu.Item.Button>
</div>
<div slot="tooltip">Source is empty</div>
</Tooltip>
{/if}
<DownloadActionMenuItem
deployment={activeDeployment}
@@ -19,6 +19,7 @@
Layout,
Logs,
Spinner,
Tooltip,
Typography
} from '@appwrite.io/pink-svelte';
import { capitalize } from '$lib/helpers/string';
@@ -98,15 +99,24 @@
<svelte:fragment slot="menu" let:toggle>
<ActionMenu.Root>
{#if $canWriteFunctions}
<ActionMenu.Item.Button
trailingIcon={IconRefresh}
on:click={() => {
showRedeploy = true;
trackEvent(Click.FunctionsRedeployClick);
toggle();
}}>
Redeploy
</ActionMenu.Item.Button>
<Tooltip
disabled={data.deployment.sourceSize !== 0}
placement={'bottom'}>
<div>
<ActionMenu.Item.Button
trailingIcon={IconRefresh}
disabled={data.deployment.sourceSize === 0}
on:click={() => {
showRedeploy = true;
trackEvent(Click.FunctionsRedeployClick);
toggle();
}}
style="width: 100%">
Redeploy
</ActionMenu.Item.Button>
</div>
<div slot="tooltip">Source is empty</div>
</Tooltip>
{/if}
{#if !!data.deployment?.sourceSize || !!data.deployment?.sourceSize}
<DownloadActionMenuItem deployment={data.deployment} {toggle} />
@@ -20,7 +20,8 @@
FloatingActionBar,
Icon,
Status,
Table
Table,
Tooltip
} from '@appwrite.io/pink-svelte';
import { Click, Submit, trackError, trackEvent } from '$lib/actions/analytics';
import {
@@ -149,18 +150,23 @@
<svelte:fragment slot="menu" let:toggle>
<ActionMenu.Root>
{#if deployment.sourceSize !== 0}
<ActionMenu.Item.Button
trailingIcon={IconRefresh}
on:click={() => {
selectedDeployment = deployment;
showRedeploy = true;
toggle();
trackEvent(Click.FunctionsRedeployClick);
}}>
Redeploy
</ActionMenu.Item.Button>
{/if}
<Tooltip disabled={deployment.sourceSize !== 0} placement={'bottom'}>
<div>
<ActionMenu.Item.Button
trailingIcon={IconRefresh}
disabled={deployment.sourceSize === 0}
on:click={() => {
selectedDeployment = deployment;
showRedeploy = true;
toggle();
trackEvent(Click.FunctionsRedeployClick);
}}
style="width: 100%">
Redeploy
</ActionMenu.Item.Button>
</div>
<div slot="tooltip">Source is empty</div>
</Tooltip>
{#if deployment.status === 'ready' && deployment.$id !== $func.deploymentId}
<ActionMenu.Item.Button
trailingIcon={IconLightningBolt}
@@ -14,7 +14,7 @@
IconTrash,
IconXCircle
} from '@appwrite.io/pink-icons-svelte';
import { ActionMenu, Icon } from '@appwrite.io/pink-svelte';
import { ActionMenu, Icon, Tooltip } from '@appwrite.io/pink-svelte';
export let selectedDeployment: Models.Deployment;
export let deployment: Models.Deployment;
@@ -55,17 +55,24 @@
</Button>
<svelte:fragment slot="menu" let:toggle>
<ActionMenu.Root>
{#if !inCard && selectedDeployment?.sourceSize !== 0}
<ActionMenu.Item.Button
leadingIcon={IconRefresh}
on:click={(e) => {
e.preventDefault();
selectedDeployment = deployment;
showRedeploy = true;
toggle();
}}>
Redeploy
</ActionMenu.Item.Button>
{#if !inCard}
<Tooltip disabled={selectedDeployment?.sourceSize !== 0} placement={'bottom'}>
<div>
<ActionMenu.Item.Button
leadingIcon={IconRefresh}
disabled={selectedDeployment?.sourceSize === 0}
on:click={(e) => {
e.preventDefault();
selectedDeployment = deployment;
showRedeploy = true;
toggle();
}}
style="width: 100%">
Redeploy
</ActionMenu.Item.Button>
</div>
<div slot="tooltip">Source is empty</div>
</Tooltip>
{/if}
{#if deployment?.status === 'ready' && deployment?.$id !== activeDeployment}
<ActionMenu.Item.Button
@@ -12,7 +12,7 @@
import CancelDeploymentModal from '../cancelDeploymentModal.svelte';
import RedeployModal from '../../../redeployModal.svelte';
import ActivateDeploymentModal from '../../../activateDeploymentModal.svelte';
import { Accordion } from '@appwrite.io/pink-svelte';
import { Accordion, Tooltip } from '@appwrite.io/pink-svelte';
import { capitalize } from '$lib/helpers/string';
import LogsTimer from '../../../(components)/logsTimer.svelte';
import { invalidate } from '$app/navigation';
@@ -56,7 +56,17 @@
</Button>
{/if}
<Button secondary on:click={() => (showRedeploy = true)}>Redeploy</Button>
<Tooltip disabled={deployment?.sourceSize !== 0} placement={'bottom'}>
<div>
<Button
secondary
disabled={deployment?.sourceSize === 0}
on:click={() => (showRedeploy = true)}>
Redeploy
</Button>
</div>
<div slot="tooltip">Source is empty</div>
</Tooltip>
<DeploymentActionMenu
inCard
{deployment}