defmodule NostrApp do
@moduledoc """
An example of an app enabling pretty much every raw commands this
lib has to offer
"""
alias NostrApp.Server
alias Nostr.Models.Profile
def start_link(relays, private_key) do
args = %{relays: relays, private_key: private_key}
GenServer.start_link(Server, args, name: Server)
end
### NIP-01
def profile(pubkey \\ nil) do
GenServer.cast(Server, {:profile, pubkey})
end
### NIP-01
def update_profile(%Profile{} = profile) do
GenServer.cast(Server, {:update_profile, profile})
end
### NIP-01
def note(note_id) do
GenServer.cast(Server, {:note, note_id})
end
### NIP-01
def notes() do
GenServer.cast(Server, {:notes})
end
### NIP-01
def notes(pubkeys) do
GenServer.cast(Server, {:notes, pubkeys})
end
### NIP-01
def send_note(note) do
GenServer.cast(Server, {:send_note, note})
end
### NIP-02
def contacts() do
GenServer.cast(Server, {:contacts})
end
### NIP-02
def contacts(pubkey) do
GenServer.cast(Server, {:contacts, pubkey})
end
### NIP-02
def follow(pubkey) do
GenServer.cast(Server, {:follow, pubkey})
end
### NIP-02
def unfollow(pubkey) do
GenServer.cast(Server, {:unfollow, pubkey})
end
## NIP-04
def encrypted_direct_messages() do
GenServer.cast(Server, {:encrypted_direct_messages})
end
## NIP-04
def encrypted_direct_messages(private_key) do
GenServer.cast(Server, {:encrypted_direct_messages, private_key})
end
## NIP-04
def send_encrypted_direct_messages(pubkey, message) do
GenServer.cast(Server, {:send_encrypted_direct_messages, pubkey, message})
end
def delete(event_ids, note \\ "")
### NIP-09
def delete(event_id, note) when is_binary(event_id) do
delete([event_id], note)
end
### NIP-09
def delete(event_ids, note) when is_list(event_ids) do
GenServer.cast(Server, {:delete, event_ids, note})
end
### NIP-09
def deletions() do
GenServer.cast(Server, {:deletions})
end
### NIP-09
def deletions(pubkeys) when is_list(pubkeys) do
GenServer.cast(Server, {:deletions, pubkeys})
end
### NIP-18
def repost(note_id) do
GenServer.cast(Server, {:repost, note_id})
end
### NIP-18
def reposts() do
GenServer.cast(Server, {:reposts})
end
### NIP-18
def reposts(pubkeys) when is_list(pubkeys) do
GenServer.cast(Server, {:reposts, pubkeys})
end
### NIP-25
def react(note_id) do
GenServer.cast(Server, {:react, note_id})
end
### NIP-25
def reactions() do
GenServer.cast(Server, {:reactions})
end
### NIP-25
def reactions(pubkeys) when is_list(pubkeys) do
GenServer.cast(Server, {:reactions, pubkeys})
end
### Combination of multiple NIPs
def timeline() do
GenServer.cast(Server, {:timeline})
end
### Combination of multiple NIPs
def timeline(pubkey) do
GenServer.cast(Server, {:timeline, pubkey})
end
end