adds message title, adds sender delete
- message now contains a second string which is meant for unencrypted title information, which can be displayed without e2e encryption. - senders can now be deleted - the same sender / token connection is no longer added to the database
This commit is contained in:
		@@ -52,15 +52,31 @@ defmodule Bump.Database do
 | 
			
		||||
    Repo.delete_all(query)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def push(sender, message) do
 | 
			
		||||
 | 
			
		||||
  def push(sender, title, data) do
 | 
			
		||||
    time = DateTime.utc_now |> DateTime.truncate(:second)
 | 
			
		||||
 | 
			
		||||
    Repo.insert(%Message{sender: sender, data: message, timestamp: time})
 | 
			
		||||
    Repo.insert(%Message{sender: sender, title: title, data: data, timestamp: time})
 | 
			
		||||
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def addSender(sender, %{"firebase" => firebase}) do
 | 
			
		||||
    Repo.insert(%Sender{sender: sender, firebase_token: firebase})
 | 
			
		||||
    query = from s in "senders",
 | 
			
		||||
            where: s.sender == ^sender and
 | 
			
		||||
            s.firebase_token == ^firebase,
 | 
			
		||||
            select: %{id: s.id} 
 | 
			
		||||
 | 
			
		||||
    if(Repo.all(query) == []) do
 | 
			
		||||
      IO.puts("Adding sender: #{sender}")
 | 
			
		||||
      Repo.insert(%Sender{sender: sender, firebase_token: firebase})
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def deleteSender(sender) do
 | 
			
		||||
    query = from s in "senders",
 | 
			
		||||
            where: s.sender == ^sender
 | 
			
		||||
 | 
			
		||||
    Repo.delete_all(query)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def tokens(sender) do
 | 
			
		||||
 
 | 
			
		||||
@@ -5,11 +5,13 @@ defmodule Bump.Firebase do
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  def push(%{firebase_token: token}, message) do
 | 
			
		||||
      IO.puts "Pushing #{message} to #{token}"
 | 
			
		||||
      n = Pigeon.FCM.Notification.new({:token, token}, %{"body" => message})
 | 
			
		||||
  def push(%{"firebase_token" => token, "title" => title, "data" => data}) do
 | 
			
		||||
      IO.puts "Pushing #{title}"
 | 
			
		||||
    n = Pigeon.FCM.Notification.new(
 | 
			
		||||
      {:token, token}, 
 | 
			
		||||
      %{"body" => title},
 | 
			
		||||
      %{"data" => data})
 | 
			
		||||
      Bump.FCM.push(n)
 | 
			
		||||
    %{status: 'cheese'}
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
@@ -18,12 +18,12 @@ defmodule Bump.Messages do
 | 
			
		||||
    Database.clear(sender)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def push(sender, message) do
 | 
			
		||||
    Database.push(sender, message)
 | 
			
		||||
  def push(sender, title, data) do
 | 
			
		||||
    Database.push(sender, title, data)
 | 
			
		||||
    tokens = Database.tokens(sender)
 | 
			
		||||
 | 
			
		||||
    for token <- tokens do
 | 
			
		||||
      Firebase.push(token, message)
 | 
			
		||||
      Firebase.push(%{"firebase_token" => token.firebase_token, "title" => title, "data" => data})
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@ defmodule Bump.Messages.Message do
 | 
			
		||||
 | 
			
		||||
  schema "messages" do
 | 
			
		||||
    field :sender, :string
 | 
			
		||||
    field :title, :string, default: ""
 | 
			
		||||
    field :data, :string, default: ""
 | 
			
		||||
    field :timestamp, :utc_datetime
 | 
			
		||||
    timestamps()
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,10 @@ defmodule Bump.Senders do
 | 
			
		||||
    Database.addSender(sender, %{"firebase" => firebase})
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def delete(sender) do
 | 
			
		||||
    Database.deleteSender(sender)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def peek(sender) do
 | 
			
		||||
    Database.peek(sender)
 | 
			
		||||
  end
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user