Merge pull request #4668 from pixelfed/staging

Staging
This commit is contained in:
daniel 2023-09-25 04:33:03 -06:00 committed by GitHub
commit 7fdb87ef9b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 145 additions and 4 deletions

View file

@ -18,6 +18,9 @@
- Update StatusService, hydrate accounts on request instead of caching them along with status objects ([223661ec](https://github.com/pixelfed/pixelfed/commit/223661ec))
- Update profile embed, fix resize ([dc23c21d](https://github.com/pixelfed/pixelfed/commit/dc23c21d))
- Update Status model, improve thumb logic ([d969a973](https://github.com/pixelfed/pixelfed/commit/d969a973))
- Update Status model, allow unlisted thumbnails ([1f0a45b7](https://github.com/pixelfed/pixelfed/commit/1f0a45b7))
- Update StatusTagsPipeline, fix object tags and slug normalization ([d295e605](https://github.com/pixelfed/pixelfed/commit/d295e605))
- ([](https://github.com/pixelfed/pixelfed/commit/))
- ([](https://github.com/pixelfed/pixelfed/commit/))
## [v0.11.9 (2023-08-21)](https://github.com/pixelfed/pixelfed/compare/v0.11.8...v0.11.9)

View file

@ -45,6 +45,11 @@ class StatusTagsPipeline implements ShouldQueue
{
$res = $this->activity;
$status = $this->status;
if(isset($res['tag']['type'], $res['tag']['name'])) {
$res['tag'] = [$res['tag']];
}
$tags = collect($res['tag']);
// Emoji
@ -73,19 +78,19 @@ class StatusTagsPipeline implements ShouldQueue
if(config('database.default') === 'pgsql') {
$hashtag = Hashtag::where('name', 'ilike', $name)
->orWhere('slug', 'ilike', str_slug($name))
->orWhere('slug', 'ilike', str_slug($name, '-', false))
->first();
if(!$hashtag) {
$hashtag = new Hashtag;
$hashtag->name = $name;
$hashtag->slug = str_slug($name);
$hashtag->slug = str_slug($name, '-', false);
$hashtag->save();
}
} else {
$hashtag = Hashtag::firstOrCreate([
'slug' => str_slug($name)
], [
'slug' => str_slug($name, '-', false),
],[
'name' => $name
]);
}

View file

@ -0,0 +1,133 @@
<?php
namespace Tests\Unit;
use PHPUnit\Framework\TestCase;
class ActivityPubTagObjectTest extends TestCase
{
/**
* A basic unit test example.
*/
public function test_gotosocial(): void
{
$res = [
"tag" => [
"href" => "https://gotosocial.example.org/users/GotosocialUser",
"name" => "@GotosocialUser@gotosocial.example.org",
"type" => "Mention"
]
];
if(isset($res['tag']['type'], $res['tag']['name'])) {
$res['tag'] = [$res['tag']];
}
$tags = collect($res['tag'])
->filter(function($tag) {
return $tag &&
$tag['type'] == 'Mention' &&
isset($tag['href']) &&
substr($tag['href'], 0, 8) === 'https://';
});
$this->assertTrue($tags->count() === 1);
}
public function test_pixelfed_hashtags(): void
{
$res = [
"tag" => [
[
"type" => "Mention",
"href" => "https://pixelfed.social/dansup",
"name" => "@dansup@pixelfed.social"
],
[
"type" => "Hashtag",
"href" => "https://pixelfed.social/discover/tags/dogsofpixelfed",
"name" => "#dogsOfPixelFed"
],
[
"type" => "Hashtag",
"href" => "https://pixelfed.social/discover/tags/doggo",
"name" => "#doggo"
],
[
"type" => "Hashtag",
"href" => "https://pixelfed.social/discover/tags/dog",
"name" => "#dog"
],
[
"type" => "Hashtag",
"href" => "https://pixelfed.social/discover/tags/drake",
"name" => "#drake"
],
[
"type" => "Hashtag",
"href" => "https://pixelfed.social/discover/tags/blacklab",
"name" => "#blacklab"
],
[
"type" => "Hashtag",
"href" => "https://pixelfed.social/discover/tags/iconic",
"name" => "#Iconic"
],
[
"type" => "Hashtag",
"href" => "https://pixelfed.social/discover/tags/majestic",
"name" => "#majestic"
]
]
];
if(isset($res['tag']['type'], $res['tag']['name'])) {
$res['tag'] = [$res['tag']];
}
$tags = collect($res['tag'])
->filter(function($tag) {
return $tag &&
$tag['type'] == 'Hashtag' &&
isset($tag['href']) &&
substr($tag['href'], 0, 8) === 'https://';
});
$this->assertTrue($tags->count() === 7);
}
public function test_pixelfed_mentions(): void
{
$res = [
"tag" => [
[
"type" => "Mention",
"href" => "https://pixelfed.social/dansup",
"name" => "@dansup@pixelfed.social"
],
[
"type" => "Hashtag",
"href" => "https://pixelfed.social/discover/tags/dogsofpixelfed",
"name" => "#dogsOfPixelFed"
],
[
"type" => "Hashtag",
"href" => "https://pixelfed.social/discover/tags/doggo",
"name" => "#doggo"
],
]
];
if(isset($res['tag']['type'], $res['tag']['name'])) {
$res['tag'] = [$res['tag']];
}
$tags = collect($res['tag'])
->filter(function($tag) {
return $tag &&
$tag['type'] == 'Mention' &&
isset($tag['href']) &&
substr($tag['href'], 0, 8) === 'https://';
});
$this->assertTrue($tags->count() === 1);
}
}