closes #21 feat: add calendar stream URL to meetups

This commit adds a calendar stream URL to each meetup. The URL is copied to
the clipboard when the user clicks on a new button added to the UI. The copied
URL can be pasted into a compatible calendar app, allowing the user to easily
add the meetup to their calendar. This feature was added to several views
including 'profile/meetups', 'meetup/landing-page', and
'meetup/landing-page-event'. The associated controller 'DownloadMeetupCalendar'
and livewire components were also updated accordingly.
This commit is contained in:
HolgerHatGarKeineNode
2024-01-07 10:31:39 +01:00
parent 93d3858f30
commit 7b8d32807c
6 changed files with 127 additions and 56 deletions

View File

@@ -38,13 +38,13 @@ class Meetups extends Component
}
$this->meetups = Meetup::query()
->with([
'city',
])
->where('name', 'ilike', '%'.$this->search.'%')
->orderBy('name')
->limit(10)
->get();
->with([
'city',
])
->where('name', 'ilike', '%' . $this->search . '%')
->orderBy('name')
->limit(10)
->get();
$this->myMeetups = auth()
->user()
->meetups()
@@ -64,7 +64,11 @@ class Meetups extends Component
'link' => route('meetup.landing', [
'country' => $meetup->city->country->code,
'meetup' => $meetup,
])
]),
'ics' => route('meetup.ics', [
'country' => $meetup->city->country->code,
'meetup' => $meetup,
]),
])
->toArray();
if (count($this->myMeetups) > 0) {
@@ -83,20 +87,20 @@ class Meetups extends Component
public function updatedSearch($value)
{
$this->meetups = Meetup::query()
->with([
'city',
])
->where('name', 'ilike', '%'.$value.'%')
->orderBy('name')
->limit(10)
->get();
->with([
'city',
])
->where('name', 'ilike', '%' . $value . '%')
->orderBy('name')
->limit(10)
->get();
}
public function signUpForMeetup($id)
{
$user = auth()->user();
$user->meetups()
->toggle($id);
->toggle($id);
$this->myMeetups = auth()
->user()
->meetups()
@@ -121,11 +125,15 @@ class Meetups extends Component
'link' => route('meetup.landing', [
'country' => $meetup->city->country->code,
'meetup' => $meetup,
])
]),
'ics' => route('meetup.ics', [
'country' => $meetup->city->country->code,
'meetup' => $meetup,
]),
])
->toArray();
$this->notification()
->success(__('Saved.'));
->success(__('Saved.'));
}
public function render()