[COMPONENT][Posting] Add storeLocalPage

Minor refactoring and bug fixing
This commit is contained in:
Diogo Peralta Cordeiro 2022-02-16 06:58:11 +00:00
parent 2d5fac7a89
commit cee2d143c9
No known key found for this signature in database
GPG Key ID: 18D2D35001FBFAB0
2 changed files with 41 additions and 14 deletions

View File

@ -27,6 +27,7 @@ use App\Core\ActorLocalRoles;
use App\Core\Controller;
use App\Core\Event;
use App\Core\Form;
use Symfony\Component\HttpFoundation\RedirectResponse;
use function App\Core\I18n\_m;
use App\Core\Router\Router;
use App\Core\VisibilityScope;
@ -138,7 +139,7 @@ class Post extends Controller
$extra_args = [];
Event::handle('AddExtraArgsToNoteContent', [$request, $actor, $data, &$extra_args, $form_params, $form]);
Posting::storeLocalNote(
$note = Posting::storeLocalPage(
actor: $actor,
content: $data['content'],
content_type: $content_type,
@ -150,19 +151,7 @@ class Post extends Controller
process_note_content_extra_args: $extra_args,
);
try {
if ($request->query->has('from')) {
$from = $request->query->get('from');
if (str_contains($from, '#')) {
[$from, $fragment] = explode('#', $from);
}
Router::match($from);
throw new RedirectException(url: $from . (isset($fragment) ? '#' . $fragment : ''));
}
} catch (ResourceNotFoundException $e) {
// continue
}
throw new RedirectException();
return new RedirectResponse($note->getConversationUrl());
}
} catch (FormSizeFileException $e) {
throw new ClientException(_m('Invalid file size given'), previous: $e);

View File

@ -210,6 +210,44 @@ class Posting extends Component
return Event::next;
}
/**
* @throws DuplicateFoundException
* @throws ClientException
* @throws ServerException
*/
public static function storeLocalPage(
Actor $actor,
?string $content,
string $content_type,
?string $locale = null,
?VisibilityScope $scope = null,
array $targets = [],
null|int|Note $reply_to = null,
array $attachments = [],
array $processed_attachments = [],
array $process_note_content_extra_args = [],
bool $notify = true,
?string $rendered = null,
string $source = 'web',
): Note {
$note = self::storeLocalNote(
actor: $actor,
content: $content,
content_type: $content_type,
locale: $locale,
scope: $scope,
targets: $targets,
reply_to: $reply_to,
attachments: $attachments,
processed_attachments: $processed_attachments,
process_note_content_extra_args: $process_note_content_extra_args,
notify: $notify,
rendered: $rendered,
source: $source
);
return $note->setType(NoteType::PAGE);
}
/**
* Store the given note with $content and $attachments, created by
* $actor_id, possibly as a reply to note $reply_to and with flag