is_dry_run) { return NodeRunResult::completed(output: [ 'publish' => ['mode' => $mode->value, 'post_id' => null, 'dry_run' => true], ]); } $post = $run->generatedPost; if ($post === null) { return NodeRunResult::failed(__('automations.errors.no_generated_post')); } match ($mode) { Mode::Now => $this->publishNow($post), Mode::Scheduled => $this->schedule($post, (int) data_get($config, 'scheduled_offset')), Mode::Draft => null, }; return NodeRunResult::completed(output: [ 'publish' => ['mode' => $mode->value, 'post_id' => $post->id], ]); } private function publishNow(Post $post): void { $post->update(['status' => PostStatus::Publishing]); PublishPost::dispatch($post); } private function schedule(Post $post, int $offsetMinutes): void { $post->update([ 'status' => PostStatus::Scheduled, 'scheduled_at' => now()->addMinutes($offsetMinutes), ]); } }