nostr events schedule

This commit is contained in:
HolgerHatGarKeineNode
2023-02-24 11:54:19 +01:00
parent c99ebca063
commit d483c0955a
7 changed files with 75 additions and 17 deletions

View File

@@ -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,

View File

@@ -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) {

View File

@@ -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());
}

View File

@@ -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());
}

View File

@@ -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',

View File

@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('users', function (Blueprint $table) {
$table->string('nostr')
->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
//
});
}
};

View File

@@ -65,6 +65,14 @@
<p class="text-xs">{{ __('Only one working address is required. But you can also fill in all fields if you have suitable data.') }}</p>
</div>
<!-- nostr -->
<div class="col-span-6 sm:col-span-4">
<x-jet-label for="nostr" value="{{ __('Nostr public key') }}"/>
<x-jet-input id="nostr" type="text" class="mt-1 block w-full" wire:model.defer="state.nostr"
autocomplete="nostr"/>
<x-jet-input-error for="nostr" class="mt-2"/>
</div>
<!-- lightning_address -->
<div class="col-span-6 sm:col-span-4">
<x-jet-label for="lightning_address" value="{{ __('Lightning Address') }}"/>