*/ protected function getDefaultHeaderActions(): array { return [ $this->getCancelFormAction()->formId('form'), $this->getCreateFormAction()->formId('form'), ]; } protected function getFormActions(): array { return []; } protected function mutateFormDataBeforeCreate(array $data): array { if (($data['type'] ?? null) === WebhookType::Discord->value) { $embeds = data_get($data, 'embeds', []); foreach ($embeds as &$embed) { $embed['color'] = hexdec(str_replace('#', '', data_get($embed, 'color'))); $embed = collect($embed)->filter(fn ($key) => is_array($key) ? array_filter($key, fn ($arr_key) => !empty($arr_key)) : !empty($key))->all(); } $flags = collect($data['flags'] ?? [])->reduce(fn ($carry, $bit) => $carry | $bit, 0); $tmp = collect([ 'username' => data_get($data, 'username'), 'avatar_url' => data_get($data, 'avatar_url'), 'content' => data_get($data, 'content'), 'image' => data_get($data, 'image'), 'thumbnail' => data_get($data, 'thumbnail'), 'embeds' => $embeds, 'thread_name' => data_get($data, 'thread_name'), 'flags' => $flags, 'allowed_mentions' => data_get($data, 'allowed_mentions', []), ])->filter(fn ($key) => !empty($key))->all(); unset($data['username'], $data['avatar_url'], $data['content'], $data['image'], $data['thumbnail'], $data['embeds'], $data['thread_name'], $data['flags'], $data['allowed_mentions']); $data['payload'] = $tmp; } return $data; } }