diff --git a/app/Helpers/UserAvatarGenerator.php b/app/Helpers/UserAvatarGenerator.php new file mode 100644 index 0000000..839f24f --- /dev/null +++ b/app/Helpers/UserAvatarGenerator.php @@ -0,0 +1,49 @@ +generateUuid()}.svg"; + + Storage::put($path, $this->generate($user)); + + return $path; + } + + protected function generate(User $user): SVG + { + return $this->generator->rounded() + ->background($this->getRandomColor()) + ->color("#F4F8FD") + ->smooth() + ->generateSvg($user->name); + } + + protected function getRandomColor(): string + { + $colors = config("colors"); + + return Arr::random($colors); + } + + protected function generateUuid(): string + { + return Str::uuid()->toString(); + } +} \ No newline at end of file diff --git a/app/Observers/UserObserver.php b/app/Observers/UserObserver.php index c26e6bf..32f6f9c 100644 --- a/app/Observers/UserObserver.php +++ b/app/Observers/UserObserver.php @@ -4,21 +4,20 @@ declare(strict_types=1); namespace Toby\Observers; -use Illuminate\Support\Arr; use Illuminate\Support\Facades\Storage; -use LasseRafn\InitialAvatarGenerator\InitialAvatar; +use Toby\Helpers\UserAvatarGenerator; use Toby\Models\User; class UserObserver { public function __construct( - protected InitialAvatar $generator, + protected UserAvatarGenerator $generator, ) { } public function created(User $user): void { - $user->avatar = $this->generateAvatar($user); + $user->avatar = $this->generator->generateFor($user); $user->save(); } @@ -26,7 +25,8 @@ class UserObserver public function updating(User $user): void { if ($user->isDirty("name")) { - $user->avatar = $this->generateAvatar($user); + Storage::delete($user->avatar); + $user->avatar = $this->generator->generateFor($user); } } @@ -34,20 +34,4 @@ class UserObserver { Storage::delete($user->avatar); } - - protected function generateAvatar(User $user): string - { - $path = "avatars/{$user->id}.svg"; - - Storage::put($path, $this->generator->rounded()->background($this->getRandomColor())->color("#F4F8FD")->smooth()->generateSvg($user->name)); - - return $path; - } - - protected function getRandomColor(): string - { - $colors = config("colors"); - - return Arr::random($colors); - } }