diff --git a/app/Actions/Fortify/UpdateUserProfileInformation.php b/app/Actions/Fortify/UpdateUserProfileInformation.php index 1609a95e..71f48219 100644 --- a/app/Actions/Fortify/UpdateUserProfileInformation.php +++ b/app/Actions/Fortify/UpdateUserProfileInformation.php @@ -20,6 +20,7 @@ class UpdateUserProfileInformation implements UpdatesUserProfileInformation 'name' => ['required', 'string', 'max:255'], 'lightning_address' => ['nullable', 'string'], 'lnurl' => ['nullable', 'string'], + 'nostr' => ['nullable', 'string'], 'node_id' => ['nullable', 'string', 'max:66'], 'timezone' => ['required', 'string'], 'email' => [ @@ -42,6 +43,7 @@ class UpdateUserProfileInformation implements UpdatesUserProfileInformation 'name' => $input['name'], 'lightning_address' => $input['lightning_address'], 'lnurl' => $input['lnurl'], + 'nostr' => $input['nostr'], 'node_id' => $input['node_id'], 'email' => $input['email'], 'timezone' => $input['timezone'], @@ -62,6 +64,7 @@ class UpdateUserProfileInformation implements UpdatesUserProfileInformation 'lightning_address' => $input['lightning_address'], 'lnurl' => $input['lnurl'], 'node_id' => $input['node_id'], + 'nostr' => $input['nostr'], 'email' => $input['email'], 'timezone' => $input['timezone'], 'email_verified_at' => null, diff --git a/app/Observers/LibraryItemObserver.php b/app/Observers/LibraryItemObserver.php index faf1b815..a3f5a3b0 100644 --- a/app/Observers/LibraryItemObserver.php +++ b/app/Observers/LibraryItemObserver.php @@ -20,14 +20,11 @@ class LibraryItemObserver try { $libraryItem->setStatus('published'); - $from = $libraryItem->name; - $from .= ' von '.$libraryItem->lecturer->name; - if ($libraryItem->type !== LibraryItemType::MarkdownArticle()) { if ($libraryItem->whereDoesntHave('libraries', fn($query) => $query->where('libraries.is_public', false)) ->exists()) { - $this->publishOnNostr($libraryItem, $this->getText('LibraryItem', $from)); + $this->publishOnNostr($libraryItem, $this->getText('LibraryItem')); } } } catch (Exception $e) { diff --git a/app/Observers/MeetupEventObserver.php b/app/Observers/MeetupEventObserver.php index 1b59148c..b527ec63 100644 --- a/app/Observers/MeetupEventObserver.php +++ b/app/Observers/MeetupEventObserver.php @@ -17,11 +17,7 @@ class MeetupEventObserver public function created(MeetupEvent $meetupEvent): void { try { - $from = $meetupEvent->meetup->name; - if ($meetupEvent->meetup->nostr) { - $from .= ' @'.$meetupEvent->meetup->nostr; - } - $this->publishOnNostr($meetupEvent, $this->getText('MeetupEvent', $from)); + $this->publishOnNostr($meetupEvent, $this->getText('MeetupEvent')); } catch (Exception $e) { Log::error($e->getMessage()); } diff --git a/app/Observers/MeetupObserver.php b/app/Observers/MeetupObserver.php index da8dcd9d..9f1d8762 100644 --- a/app/Observers/MeetupObserver.php +++ b/app/Observers/MeetupObserver.php @@ -17,11 +17,7 @@ class MeetupObserver public function created(Meetup $meetup): void { try { - $from = $meetup->name; - if ($meetup->nostr) { - $from .= ' @'.$meetup->nostr; - } - $this->publishOnNostr($meetup, $this->getText('Meetup', $from)); + $this->publishOnNostr($meetup, $this->getText('Meetup')); } catch (Exception $e) { Log::error($e->getMessage()); } diff --git a/app/Traits/NostrTrait.php b/app/Traits/NostrTrait.php index d734daa7..37c06d8c 100644 --- a/app/Traits/NostrTrait.php +++ b/app/Traits/NostrTrait.php @@ -32,8 +32,9 @@ trait NostrTrait ]; } - public function getText($model, $from = null) + public function getText($model) { + $from = ''; if ($model instanceof BitcoinEvent) { return sprintf("Ein neues Event wurde eingestellt:\n\n%s\n\n%s bis %s\n\n%s\n\n%s\n\n#Bitcoin #Event #Einundzwanzig #gesundesgeld", $model->title, @@ -44,8 +45,14 @@ trait NostrTrait ); } if ($model instanceof CourseEvent) { + if ($model->lecturer->nostr) { + $from .= '@'.$model->lecturer->nostr; + } else { + $from .= $model->lecturer->name; + } + return sprintf("Unser Dozent %s hat einen neuen Kurs-Termin eingestellt:\n\n%s\n\n%s\n\n%s\n\n#Bitcoin #Kurs #Education #Einundzwanzig #gesundesgeld", - $model->course->lecturer->name, + $from, $model->course->name, str($model->course->description)->limit(80), url()->route('school.landingPage.lecturer', @@ -53,6 +60,11 @@ trait NostrTrait ); } if ($model instanceof MeetupEvent) { + $from = $model->meetup->name; + if ($model->meetup->nostr) { + $from .= ' @'.$model->meetup->nostr; + } + return sprintf("%s hat einen neuen Termin eingestellt:\n\n%s\n\n%s\n\n%s\n\n#Bitcoin #Meetup #Einundzwanzig #gesundesgeld", $from, $model->start->asDateTime(), @@ -62,14 +74,25 @@ trait NostrTrait ); } if ($model instanceof Meetup) { + $from = $model->name; + if ($model->nostr) { + $from .= ' @'.$model->nostr; + } + return sprintf("Eine neue Meetup Gruppe wurde hinzugefügt:\n\n%s\n\n%s\n\n#Bitcoin #Meetup #Einundzwanzig #gesundesgeld", $from, url()->route('meetup.landing', ['country' => $model->city->country->code, 'meetup' => $model]) ); } if ($model instanceof Course) { + if ($model->lecturer->nostr) { + $from .= '@'.$model->lecturer->nostr; + } else { + $from .= $model->lecturer->name; + } + return sprintf("Unser Dozent %s hat einen neuen Kurs eingestellt:\n\n%s\n\n%s\n\n%s\n\n#Bitcoin #Kurs #Education #Einundzwanzig #gesundesgeld", - $model->lecturer->name, + $from, $model->name, str($model->description)->limit(80), url()->route('school.landingPage.lecturer', @@ -77,6 +100,13 @@ trait NostrTrait ); } if ($model instanceof LibraryItem) { + $from = $model->name; + if ($model->lecturer->nostr) { + $from .= ' von @'.$model->lecturer->nostr; + } else { + $from .= ' von '.$model->lecturer->name; + } + return sprintf("Es gibt was Neues zum Lesen oder Anhören:\n\n%s\n\n%s\n\n#Bitcoin #Wissen #Einundzwanzig #gesundesgeld", $from, url()->route('article.view', diff --git a/database/migrations/2023_02_24_104336_add_nostr_fields_to_users_table.php b/database/migrations/2023_02_24_104336_add_nostr_fields_to_users_table.php new file mode 100644 index 00000000..b32549c3 --- /dev/null +++ b/database/migrations/2023_02_24_104336_add_nostr_fields_to_users_table.php @@ -0,0 +1,28 @@ +string('nostr') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + // + }); + } +}; diff --git a/resources/views/profile/update-profile-information-form.blade.php b/resources/views/profile/update-profile-information-form.blade.php index 1deeff4c..66d5e1cd 100644 --- a/resources/views/profile/update-profile-information-form.blade.php +++ b/resources/views/profile/update-profile-information-form.blade.php @@ -65,6 +65,14 @@

{{ __('Only one working address is required. But you can also fill in all fields if you have suitable data.') }}

+ +
+ + + +
+