fix: preserve boolean fields and deploymentRetention across all settings updates

Extends the fix from #3064 to the remaining 20 settings update components
for both functions and sites. Two bugs were present in every file not
touched by that PR:

1. `enabled`, `logging`, and `providerSilentMode` were passed through
   `|| undefined` instead of `?? undefined`, causing `false` values to
   be silently coerced to `undefined` and reset to their API defaults
   whenever any other setting was saved.

2. `deploymentRetention` was absent from every partial-update payload,
   so saving name, timeout, scopes, schedule, runtime, permissions,
   resource limits, build command, events, build triggers, or repository
   settings would silently reset the retention value.

Also fixes `providerSilentMode: silentMode || undefined` in sites/
updateRepository.svelte to `silentMode` (matching the functions version),
so disabling silent mode is correctly preserved on save.
This commit is contained in:
harsh mahajan
2026-05-28 12:22:39 +05:30
parent a9baf8b7ef
commit 47d78fa0fb
20 changed files with 97 additions and 75 deletions
@@ -31,8 +31,8 @@
events: $func.events || undefined,
schedule: $func.schedule || undefined,
timeout: $func.timeout || undefined,
enabled: $func.enabled || undefined,
logging: $func.logging || undefined,
enabled: $func.enabled ?? undefined,
logging: $func.logging ?? undefined,
entrypoint: $func.entrypoint,
commands: $func.commands || undefined,
scopes: ($func.scopes as Scopes[]) || undefined,
@@ -41,7 +41,8 @@
providerBranch: '',
providerSilentMode: true,
providerRootDirectory: '',
buildSpecification: $func.buildSpecification || undefined
buildSpecification: $func.buildSpecification || undefined,
deploymentRetention: $func.deploymentRetention ?? undefined
});
await invalidate(Dependencies.FUNCTION);
dispatch('success');
@@ -26,17 +26,18 @@
events: func.events || undefined,
schedule: func.schedule || undefined,
timeout: func.timeout || undefined,
enabled: func.enabled || undefined,
logging: func.logging || undefined,
enabled: func.enabled ?? undefined,
logging: func.logging ?? undefined,
entrypoint: func.entrypoint || undefined,
commands: buildCommand || undefined,
scopes: (func.scopes as Scopes[]) || undefined,
installationId: func.installationId || undefined,
providerRepositoryId: func.providerRepositoryId || undefined,
providerBranch: func.providerBranch || undefined,
providerSilentMode: func.providerSilentMode || undefined,
providerSilentMode: func.providerSilentMode ?? undefined,
providerRootDirectory: func.providerRootDirectory || undefined,
buildSpecification: func.buildSpecification || undefined
buildSpecification: func.buildSpecification || undefined,
deploymentRetention: func.deploymentRetention ?? undefined
});
await invalidate(Dependencies.FUNCTION);
@@ -56,6 +56,7 @@
providerSilentMode: func.providerSilentMode ?? undefined,
providerRootDirectory: func.providerRootDirectory ?? undefined,
buildSpecification: func.buildSpecification ?? undefined,
deploymentRetention: func.deploymentRetention ?? undefined,
providerBranches,
providerPaths
});
@@ -37,17 +37,18 @@
events: Array.from($eventSet),
schedule: $func.schedule || undefined,
timeout: $func.timeout || undefined,
enabled: $func.enabled || undefined,
logging: $func.logging || undefined,
enabled: $func.enabled ?? undefined,
logging: $func.logging ?? undefined,
entrypoint: $func.entrypoint || undefined,
commands: $func.commands || undefined,
scopes: ($func.scopes as Scopes[]) || undefined,
installationId: $func.installationId || undefined,
providerRepositoryId: $func.providerRepositoryId || undefined,
providerBranch: $func.providerBranch || undefined,
providerSilentMode: $func.providerSilentMode || undefined,
providerSilentMode: $func.providerSilentMode ?? undefined,
providerRootDirectory: $func.providerRootDirectory || undefined,
buildSpecification: $func.buildSpecification || undefined
buildSpecification: $func.buildSpecification || undefined,
deploymentRetention: $func.deploymentRetention ?? undefined
});
await invalidate(Dependencies.FUNCTION);
addNotification({
@@ -32,17 +32,18 @@
events: $func.events || undefined,
schedule: $func.schedule || undefined,
timeout: $func.timeout || undefined,
enabled: $func.enabled || undefined,
logging: $func.logging || undefined,
enabled: $func.enabled ?? undefined,
logging: $func.logging ?? undefined,
entrypoint: $func.entrypoint || undefined,
commands: $func.commands || undefined,
scopes: ($func.scopes as Scopes[]) || undefined,
installationId: $func.installationId || undefined,
providerRepositoryId: $func.providerRepositoryId || undefined,
providerBranch: $func.providerBranch || undefined,
providerSilentMode: $func.providerSilentMode || undefined,
providerSilentMode: $func.providerSilentMode ?? undefined,
providerRootDirectory: $func.providerRootDirectory || undefined,
buildSpecification: $func.buildSpecification || undefined
buildSpecification: $func.buildSpecification || undefined,
deploymentRetention: $func.deploymentRetention ?? undefined
});
await invalidate(Dependencies.FUNCTION);
addNotification({
@@ -37,17 +37,18 @@
events: $func.events || undefined,
schedule: $func.schedule || undefined,
timeout: $func.timeout || undefined,
enabled: $func.enabled || undefined,
logging: $func.logging || undefined,
enabled: $func.enabled ?? undefined,
logging: $func.logging ?? undefined,
entrypoint: $func.entrypoint || undefined,
commands: $func.commands || undefined,
scopes: ($func.scopes as Scopes[]) || undefined,
installationId: $func.installationId || undefined,
providerRepositoryId: $func.providerRepositoryId || undefined,
providerBranch: $func.providerBranch || undefined,
providerSilentMode: $func.providerSilentMode || undefined,
providerSilentMode: $func.providerSilentMode ?? undefined,
providerRootDirectory: $func.providerRootDirectory || undefined,
buildSpecification: $func.buildSpecification || undefined
buildSpecification: $func.buildSpecification || undefined,
deploymentRetention: $func.deploymentRetention ?? undefined
});
await invalidate(Dependencies.FUNCTION);
addNotification({
@@ -82,8 +82,8 @@
events: func.events || undefined,
schedule: func.schedule || undefined,
timeout: func.timeout || undefined,
enabled: func.enabled || undefined,
logging: func.logging || undefined,
enabled: func.enabled ?? undefined,
logging: func.logging ?? undefined,
entrypoint: func.entrypoint || undefined,
commands: func.commands || undefined,
scopes: (func.scopes as Scopes[]) || undefined,
@@ -92,7 +92,8 @@
providerBranch: selectedBranch,
providerSilentMode: silentMode,
providerRootDirectory: selectedDir,
buildSpecification: func.buildSpecification || undefined
buildSpecification: func.buildSpecification || undefined,
deploymentRetention: func.deploymentRetention ?? undefined
});
await invalidate(Dependencies.FUNCTION);
addNotification({
@@ -156,8 +157,8 @@
events: func.events || undefined,
schedule: func.schedule || undefined,
timeout: func.timeout || undefined,
enabled: func.enabled || undefined,
logging: func.logging || undefined,
enabled: func.enabled ?? undefined,
logging: func.logging ?? undefined,
entrypoint: func.entrypoint,
commands: func.commands || undefined,
scopes: (func.scopes as Scopes[]) || undefined,
@@ -166,7 +167,8 @@
providerBranch: nextBranch,
providerSilentMode: func.providerSilentMode ?? undefined,
providerRootDirectory: func.providerRootDirectory ?? undefined,
buildSpecification: func.buildSpecification || undefined
buildSpecification: func.buildSpecification || undefined,
deploymentRetention: func.deploymentRetention ?? undefined
});
await invalidate(Dependencies.FUNCTION);
} catch {
@@ -48,18 +48,19 @@
events: func.events || undefined,
schedule: func.schedule || undefined,
timeout: func.timeout || undefined,
enabled: func.enabled || undefined,
logging: func.logging || undefined,
enabled: func.enabled ?? undefined,
logging: func.logging ?? undefined,
entrypoint: func.entrypoint || undefined,
commands: func.commands || undefined,
scopes: (func.scopes as Scopes[]) || undefined,
installationId: func.installationId || undefined,
providerRepositoryId: func.providerRepositoryId || undefined,
providerBranch: func.providerBranch || undefined,
providerSilentMode: func.providerSilentMode || undefined,
providerSilentMode: func.providerSilentMode ?? undefined,
providerRootDirectory: func.providerRootDirectory || undefined,
buildSpecification: buildSpecification || undefined,
runtimeSpecification: runtimeSpecification || undefined
runtimeSpecification: runtimeSpecification || undefined,
deploymentRetention: func.deploymentRetention ?? undefined
});
await invalidate(Dependencies.FUNCTION);
@@ -36,17 +36,18 @@
events: $func.events || undefined,
schedule: $func.schedule || undefined,
timeout: $func.timeout || undefined,
enabled: $func.enabled || undefined,
logging: $func.logging || undefined,
enabled: $func.enabled ?? undefined,
logging: $func.logging ?? undefined,
entrypoint: entrypoint || undefined,
commands: $func.commands || undefined,
scopes: ($func.scopes as Scopes[]) || undefined,
installationId: $func.installationId || undefined,
providerRepositoryId: $func.providerRepositoryId || undefined,
providerBranch: $func.providerBranch || undefined,
providerSilentMode: $func.providerSilentMode || undefined,
providerSilentMode: $func.providerSilentMode ?? undefined,
providerRootDirectory: $func.providerRootDirectory || undefined,
buildSpecification: $func.buildSpecification || undefined
buildSpecification: $func.buildSpecification || undefined,
deploymentRetention: $func.deploymentRetention ?? undefined
});
await invalidate(Dependencies.FUNCTION);
addNotification({
@@ -37,17 +37,18 @@
events: $func.events || undefined,
schedule: functionSchedule,
timeout: $func.timeout || undefined,
enabled: $func.enabled || undefined,
logging: $func.logging || undefined,
enabled: $func.enabled ?? undefined,
logging: $func.logging ?? undefined,
entrypoint: $func.entrypoint || undefined,
commands: $func.commands || undefined,
scopes: ($func.scopes as Scopes[]) || undefined,
installationId: $func.installationId || undefined,
providerRepositoryId: $func.providerRepositoryId || undefined,
providerBranch: $func.providerBranch || undefined,
providerSilentMode: $func.providerSilentMode || undefined,
providerSilentMode: $func.providerSilentMode ?? undefined,
providerRootDirectory: $func.providerRootDirectory || undefined,
buildSpecification: $func.buildSpecification || undefined
buildSpecification: $func.buildSpecification || undefined,
deploymentRetention: $func.deploymentRetention ?? undefined
});
await invalidate(Dependencies.FUNCTION);
addNotification({
@@ -39,17 +39,18 @@
events: $func.events || undefined,
schedule: $func.schedule || undefined,
timeout: $func.timeout || undefined,
enabled: $func.enabled || undefined,
logging: $func.logging || undefined,
enabled: $func.enabled ?? undefined,
logging: $func.logging ?? undefined,
entrypoint: $func.entrypoint || undefined,
commands: $func.commands || undefined,
scopes: (functionScopes as unknown as FunctionScopes[]) || undefined,
installationId: $func.installationId || undefined,
providerRepositoryId: $func.providerRepositoryId || undefined,
providerBranch: $func.providerBranch || undefined,
providerSilentMode: $func.providerSilentMode || undefined,
providerSilentMode: $func.providerSilentMode ?? undefined,
providerRootDirectory: $func.providerRootDirectory || undefined,
buildSpecification: $func.buildSpecification || undefined
buildSpecification: $func.buildSpecification || undefined,
deploymentRetention: $func.deploymentRetention ?? undefined
});
await invalidate(Dependencies.FUNCTION);
addNotification({
@@ -32,17 +32,18 @@
events: $func.events || undefined,
schedule: $func.schedule || undefined,
timeout,
enabled: $func.enabled || undefined,
logging: $func.logging || undefined,
enabled: $func.enabled ?? undefined,
logging: $func.logging ?? undefined,
entrypoint: $func.entrypoint || undefined,
commands: $func.commands || undefined,
scopes: ($func.scopes as Scopes[]) || undefined,
installationId: $func.installationId || undefined,
providerRepositoryId: $func.providerRepositoryId || undefined,
providerBranch: $func.providerBranch || undefined,
providerSilentMode: $func.providerSilentMode || undefined,
providerSilentMode: $func.providerSilentMode ?? undefined,
providerRootDirectory: $func.providerRootDirectory || undefined,
buildSpecification: $func.buildSpecification || undefined
buildSpecification: $func.buildSpecification || undefined,
deploymentRetention: $func.deploymentRetention ?? undefined
});
await invalidate(Dependencies.FUNCTION);
addNotification({
@@ -22,8 +22,8 @@
siteId: site.$id,
name: site.name,
framework: site.framework as Framework,
enabled: site.enabled || undefined,
logging: site.logging || undefined,
enabled: site.enabled ?? undefined,
logging: site.logging ?? undefined,
timeout: site.timeout || undefined,
installCommand: site.installCommand || undefined,
buildCommand: site.buildCommand || undefined,
@@ -35,7 +35,8 @@
installationId: '',
providerRepositoryId: '',
providerBranch: '',
providerRootDirectory: ''
providerRootDirectory: '',
deploymentRetention: site.deploymentRetention ?? undefined
});
await invalidate(Dependencies.SITE);
dispatch('success');
@@ -157,8 +157,8 @@
siteId: site.$id,
name: site.name,
framework: selectedFramework.key as Framework,
enabled: site.enabled || undefined,
logging: site.logging || undefined,
enabled: site.enabled ?? undefined,
logging: site.logging ?? undefined,
timeout: site.timeout || undefined,
installCommand: installCommand || undefined,
buildCommand: buildCommand || undefined,
@@ -170,10 +170,11 @@
installationId: site.installationId || undefined,
providerRepositoryId: site.providerRepositoryId || undefined,
providerBranch: site.providerBranch || undefined,
providerSilentMode: site.providerSilentMode || undefined,
providerSilentMode: site.providerSilentMode ?? undefined,
providerRootDirectory: site.providerRootDirectory || undefined,
buildSpecification: specToSend || undefined,
runtimeSpecification: runtimeSpecToSend || undefined
runtimeSpecification: runtimeSpecToSend || undefined,
deploymentRetention: site.deploymentRetention ?? undefined
});
site.buildSpecification = specToSend;
site.runtimeSpecification = runtimeSpecToSend;
@@ -54,6 +54,7 @@
providerSilentMode: site.providerSilentMode ?? undefined,
providerRootDirectory: site.providerRootDirectory ?? undefined,
buildSpecification: site.buildSpecification ?? undefined,
deploymentRetention: site.deploymentRetention ?? undefined,
providerBranches,
providerPaths
});
@@ -23,8 +23,8 @@
siteId: site.$id,
name: siteName,
framework: site.framework as Framework,
enabled: site?.enabled || undefined,
logging: site?.logging || undefined,
enabled: site?.enabled ?? undefined,
logging: site?.logging ?? undefined,
timeout: site?.timeout || undefined,
installCommand: site?.installCommand || undefined,
buildCommand: site?.buildCommand || undefined,
@@ -36,9 +36,10 @@
installationId: site?.installationId || undefined,
providerRepositoryId: site?.providerRepositoryId || undefined,
providerBranch: site?.providerBranch || undefined,
providerSilentMode: site?.providerSilentMode || undefined,
providerSilentMode: site?.providerSilentMode ?? undefined,
providerRootDirectory: site?.providerRootDirectory || undefined,
buildSpecification: site?.buildSpecification || undefined
buildSpecification: site?.buildSpecification || undefined,
deploymentRetention: site?.deploymentRetention ?? undefined
});
await invalidate(Dependencies.SITE);
addNotification({
@@ -72,8 +72,8 @@
siteId: site.$id,
name: site.name,
framework: site?.framework as Framework,
enabled: site?.enabled || undefined,
logging: site?.logging || undefined,
enabled: site?.enabled ?? undefined,
logging: site?.logging ?? undefined,
timeout: site?.timeout || undefined,
installCommand: site?.installCommand || undefined,
buildCommand: site?.buildCommand || undefined,
@@ -85,9 +85,10 @@
installationId: site?.installationId || undefined,
providerRepositoryId: site?.providerRepositoryId || undefined,
providerBranch: selectedBranch || undefined,
providerSilentMode: silentMode || undefined,
providerSilentMode: silentMode,
providerRootDirectory: selectedDir || undefined,
buildSpecification: site?.buildSpecification || undefined
buildSpecification: site?.buildSpecification || undefined,
deploymentRetention: site?.deploymentRetention ?? undefined
});
await invalidate(Dependencies.SITE);
addNotification({
@@ -139,8 +140,8 @@
siteId: site.$id,
name: site.name,
framework: site.framework as Framework,
enabled: site?.enabled,
logging: site?.logging || undefined,
enabled: site?.enabled ?? undefined,
logging: site?.logging ?? undefined,
timeout: site?.timeout,
installCommand: site?.installCommand,
buildCommand: site?.buildCommand,
@@ -154,7 +155,8 @@
providerBranch: nextBranch,
providerSilentMode: site?.providerSilentMode ?? undefined,
providerRootDirectory: site?.providerRootDirectory ?? undefined,
buildSpecification: site?.buildSpecification || undefined
buildSpecification: site?.buildSpecification || undefined,
deploymentRetention: site?.deploymentRetention ?? undefined
});
invalidate(Dependencies.SITE);
@@ -40,8 +40,8 @@
siteId: site.$id,
name: site.name,
framework: site.framework as Framework,
enabled: site?.enabled || undefined,
logging: site?.logging || undefined,
enabled: site?.enabled ?? undefined,
logging: site?.logging ?? undefined,
timeout: site?.timeout || undefined,
installCommand: site?.installCommand || undefined,
buildCommand: site?.buildCommand || undefined,
@@ -53,10 +53,11 @@
installationId: site?.installationId || undefined,
providerRepositoryId: site?.providerRepositoryId || undefined,
providerBranch: site?.providerBranch || undefined,
providerSilentMode: site?.providerSilentMode || undefined,
providerSilentMode: site?.providerSilentMode ?? undefined,
providerRootDirectory: site?.providerRootDirectory || undefined,
buildSpecification: buildSpecification || undefined,
runtimeSpecification: runtimeSpecification || undefined
runtimeSpecification: runtimeSpecification || undefined,
deploymentRetention: site?.deploymentRetention ?? undefined
});
await invalidate(Dependencies.SITE);
@@ -29,8 +29,8 @@
siteId: site.$id,
name: site.name,
framework: site?.framework as Framework,
enabled: site?.enabled || undefined,
logging: site?.logging || undefined,
enabled: site?.enabled ?? undefined,
logging: site?.logging ?? undefined,
timeout: site?.timeout || undefined,
installCommand: site?.installCommand || undefined,
buildCommand: site?.buildCommand || undefined,
@@ -42,9 +42,10 @@
installationId: site?.installationId || undefined,
providerRepositoryId: site?.providerRepositoryId || undefined,
providerBranch: site?.providerBranch || undefined,
providerSilentMode: site?.providerSilentMode || undefined,
providerSilentMode: site?.providerSilentMode ?? undefined,
providerRootDirectory: site?.providerRootDirectory || undefined,
buildSpecification: site?.buildSpecification || undefined
buildSpecification: site?.buildSpecification || undefined,
deploymentRetention: site?.deploymentRetention ?? undefined
});
await invalidate(Dependencies.SITE);
addNotification({
@@ -22,8 +22,8 @@
siteId: site.$id,
name: site.name,
framework: site?.framework as Framework,
enabled: site?.enabled || undefined,
logging: site?.logging || undefined,
enabled: site?.enabled ?? undefined,
logging: site?.logging ?? undefined,
timeout: timeout || undefined,
installCommand: site?.installCommand || undefined,
buildCommand: site?.buildCommand || undefined,
@@ -35,9 +35,10 @@
installationId: site?.installationId || undefined,
providerRepositoryId: site?.providerRepositoryId || undefined,
providerBranch: site?.providerBranch || undefined,
providerSilentMode: site?.providerSilentMode || undefined,
providerSilentMode: site?.providerSilentMode ?? undefined,
providerRootDirectory: site?.providerRootDirectory || undefined,
buildSpecification: site?.buildSpecification || undefined
buildSpecification: site?.buildSpecification || undefined,
deploymentRetention: site?.deploymentRetention ?? undefined
});
await invalidate(Dependencies.SITE);
addNotification({