From fd5bc5271b7e3a7e22d611d69627df95bb0e21d5 Mon Sep 17 00:00:00 2001 From: manukminasyan Date: Fri, 27 Mar 2026 14:53:12 +0400 Subject: [PATCH] refactor: rename for Laravel conventions and better DX - Rename IsCommenter trait to CanComment, Commenter interface to Commentator - Move models to Models/ namespace (Comment, Reaction, Attachment, Subscription) - Rename user_type/user_id polymorphic columns to commenter_type/commenter_id - Rename Config class to CommentsConfig, update config key tables->table_names - Rename getCommentName() to getCommentDisplayName() on commentator models - Add column_names config section for commenter morph customization - Add table_names config with all 5 tables individually configurable - Expand translation file with structured i18n groups - Update all Blade views, Livewire components, events, listeners, and tests --- config/comments.php | 20 ++- database/factories/CommentFactory.php | 2 +- .../create_comment_attachments_table.php.stub | 4 +- .../create_comment_mentions_table.php.stub | 8 +- .../create_comment_reactions_table.php.stub | 8 +- ...reate_comment_subscriptions_table.php.stub | 6 +- .../migrations/create_comments_table.php.stub | 6 +- docs/.data/content/contents.sqlite | Bin 0 -> 307200 bytes resources/lang/en/comments.php | 59 ++++++++- .../views/livewire/comment-item.blade.php | 12 +- resources/views/livewire/comments.blade.php | 10 +- resources/views/livewire/reactions.blade.php | 2 +- src/{Config.php => CommentsConfig.php} | 23 +++- src/CommentsServiceProvider.php | 8 +- .../{IsCommenter.php => CanComment.php} | 4 +- src/Concerns/HasComments.php | 4 +- .../{Commenter.php => Commentator.php} | 4 +- src/Events/CommentCreated.php | 8 +- src/Events/CommentDeleted.php | 8 +- src/Events/CommentReacted.php | 8 +- src/Events/CommentUpdated.php | 8 +- src/Events/UserMentioned.php | 2 +- .../SendCommentRepliedNotification.php | 16 +-- .../SendUserMentionedNotification.php | 16 +-- src/Livewire/CommentItem.php | 22 ++-- src/Livewire/Comments.php | 44 +++---- src/Livewire/Reactions.php | 26 ++-- src/Mentions/DefaultMentionResolver.php | 8 +- src/Mentions/MentionParser.php | 8 +- .../Attachment.php} | 9 +- src/{ => Models}/Comment.php | 33 ++--- .../Reaction.php} | 15 ++- .../Subscription.php} | 27 ++-- .../CommentRepliedNotification.php | 10 +- .../UserMentionedNotification.php | 10 +- src/Policies/CommentPolicy.php | 10 +- tests/Feature/AttachmentUploadTest.php | 40 +++--- tests/Feature/BroadcastingTest.php | 42 +++--- tests/Feature/CommentAttachmentTest.php | 64 ++++----- tests/Feature/CommentEventsTest.php | 16 +-- tests/Feature/CommentItemComponentTest.php | 50 +++---- tests/Feature/CommentReactionTest.php | 50 +++---- tests/Feature/CommentSubscriptionTest.php | 61 +++++---- tests/Feature/CommentTest.php | 62 ++++----- tests/Feature/CommentsActionTest.php | 6 +- tests/Feature/CommentsComponentTest.php | 26 ++-- tests/Feature/CommentsTableActionTest.php | 6 +- tests/Feature/ContentSanitizationTest.php | 34 ++--- tests/Feature/HasCommentsTest.php | 22 ++-- tests/Feature/MentionDisplayTest.php | 26 ++-- tests/Feature/MentionParserTest.php | 18 +-- tests/Feature/MentionSearchTest.php | 6 +- tests/Feature/NotificationIntegrationTest.php | 68 +++++----- tests/Feature/NotificationTest.php | 95 +++++++------- tests/Feature/PollingConfigTest.php | 14 +- tests/Feature/ReactionsTest.php | 122 +++++++++--------- tests/Feature/RichEditorTest.php | 24 ++-- tests/Feature/ServiceProviderTest.php | 12 +- tests/Feature/SubscriptionToggleTest.php | 16 +-- tests/Feature/UserMentionedEventTest.php | 6 +- tests/Models/User.php | 8 +- tests/TestCase.php | 24 ++-- 62 files changed, 733 insertions(+), 653 deletions(-) create mode 100644 docs/.data/content/contents.sqlite rename src/{Config.php => CommentsConfig.php} (86%) rename src/Concerns/{IsCommenter.php => CanComment.php} (87%) rename src/Contracts/{Commenter.php => Commentator.php} (69%) rename src/{CommentAttachment.php => Models/Attachment.php} (76%) rename src/{ => Models}/Comment.php (79%) rename src/{CommentReaction.php => Models/Reaction.php} (54%) rename src/{CommentSubscription.php => Models/Subscription.php} (69%) diff --git a/config/comments.php b/config/comments.php index 0552125..abe18f0 100644 --- a/config/comments.php +++ b/config/comments.php @@ -1,19 +1,29 @@ [ - 'comments' => 'comments', - ], - 'models' => [ 'comment' => Comment::class, ], + 'table_names' => [ + 'comments' => 'comments', + 'reactions' => 'comment_reactions', + 'mentions' => 'comment_mentions', + 'subscriptions' => 'comment_subscriptions', + 'attachments' => 'comment_attachments', + ], + + 'column_names' => [ + 'commenter_morph' => 'commenter', + ], + 'commenter' => [ 'model' => User::class, ], diff --git a/database/factories/CommentFactory.php b/database/factories/CommentFactory.php index 55cdeec..04b50ea 100644 --- a/database/factories/CommentFactory.php +++ b/database/factories/CommentFactory.php @@ -3,7 +3,7 @@ namespace Relaticle\Comments\Database\Factories; use Illuminate\Database\Eloquent\Factories\Factory; -use Relaticle\Comments\Comment; +use Relaticle\Comments\Models\Comment; class CommentFactory extends Factory { diff --git a/database/migrations/create_comment_attachments_table.php.stub b/database/migrations/create_comment_attachments_table.php.stub index a04f830..0e3c65f 100644 --- a/database/migrations/create_comment_attachments_table.php.stub +++ b/database/migrations/create_comment_attachments_table.php.stub @@ -8,10 +8,10 @@ return new class extends Migration { public function up(): void { - Schema::create('comment_attachments', function (Blueprint $table) { + Schema::create(config('comments.table_names.attachments', 'comment_attachments'), function (Blueprint $table) { $table->id(); $table->foreignId('comment_id') - ->constrained(config('comments.tables.comments', 'comments')) + ->constrained(config('comments.table_names.comments', 'comments')) ->cascadeOnDelete(); $table->string('file_path'); $table->string('original_name'); diff --git a/database/migrations/create_comment_mentions_table.php.stub b/database/migrations/create_comment_mentions_table.php.stub index f48e957..787b1e5 100644 --- a/database/migrations/create_comment_mentions_table.php.stub +++ b/database/migrations/create_comment_mentions_table.php.stub @@ -8,15 +8,15 @@ return new class extends Migration { public function up(): void { - Schema::create('comment_mentions', function (Blueprint $table) { + Schema::create(config('comments.table_names.mentions', 'comment_mentions'), function (Blueprint $table) { $table->id(); $table->foreignId('comment_id') - ->constrained(config('comments.tables.comments', 'comments')) + ->constrained(config('comments.table_names.comments', 'comments')) ->cascadeOnDelete(); - $table->morphs('user'); + $table->morphs('commenter'); $table->timestamps(); - $table->unique(['comment_id', 'user_id', 'user_type']); + $table->unique(['comment_id', 'commenter_id', 'commenter_type']); }); } }; diff --git a/database/migrations/create_comment_reactions_table.php.stub b/database/migrations/create_comment_reactions_table.php.stub index 79422c2..5a9eb54 100644 --- a/database/migrations/create_comment_reactions_table.php.stub +++ b/database/migrations/create_comment_reactions_table.php.stub @@ -8,16 +8,16 @@ return new class extends Migration { public function up(): void { - Schema::create('comment_reactions', function (Blueprint $table) { + Schema::create(config('comments.table_names.reactions', 'comment_reactions'), function (Blueprint $table) { $table->id(); $table->foreignId('comment_id') - ->constrained(config('comments.tables.comments', 'comments')) + ->constrained(config('comments.table_names.comments', 'comments')) ->cascadeOnDelete(); - $table->morphs('user'); + $table->morphs('commenter'); $table->string('reaction'); $table->timestamps(); - $table->unique(['comment_id', 'user_id', 'user_type', 'reaction']); + $table->unique(['comment_id', 'commenter_id', 'commenter_type', 'reaction']); }); } }; diff --git a/database/migrations/create_comment_subscriptions_table.php.stub b/database/migrations/create_comment_subscriptions_table.php.stub index f5872b9..6c1861b 100644 --- a/database/migrations/create_comment_subscriptions_table.php.stub +++ b/database/migrations/create_comment_subscriptions_table.php.stub @@ -8,13 +8,13 @@ return new class extends Migration { public function up(): void { - Schema::create('comment_subscriptions', function (Blueprint $table) { + Schema::create(config('comments.table_names.subscriptions', 'comment_subscriptions'), function (Blueprint $table) { $table->id(); $table->morphs('commentable'); - $table->morphs('user'); + $table->morphs('commenter'); $table->timestamp('created_at')->nullable(); - $table->unique(['commentable_type', 'commentable_id', 'user_type', 'user_id'], 'comment_subscriptions_unique'); + $table->unique(['commentable_type', 'commentable_id', 'commenter_type', 'commenter_id'], 'comment_subscriptions_unique'); }); } }; diff --git a/database/migrations/create_comments_table.php.stub b/database/migrations/create_comments_table.php.stub index 80c0694..eaaa5df 100644 --- a/database/migrations/create_comments_table.php.stub +++ b/database/migrations/create_comments_table.php.stub @@ -8,13 +8,13 @@ return new class extends Migration { public function up(): void { - Schema::create(config('comments.tables.comments', 'comments'), function (Blueprint $table) { + Schema::create(config('comments.table_names.comments', 'comments'), function (Blueprint $table) { $table->id(); $table->morphs('commentable'); - $table->morphs('user'); + $table->morphs('commenter'); $table->foreignId('parent_id') ->nullable() - ->constrained(config('comments.tables.comments', 'comments')) + ->constrained(config('comments.table_names.comments', 'comments')) ->cascadeOnDelete(); $table->text('body'); $table->timestamp('edited_at')->nullable(); diff --git a/docs/.data/content/contents.sqlite b/docs/.data/content/contents.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..178b545d49bd60044c12eb72b503744ce2c45202 GIT binary patch literal 307200 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 'This comment was deleted.', - 'edited' => 'edited', - 'load_more' => 'Load more comments', - 'no_comments' => 'No comments yet.', - 'comment_placeholder' => 'Write a comment...', + 'comments' => [ + 'deleted' => 'This comment was deleted.', + 'edited' => 'edited', + 'no_comments' => 'No comments yet.', + 'placeholder' => 'Write a comment...', + 'load_more' => 'Load more comments', + 'sort_newest' => 'Newest first', + 'sort_oldest' => 'Oldest first', + ], + + 'actions' => [ + 'reply' => 'Reply', + 'edit' => 'Edit', + 'delete' => 'Delete', + 'cancel' => 'Cancel', + 'save' => 'Save', + 'submit' => 'Submit', + ], + + 'reactions' => [ + 'thumbs_up' => 'Thumbs up', + 'heart' => 'Heart', + 'celebrate' => 'Celebrate', + 'laugh' => 'Laugh', + 'thinking' => 'Thinking', + 'sad' => 'Sad', + 'reacted_by' => ':names reacted with :reaction', + 'and_others' => 'and :count others', + ], + + 'subscriptions' => [ + 'subscribe' => 'Subscribe to replies', + 'unsubscribe' => 'Unsubscribe from replies', + 'subscribed' => 'You will be notified of new replies.', + 'unsubscribed' => 'You will no longer be notified.', + ], + + 'mentions' => [ + 'no_results' => 'No users found', + ], + + 'attachments' => [ + 'add' => 'Add attachment', + 'remove' => 'Remove', + 'too_large' => 'File is too large. Maximum size: :max KB.', + 'invalid_type' => 'File type not allowed.', + ], + + 'notifications' => [ + 'reply_subject' => 'New reply to your comment', + 'reply_body' => ':name replied to your comment.', + 'mention_subject' => 'You were mentioned in a comment', + 'mention_body' => ':name mentioned you in a comment.', + ], ]; diff --git a/resources/views/livewire/comment-item.blade.php b/resources/views/livewire/comment-item.blade.php index 2d5e06e..4ab5981 100644 --- a/resources/views/livewire/comment-item.blade.php +++ b/resources/views/livewire/comment-item.blade.php @@ -3,11 +3,11 @@
@if ($comment->trashed())
- @elseif ($comment->user?->getCommentAvatarUrl()) - {{ $comment->user->getCommentName() }} + @elseif ($comment->commenter?->getCommentAvatarUrl()) + {{ $comment->commenter->getCommentDisplayName() }} @else
- {{ str($comment->user?->getCommentName() ?? '?')->substr(0, 1)->upper() }} + {{ str($comment->commenter?->getCommentDisplayName() ?? '?')->substr(0, 1)->upper() }}
@endif
@@ -20,7 +20,7 @@ {{-- Header: name + timestamp --}}
- {{ $comment->user?->getCommentName() ?? 'Unknown' }} + {{ $comment->commenter?->getCommentDisplayName() ?? 'Unknown' }} {{ $comment->created_at->diffForHumans() }} @@ -200,14 +200,14 @@

{{ $message }}

@enderror - @if (\Relaticle\Comments\Config::areAttachmentsEnabled()) + @if (\Relaticle\Comments\CommentsConfig::areAttachmentsEnabled())
diff --git a/resources/views/livewire/comments.blade.php b/resources/views/livewire/comments.blade.php index 6ea7fa7..1eb4aab 100644 --- a/resources/views/livewire/comments.blade.php +++ b/resources/views/livewire/comments.blade.php @@ -1,6 +1,6 @@
{{-- Sort toggle --}} @@ -59,7 +59,7 @@ {{-- New comment form - only for authorized users --}} @auth - @can('create', \Relaticle\Comments\Config::getCommentModel()) + @can('create', \Relaticle\Comments\CommentsConfig::getCommentModel())
{{ $message }}

@enderror - @if (\Relaticle\Comments\Config::areAttachmentsEnabled()) + @if (\Relaticle\Comments\CommentsConfig::areAttachmentsEnabled())
diff --git a/resources/views/livewire/reactions.blade.php b/resources/views/livewire/reactions.blade.php index 49ac295..e5e92b3 100644 --- a/resources/views/livewire/reactions.blade.php +++ b/resources/views/livewire/reactions.blade.php @@ -25,7 +25,7 @@ {{-- Emoji picker dropdown --}}
- @foreach (\Relaticle\Comments\Config::getReactionEmojiSet() as $key => $emoji) + @foreach (\Relaticle\Comments\CommentsConfig::getReactionEmojiSet() as $key => $emoji)