| @@ -3,7 +3,7 @@ |
| 3 | * Upload : le serveur donne les valeurs par défaut, l'envoi et le rendu ; ce qui est saisi ici va dans | 3 | * Upload : le serveur donne les valeurs par défaut, l'envoi et le rendu ; ce qui est saisi ici va dans |
| 4 | * project.publish et l'emporte aussitôt, sans attendre la relecture. | 4 | * project.publish et l'emporte aussitôt, sans attendre la relecture. |
| 5 | */ | 5 | */ |
| 6 | -import { computed, ref, type Ref } from "vue"; | 6 | +import { computed, ref, toRaw, type Ref } from "vue"; |
| 7 | import { api, post } from "../../../lib/api"; | 7 | import { api, post } from "../../../lib/api"; |
| 8 | import { usePolling, usePref } from "../../../lib/composables"; | 8 | import { usePolling, usePref } from "../../../lib/composables"; |
| 9 | import { t } from "../../../i18n"; | 9 | import { t } from "../../../i18n"; |
| @@ -91,7 +91,8 @@ export function usePublish(project: Ref<Project>) { |
| 91 | })); | 91 | })); |
| 92 | | 92 | |
| 93 | function write(change: (p: Required<PublishData>) => void, delay = 500): void { | 93 | function write(change: (p: Required<PublishData>) => void, delay = 500): void { |
| 94 | - const next = structuredClone({ videos: {}, pub: {}, ...saved() }) as Required<PublishData>; | 94 | + // les objets réactifs ne se clonent pas : on clone l'objet brut |
| | 95 | + const next = structuredClone({ videos: {}, pub: {}, ...toRaw(saved()) }) as Required<PublishData>; |
| 95 | change(next); | 96 | change(next); |
| 96 | update({ publish: next }, delay); | 97 | update({ publish: next }, delay); |
| 97 | } | 98 | } |