Skip to content

feat: [LAR-131] update locale selector #256

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Dec 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/Actions/Discussion/ConvertDiscussionToThreadAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public function execute(Discussion $discussion): Thread

$discussion->delete();

app(NotifyUsersOfThreadConversion::class)->execute($thread);
app(NotifyUsersOfThreadConversionAction::class)->execute($thread);

return $thread;
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

declare(strict_types=1);

namespace App\Actions\Replies;
namespace App\Actions\Discussion;

use App\Events\CommentWasAdded;
use App\Gamify\Points\ReplyCreated;
use App\Models\Reply;
use App\Models\User;
use Illuminate\Database\Eloquent\Model;

final class CreateReply
final class CreateDiscussionReplyAction
{
public function __invoke(string $body, User $user, Model $model): Reply
{
Expand All @@ -22,7 +22,7 @@ public function __invoke(string $body, User $user, Model $model): Reply
$user->givePoint(new ReplyCreated($model, $user));

// On envoie un event pour une nouvelle réponse à tous les abonnés de la discussion
event(new CommentWasAdded($reply, $model)); // @phpstan-ignore-line
event(new CommentWasAdded($reply, $model)); // @phpstan-ignore-line

return $reply;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

declare(strict_types=1);

namespace App\Actions\Replies;
namespace App\Actions\Discussion;

use App\Models\Reaction;
use App\Models\Reply;
use App\Models\User;

final class LikeReply
final class LikeReplyAction
{
public function __invoke(User $user, Reply $reply, string $reaction = 'love'): void
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
use App\Notifications\ThreadConvertedByCreator;
use Illuminate\Support\Facades\Auth;

final class NotifyUsersOfThreadConversion
final class NotifyUsersOfThreadConversionAction
{
public function execute(Thread $thread): void
{
Expand Down
2 changes: 1 addition & 1 deletion app/Http/Controllers/SubscriptionController.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public function unsubscribe(Subscribe $subscription): RedirectResponse

session()->flash('status', __('Vous êtes maintenant désabonné de ce sujet.'));

return redirect()->route('forum.show', $thread->slug());
return redirect()->route('forum.show', $thread->slug);
}

public function redirect(int $id, string $type): RedirectResponse
Expand Down
5 changes: 1 addition & 4 deletions app/Livewire/Components/ChangeLocale.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@

use Illuminate\Contracts\View\View;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Pluralizer;
use Livewire\Attributes\Computed;
use Livewire\Component;

Expand All @@ -31,9 +30,7 @@ public function changeLocale(): void
app()->setLocale($locale);
session()->put('locale', $locale);

Pluralizer::useLanguage($this->currentLocale === 'fr' ? 'french' : 'english');

$this->redirectRoute('home', navigate: true);
$this->redirect(url()->previous(), navigate: true);
}

#[Computed]
Expand Down
4 changes: 2 additions & 2 deletions app/Livewire/Components/Discussion/Comment.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace App\Livewire\Components\Discussion;

use App\Actions\Replies\LikeReply;
use App\Actions\Discussion\LikeReplyAction;
use App\Models\Reply;
use Filament\Notifications\Notification;
use Illuminate\Contracts\View\View;
Expand Down Expand Up @@ -32,7 +32,7 @@ public function toggleLike(): void
{
$this->authorize('like', $this->comment);

app()->call(LikeReply::class, [
app()->call(LikeReplyAction::class, [
'user' => auth()->user(),
'reply' => $this->comment,
]);
Expand Down
4 changes: 2 additions & 2 deletions app/Livewire/Components/Discussion/Comments.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace App\Livewire\Components\Discussion;

use App\Actions\Replies\CreateReply;
use App\Actions\Discussion\CreateDiscussionReplyAction;
use App\Models\Discussion;
use App\Models\Reply;
use Filament\Forms;
Expand Down Expand Up @@ -52,7 +52,7 @@ public function save(): void
{
$this->validate();

app()->call(CreateReply::class, [
app()->call(CreateDiscussionReplyAction::class, [
'body' => data_get($this->form->getState(), 'body'),
'user' => Auth::user(),
'model' => $this->discussion,
Expand Down
12 changes: 12 additions & 0 deletions app/Livewire/Components/Slideovers/ArticleForm.php
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,18 @@ public function form(Form $form): Form
Forms\Components\Group::make()
->schema([
Forms\Components\MarkdownEditor::make('body')
->toolbarButtons([
'attachFiles',
'blockquote',
'bold',
'bulletList',
'codeBlock',
'italic',
'link',
'orderedList',
'strike',
'table',
])
->label(__('validation.attributes.content'))
->fileAttachmentsDisk('public')
->minLength(10)
Expand Down
10 changes: 9 additions & 1 deletion app/Livewire/Pages/Articles/Index.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,30 @@
use App\Models\Article;
use App\Models\Tag;
use App\Traits\WithInfiniteScroll;
use App\Traits\WithLocale;
use Illuminate\Contracts\View\View;
use Livewire\Component;

final class Index extends Component
{
use WithInfiniteScroll;
use WithLocale;

public function mount(): void
{
$this->locale = config('app.locale');
}

public function render(): View
{
return view('livewire.pages.articles.index', [
'articles' => Article::with(['tags', 'user', 'user.transactions'])
'articles' => Article::with(['tags', 'user', 'user.transactions']) // @phpstan-ignore-line
->withCount(['views', 'reactions'])
->orderByDesc('sponsored_at')
->orderByDesc('published_at')
->published()
->notPinned()
->forLocale($this->locale)
->paginate($this->perPage),
'tags' => Tag::query()->whereHas('articles', function ($query): void {
$query->published();
Expand Down
10 changes: 9 additions & 1 deletion app/Livewire/Pages/Articles/SingleTag.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,26 @@
use App\Models\Article;
use App\Models\Tag;
use App\Traits\WithInfiniteScroll;
use App\Traits\WithLocale;
use Illuminate\Contracts\View\View;
use Livewire\Component;

final class SingleTag extends Component
{
use WithInfiniteScroll;
use WithLocale;

public Tag $tag;

public function mount(): void
{
$this->locale = config('app.locale');
}

public function render(): View
{
return view('livewire.pages.articles.tag', [
'articles' => Article::with(['tags', 'user', 'user.transactions'])
'articles' => Article::with(['tags', 'user', 'user.transactions']) // @phpstan-ignore-line
->whereHas('tags', function ($query): void {
$query->where('id', $this->tag->id);
})
Expand All @@ -28,6 +35,7 @@ public function render(): View
->orderByDesc('published_at')
->published()
->notPinned()
->forLocale($this->locale)
->paginate($this->perPage),
])->title($this->tag->name);
}
Expand Down
10 changes: 9 additions & 1 deletion app/Livewire/Pages/Discussions/Index.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use App\Models\Builders\DiscussionQueryBuilder;
use App\Models\Discussion;
use App\Models\Tag;
use App\Traits\WithLocale;
use Illuminate\Contracts\View\View;
use Livewire\Attributes\Url;
use Livewire\Component;
Expand All @@ -15,6 +16,7 @@

final class Index extends Component
{
use WithLocale;
use WithoutUrlPagination;
use WithPagination;

Expand All @@ -23,6 +25,11 @@ final class Index extends Component

public string $sortBy = 'recent';

public function mount(): void
{
$this->locale = config('app.locale');
}

public function validSort(string $sort): bool
{
return in_array($sort, [
Expand Down Expand Up @@ -50,8 +57,9 @@ public function tagExists(string $tag): bool
public function render(): View
{
/** @var DiscussionQueryBuilder $query */
$query = Discussion::with('tags')
$query = Discussion::with('tags') // @phpstan-ignore-line
->withCount('replies')
->forLocale($this->locale)
->notPinned();

$tags = Tag::query()
Expand Down
20 changes: 20 additions & 0 deletions app/Livewire/Pages/Forum/Index.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

use App\Models\Channel;
use App\Models\Thread;
use App\Traits\WithLocale;
use Illuminate\Contracts\View\View;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\Auth;
Expand All @@ -19,6 +20,7 @@
#[Layout('layouts.forum')]
final class Index extends Component
{
use WithLocale;
use WithoutUrlPagination;
use WithPagination;

Expand Down Expand Up @@ -48,6 +50,8 @@ public function mount(): void
if ($this->channel) {
$this->currentChannel = Channel::findBySlug($this->channel);
}

$this->locale = config('app.locale');
}

#[On('channelUpdated')]
Expand All @@ -63,6 +67,12 @@ public function reloadThreads(?int $channelId): void
$this->dispatch('render');
}

#[On('redirectToLogin')]
public function redirectToLogin(): void
{
$this->redirectRoute('login', navigate: true);
}

protected function applySearch(Builder $query): Builder
{
if ($this->search) {
Expand All @@ -87,6 +97,15 @@ protected function applySolved(Builder $query): Builder
return $query;
}

protected function applyLocale(Builder $query): Builder
{
if ($this->locale) {
$query->forLocale($this->locale); // @phpstan-ignore-line
}

return $query;
}

protected function applyAuthor(Builder $query): Builder
{
if (Auth::check() && $this->user) {
Expand Down Expand Up @@ -125,6 +144,7 @@ public function render(): View
$query = $this->applyChannel($query);
$query = $this->applySearch($query);
$query = $this->applySolved($query);
$query = $this->applyLocale($query);
$query = $this->applyAuthor($query);
$query = $this->applySubscribe($query);
$query = $this->applyUnAnswer($query);
Expand Down
9 changes: 4 additions & 5 deletions app/Models/Article.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,14 @@

use App\Contracts\ReactableInterface;
use App\Models\Builders\ArticleQueryBuilder;
use App\Models\Scopes\LocaleScope;
use App\Traits\HasAuthor;
use App\Traits\HasSlug;
use App\Models\Traits\HasAuthor;
use App\Models\Traits\HasLocaleScope;
use App\Models\Traits\HasSlug;
use App\Traits\HasTags;
use App\Traits\Reactable;
use App\Traits\RecordsActivity;
use CyrildeWit\EloquentViewable\Contracts\Viewable;
use CyrildeWit\EloquentViewable\InteractsWithViews;
use Illuminate\Database\Eloquent\Attributes\ScopedBy;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;
Expand Down Expand Up @@ -43,11 +42,11 @@
* @property \Illuminate\Support\Carbon $updated_at
* @property \Illuminate\Database\Eloquent\Collection | Tag[] $tags
*/
#[ScopedBy([LocaleScope::class])]
final class Article extends Model implements HasMedia, ReactableInterface, Viewable
{
use HasAuthor;
use HasFactory;
use HasLocaleScope;
use HasSlug;
use HasTags;
use InteractsWithMedia;
Expand Down
2 changes: 1 addition & 1 deletion app/Models/Channel.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
namespace App\Models;

use App\Exceptions\CannotAddChannelToChild;
use App\Traits\HasSlug;
use App\Models\Traits\HasSlug;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
Expand Down
11 changes: 5 additions & 6 deletions app/Models/Discussion.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
use App\Contracts\SpamReportableContract;
use App\Contracts\SubscribeInterface;
use App\Models\Builders\DiscussionQueryBuilder;
use App\Models\Scopes\LocaleScope;
use App\Traits\HasAuthor;
use App\Traits\HasReplies;
use App\Traits\HasSlug;
use App\Models\Traits\HasAuthor;
use App\Models\Traits\HasLocaleScope;
use App\Models\Traits\HasReplies;
use App\Models\Traits\HasSlug;
use App\Traits\HasSpamReports;
use App\Traits\HasSubscribers;
use App\Traits\HasTags;
Expand All @@ -21,7 +21,6 @@
use Carbon\Carbon;
use CyrildeWit\EloquentViewable\Contracts\Viewable;
use CyrildeWit\EloquentViewable\InteractsWithViews;
use Illuminate\Database\Eloquent\Attributes\ScopedBy;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
Expand All @@ -42,11 +41,11 @@
* @property User $user
* @property Collection | SpamReport[] $spamReports
*/
#[ScopedBy([LocaleScope::class])]
final class Discussion extends Model implements ReactableInterface, ReplyInterface, SpamReportableContract, SubscribeInterface, Viewable
{
use HasAuthor;
use HasFactory;
use HasLocaleScope;
use HasReplies;
use HasSlug;
use HasSpamReports;
Expand Down
2 changes: 1 addition & 1 deletion app/Models/Enterprise.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
namespace App\Models;

use App\Filters\Enterprise\EnterpriseFilters;
use App\Models\Traits\HasSlug;
use App\Traits\HasSettings;
use App\Traits\HasSlug;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
Expand Down
Loading
Loading