mirror of
https://github.com/HolgerHatGarKeineNode/einundzwanzig-nostr.git
synced 2026-02-04 15:53:17 +00:00
✨ Add NIP-05 support and improve payment interaction handling
This commit is contained in:
@@ -147,12 +147,32 @@ new class extends Component {
|
|||||||
])
|
])
|
||||||
->where('pubkey', $pubkey)->first();
|
->where('pubkey', $pubkey)->first();
|
||||||
|
|
||||||
if ($this->currentPleb) {
|
if (!$this->currentPleb) {
|
||||||
$this->profileForm->setPleb($this->currentPleb);
|
return;
|
||||||
$this->form->setPleb($this->currentPleb);
|
|
||||||
$this->no = $this->currentPleb->no_email;
|
|
||||||
$this->showEmail = !$this->no;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->profileForm->setPleb($this->currentPleb);
|
||||||
|
$this->form->setPleb($this->currentPleb);
|
||||||
|
$this->no = $this->currentPleb->no_email;
|
||||||
|
$this->showEmail = !$this->no;
|
||||||
|
|
||||||
|
if ($this->currentPleb->nip05_handle) {
|
||||||
|
$this->nip05VerifiedHandles = $this->getNip05HandlesForPubkey($this->currentPubkey);
|
||||||
|
|
||||||
|
if (count($this->nip05VerifiedHandles) > 0) {
|
||||||
|
$this->nip05Verified = true;
|
||||||
|
$this->nip05VerifiedHandle = $this->nip05VerifiedHandles[0];
|
||||||
|
|
||||||
|
if (!in_array($this->profileForm->nip05Handle, $this->nip05VerifiedHandles, true)) {
|
||||||
|
$this->nip05HandleMismatch = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->amountToPay = config('app.env') === 'production' ? 21000 : 1;
|
||||||
|
$this->resolveCurrentPaymentEvent();
|
||||||
|
$this->loadEvents();
|
||||||
|
$this->listenForPayment();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handleNostrLoggedOut(): void
|
public function handleNostrLoggedOut(): void
|
||||||
@@ -1277,13 +1297,15 @@ new class extends Component {
|
|||||||
Mitgliedsbeitrag
|
Mitgliedsbeitrag
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<flux:callout variant="info" class="mb-6">
|
@if($currentPleb->paymentEvents->last())
|
||||||
<p class="text-sm">
|
<flux:callout variant="info" class="mb-6">
|
||||||
Nostr Event für die Zahlung des Mitgliedsbeitrags:
|
<p class="text-sm">
|
||||||
<span
|
Nostr Event für die Zahlung des Mitgliedsbeitrags:
|
||||||
class="block mt-2 font-mono text-xs break-all">{{ $currentPleb->paymentEvents->last()->event_id }}</span>
|
<span
|
||||||
</p>
|
class="block mt-2 font-mono text-xs break-all">{{ $currentPleb->paymentEvents->last()->event_id }}</span>
|
||||||
</flux:callout>
|
</p>
|
||||||
|
</flux:callout>
|
||||||
|
@endif
|
||||||
|
|
||||||
@if($invoiceStatusMessage)
|
@if($invoiceStatusMessage)
|
||||||
<flux:callout variant="{{ $invoiceStatusVariant }}" class="mb-6">
|
<flux:callout variant="{{ $invoiceStatusVariant }}" class="mb-6">
|
||||||
|
|||||||
@@ -15,6 +15,20 @@ it('handles nostr login correctly', function () {
|
|||||||
->assertSet('currentPleb.pubkey', $pleb->pubkey);
|
->assertSet('currentPleb.pubkey', $pleb->pubkey);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('handles nostr login for active member and initializes payment state', function () {
|
||||||
|
$pleb = EinundzwanzigPleb::factory()->active()->create();
|
||||||
|
|
||||||
|
expect($pleb->paymentEvents()->count())->toBe(0);
|
||||||
|
|
||||||
|
Livewire::test('association.profile')
|
||||||
|
->call('handleNostrLoggedIn', $pleb->pubkey)
|
||||||
|
->assertSet('currentPubkey', $pleb->pubkey)
|
||||||
|
->assertSet('currentPleb.pubkey', $pleb->pubkey)
|
||||||
|
->assertSet('amountToPay', config('app.env') === 'production' ? 21000 : 1);
|
||||||
|
|
||||||
|
expect($pleb->paymentEvents()->count())->toBeGreaterThan(0);
|
||||||
|
});
|
||||||
|
|
||||||
it('handles nostr logout correctly', function () {
|
it('handles nostr logout correctly', function () {
|
||||||
$pleb = EinundzwanzigPleb::factory()->create();
|
$pleb = EinundzwanzigPleb::factory()->create();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user