diff --git a/resources/views/livewire/association/benefits.blade.php b/resources/views/livewire/association/benefits.blade.php index 4e4d074..80cb73c 100644 --- a/resources/views/livewire/association/benefits.blade.php +++ b/resources/views/livewire/association/benefits.blade.php @@ -116,6 +116,13 @@ new class extends Component Flux::toast('Blossom-Adresse in die Zwischenablage kopiert!'); } + public function copyGroupRelayUrl(): void + { + $groupRelayUrl = 'wss://group.einundzwanzig.space'; + $this->js("navigator.clipboard.writeText('{$groupRelayUrl}')"); + Flux::toast('Community-Relay-Adresse in die Zwischenablage kopiert!'); + } + public function handleNostrLoggedIn($signedEvent = null): void { NostrAuth::loginWithSignedEvent($signedEvent); @@ -154,13 +161,14 @@ new class extends Component @if($isActiveMember) Mitgliedschaft aktiv - Alle vier Dienste unten sind für dich freigeschaltet. + Alle Dienste unten sind für dich freigeschaltet. @else Dienste gesperrt - Aktiviere deine Mitgliedschaft, um Relay, NIP-05, Watchtower und den Blossom-Medienserver zu nutzen. + Aktiviere deine Mitgliedschaft, um Relay, NIP-05, Watchtower, den Blossom-Medienserver und die + Nostr-Community-Gruppe zu nutzen. @@ -170,12 +178,12 @@ new class extends Component @endif - -
+ +
+ class="flex flex-col h-full {{ $isActiveMember ? '' : 'opacity-60' }} border-amber-200 dark:border-amber-200/30">
@@ -208,7 +216,7 @@ new class extends Component aria-label="Relay-Adresse kopieren"/>
- +

@@ -231,7 +239,7 @@ new class extends Component + class="flex flex-col h-full {{ $isActiveMember ? '' : 'opacity-60' }} border-emerald-200 dark:border-emerald-200/30">

@@ -253,54 +261,69 @@ new class extends Component
@if($isActiveMember) -
- - Dein NIP-05 Handle - - - @einundzwanzig.space - - - - - - Speichern - - + @php($nip05DisplayHandle = $nip05VerifiedHandle ?: $nip05Handle) +
+ + @if($nip05DisplayHandle){{ $nip05DisplayHandle }}@einundzwanzig.space + @else Noch kein Handle – unten einrichten + @endif + @if($nip05Verified) - - - Du hast {{ count($nip05VerifiedHandles) }} aktive Handles für deinen Pubkey. - @if($nip05HandleMismatch) - Die Synchronisation zu - {{ $nip05Handle }}@einundzwanzig.space - läuft automatisch im Hintergrund. - @endif - - - -
-

Deine aktivierten Handles:

-
    - @foreach($nip05VerifiedHandles as $handle) -
  • - {{ $handle }}@einundzwanzig.space - OK -
  • - @endforeach -
-
+ OK @elseif($nip05Handle) - - - Dein Handle {{ $nip05Handle }}@einundzwanzig.space - ist gespeichert, aber noch nicht aktiv. Der Vorstand schaltet es bald frei. - - + Wartet @endif +
+ + + +
+ + Dein NIP-05 Handle + + + @einundzwanzig.space + + + + + + Speichern + + + @if($nip05Verified) + + + Du hast {{ count($nip05VerifiedHandles) }} aktive Handles für deinen Pubkey. + @if($nip05HandleMismatch) + Die Synchronisation zu + {{ $nip05Handle }}@einundzwanzig.space + läuft automatisch im Hintergrund. + @endif + + + +
+

Deine aktivierten Handles:

+
    + @foreach($nip05VerifiedHandles as $handle) +
  • + {{ $handle }}@einundzwanzig.space + OK +
  • + @endforeach +
+
+ @elseif($nip05Handle) + + + Dein Handle {{ $nip05Handle }}@einundzwanzig.space + ist gespeichert, aber noch nicht aktiv. Der Vorstand schaltet es bald frei. + + + @endif - -

NIP-05 @@ -312,15 +335,15 @@ new class extends Component sowie „-" und „_". Großbuchstaben werden automatisch kleingeschrieben.

-
-
-
+
+ + @endif + class="flex flex-col h-full {{ $isActiveMember ? '' : 'opacity-60' }} border-purple-200 dark:border-purple-200/30">
@@ -353,7 +376,7 @@ new class extends Component aria-label="Watchtower-Adresse kopieren"/>
- +

@@ -378,7 +401,7 @@ new class extends Component + class="flex flex-col h-full {{ $isActiveMember ? '' : 'opacity-60' }} border-rose-200 dark:border-rose-200/30">

@@ -418,7 +441,7 @@ new class extends Component aria-label="Blossom-Adresse kopieren"/>
- +

@@ -455,5 +478,88 @@ new class extends Component @endif + + +

+
+ +
+
+
+

Nostr Community-Gruppe

+
+ NEU + @if($isActiveMember) + Aktiv + @else + Mitglieder + @endif +
+
+

+ Chatte und poste in der Einundzwanzig-Gruppe auf unserem Community-Relay + (NIP-29) + – wie Discord, nur auf Nostr. +

+
+
+ + @if($isActiveMember) +
+ + Gruppe in Flotilla öffnen + +
+ + wss://group.einundzwanzig.space + + +
+
+ + + +
+

+ Unser group.einundzwanzig.space ist ein Community-Relay nach dem + NIP-29-Standard + (relay-basierte Gruppen): ein Relay bildet eine Community mit Chat, Threads und Events – + nur für Vereinsmitglieder. +

+
+

So trittst du bei:

+
    +
  1. Öffne die Gruppe mit einem NIP-29-fähigen Nostr-Client. Am einfachsten über den + Button oben (nutzt Flotilla); + es funktionieren aber auch andere Clients wie + Chachi.
  2. +
  3. Alternativ das Relay wss://group.einundzwanzig.space in deinem + Client als Gruppe hinzufügen.
  4. +
  5. Melde dich mit deinem Nostr-Schlüssel an (z.B. via Amber oder nsec-Bunker) – + fertig, du kannst sofort lesen und schreiben.
  6. +
+
+

+ Automatischer Zugang: Sobald dein Mitgliedsbeitrag bezahlt ist, wirst du + automatisch als Member des Relays eingetragen und erhältst Schreib-Rechte in der Gruppe. +

+
+
+
+ @endif + +
diff --git a/resources/views/livewire/association/profile.blade.php b/resources/views/livewire/association/profile.blade.php index 5f5a478..e3379ac 100644 --- a/resources/views/livewire/association/profile.blade.php +++ b/resources/views/livewire/association/profile.blade.php @@ -685,6 +685,19 @@ new class extends Component {

5 GB Speicher · max. 1 GB pro Datei

+
  • +
    + +
    +
    +
    +

    Nostr Community-Gruppe

    + NEU +
    +

    Schreibe in der Einundzwanzig-Gruppe auf unserem Community-Relay (NIP-29).

    +
    +
  • call('copyBlossomUrl') ->assertHasNoErrors(); }); + +it('unlocks the nostr community group for active paid members', function () { + $pleb = EinundzwanzigPleb::factory()->active()->withPaidCurrentYear()->create(); + NostrAuth::login($pleb->pubkey); + + Livewire::test('association.benefits') + ->assertSee('Nostr Community-Gruppe') + ->assertSee('app.flotilla.social/spaces/group.einundzwanzig.space') + ->assertSee('wss://group.einundzwanzig.space'); +}); + +it('copies the community relay url for active members', function () { + $pleb = EinundzwanzigPleb::factory()->active()->withPaidCurrentYear()->create(); + NostrAuth::login($pleb->pubkey); + + Livewire::test('association.benefits') + ->call('copyGroupRelayUrl') + ->assertHasNoErrors(); +});