Unverified Commit 9d23c7e7 authored by Yassine Doghri's avatar Yassine Doghri
Browse files

fix(avatar): use default avatar when no avatar url has been set

- get avatar and cover urls from entity: if no image exists, retrieve the default ones.
- always
set icon and image in actor object: set the default ones if podcast hasn't set them.

fixes #111
parent e2b85a1d
Loading
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -11,4 +11,15 @@ class ActivityPub extends ActivityPubBase
     */
    public $actorObject = 'App\Libraries\PodcastActor';
    public $noteObject = 'App\Libraries\NoteObject';

    /**
     * --------------------------------------------------------------------
     * Default avatar and cover images
     * --------------------------------------------------------------------
     */
    public $defaultAvatarImagePath = 'assets/images/castopod-avatar-default.jpg';
    public $defaultAvatarImageMimetype = 'image/jpeg';

    public $defaultCoverImagePath = 'assets/images/castopod-cover-default.jpg';
    public $defaultCoverImageMimetype = 'image/jpeg';
}
+11 −0
Original line number Diff line number Diff line
@@ -19,4 +19,15 @@ class ActivityPub extends BaseConfig
     */
    public $actorObject = 'ActivityPub\Objects\ActorObject';
    public $noteObject = 'ActivityPub\Objects\NoteObject';

    /**
     * --------------------------------------------------------------------
     * Default avatar and cover images
     * --------------------------------------------------------------------
     */
    public $defaultAvatarImagePath = 'assets/images/avatar-default.jpg';
    public $defaultAvatarImageMimetype = 'image/jpeg';

    public $defaultCoverImagePath = 'assets/images/cover-default.jpg';
    public $defaultCoverImageMimetype = 'image/jpeg';
}
+2 −0
Original line number Diff line number Diff line
@@ -54,12 +54,14 @@ class AddActors extends Migration
            'avatar_image_url' => [
                'type' => 'VARCHAR',
                'constraint' => 255,
                'null' => true,
            ],
            // constraint is 13 because the longest safe mimetype for images is image/svg+xml,
            // see https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#image_types
            'avatar_image_mimetype' => [
                'type' => 'VARCHAR',
                'constraint' => 13,
                'null' => true,
            ],
            'cover_image_url' => [
                'type' => 'VARCHAR',
+38 −2
Original line number Diff line number Diff line
@@ -36,8 +36,8 @@ class Actor extends Entity
        'summary' => '?string',
        'private_key' => '?string',
        'public_key' => '?string',
        'avatar_image_url' => 'string',
        'avatar_image_mimetype' => 'string',
        'avatar_image_url' => '?string',
        'avatar_image_mimetype' => '?string',
        'cover_image_url' => '?string',
        'cover_image_mimetype' => '?string',
        'inbox_url' => 'string',
@@ -81,4 +81,40 @@ class Actor extends Entity

        return $this->followers;
    }

    public function getAvatarImageUrl()
    {
        if (empty($this->attributes['avatar_image_url'])) {
            return base_url(config('ActivityPub')->defaultAvatarImagePath);
        }

        return $this->attributes['avatar_image_url'];
    }

    public function getAvatarImageMimetype()
    {
        if (empty($this->attributes['avatar_image_mimetype'])) {
            return config('ActivityPub')->defaultAvatarImageMimetype;
        }

        return $this->attributes['avatar_image_mimetype'];
    }

    public function getCoverImageUrl()
    {
        if (empty($this->attributes['cover_image_url'])) {
            return base_url(config('ActivityPub')->defaultCoverImagePath);
        }

        return $this->attributes['cover_image_url'];
    }

    public function getCoverImageMimetype()
    {
        if (empty($this->attributes['cover_image_mimetype'])) {
            return config('ActivityPub')->defaultCoverImageMimetype;
        }

        return $this->attributes['cover_image_mimetype'];
    }
}
+6 −7
Original line number Diff line number Diff line
@@ -91,13 +91,12 @@ class ActorObject extends ObjectType
        $this->outbox = $actor->outbox_url;
        $this->followers = $actor->followers_url;

        if ($actor->cover_image_url) {
        $this->image = [
            'type' => 'Image',
            'mediaType' => $actor->cover_image_mimetype,
            'url' => $actor->cover_image_url,
        ];
        }

        $this->icon = [
            'type' => 'Image',
            'mediaType' => $actor->avatar_image_mimetype,
Loading