From 2902506f351d1813fa901ab8d8418b1b8ea926e8 Mon Sep 17 00:00:00 2001 From: Paulo Castellano Date: Tue, 19 May 2026 14:27:14 -0300 Subject: [PATCH] refactor(posts): replace status string literals with PostStatus enum Introduce resources/js/types/post.ts mirroring App\Enums\Post\Status and App\Enums\PostPlatform\Status. Replace inline string comparisons across Edit.vue, Show.vue, PostEditorHeader.vue and ScheduleTab.vue. --- .../posts/editor/PostEditorHeader.vue | 10 +++++++--- .../components/posts/editor/ScheduleTab.vue | 13 ++++++------ resources/js/pages/posts/Edit.vue | 20 ++++++++++++------- resources/js/pages/posts/Show.vue | 11 +++++----- resources/js/types/post.ts | 20 +++++++++++++++++++ 5 files changed, 53 insertions(+), 21 deletions(-) create mode 100644 resources/js/types/post.ts diff --git a/resources/js/components/posts/editor/PostEditorHeader.vue b/resources/js/components/posts/editor/PostEditorHeader.vue index efa081f8..d673d841 100644 --- a/resources/js/components/posts/editor/PostEditorHeader.vue +++ b/resources/js/components/posts/editor/PostEditorHeader.vue @@ -5,6 +5,7 @@ import { computed } from 'vue'; import PickTimePopover from '@/components/posts/PickTimePopover.vue'; import { Button } from '@/components/ui/button'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'; +import { PostStatus } from '@/types/post'; interface Props { post: { status: string }; @@ -27,9 +28,12 @@ const emit = defineEmits<{ (e: 'submit', status: string): void; }>(); -const isReadOnly = computed(() => ['publishing', 'published', 'partially_published'].includes(props.post.status)); -const isScheduled = computed(() => props.post.status === 'scheduled'); -const isPublished = computed(() => ['published', 'partially_published'].includes(props.post.status)); +const READONLY_STATUSES: readonly string[] = [PostStatus.Publishing, PostStatus.Published, PostStatus.PartiallyPublished]; +const PUBLISHED_STATUSES: readonly string[] = [PostStatus.Published, PostStatus.PartiallyPublished]; + +const isReadOnly = computed(() => READONLY_STATUSES.includes(props.post.status)); +const isScheduled = computed(() => props.post.status === PostStatus.Scheduled); +const isPublished = computed(() => PUBLISHED_STATUSES.includes(props.post.status));