refactor(posts): flatten togglePlatform with snapToCompatibleVariant helper

Pull the variant-snap branch out of togglePlatform into a named
helper with guard clauses. togglePlatform now reads top-down:
lock check → deselect short-circuit → snap → select.
This commit is contained in:
Paulo Castellano 2026-05-19 15:15:13 -03:00
parent 2584257ee6
commit 3580d2eaf6

View file

@ -202,24 +202,28 @@ const activeTab = ref(initialTabFromQuery);
const deleteModal = ref<InstanceType<typeof ConfirmDeleteModal> | null>(null);
const editorSidebarRef = ref<InstanceType<typeof PostEditorSidebar> | null>(null);
const snapToCompatibleVariant = (platformId: string) => {
const pp = post.value.post_platforms.find((p) => p.id === platformId);
const current = platformContentTypes.value[platformId];
if (!pp || !current) return;
if (!getMediaIncompatibilityReason(current, media.value)) return;
const fallback = firstCompatibleVariant(pp.platform, media.value);
if (!fallback) return;
platformContentTypes.value = { ...platformContentTypes.value, [platformId]: fallback };
};
const togglePlatform = (platformId: string) => {
if (isLocked.value) return;
const index = selectedPlatformIds.value.indexOf(platformId);
if (index === -1) {
const pp = post.value.post_platforms.find((p) => p.id === platformId);
const currentVariant = platformContentTypes.value[platformId];
const currentIncompatible = pp && currentVariant
&& getMediaIncompatibilityReason(currentVariant, media.value) !== null;
if (pp && currentIncompatible) {
const fallback = firstCompatibleVariant(pp.platform, media.value);
if (fallback) {
platformContentTypes.value = { ...platformContentTypes.value, [platformId]: fallback };
}
}
selectedPlatformIds.value.push(platformId);
} else {
selectedPlatformIds.value.splice(index, 1);
if (selectedPlatformIds.value.includes(platformId)) {
selectedPlatformIds.value = selectedPlatformIds.value.filter((id) => id !== platformId);
return;
}
snapToCompatibleVariant(platformId);
selectedPlatformIds.value.push(platformId);
};
// Save logic