diff --git a/lib/exponent_server_sdk/push_message.ex b/lib/exponent_server_sdk/push_message.ex index e0dcbeb..13a69e3 100644 --- a/lib/exponent_server_sdk/push_message.ex +++ b/lib/exponent_server_sdk/push_message.ex @@ -6,15 +6,15 @@ defmodule ExponentServerSdk.PushMessage do """ @enforce_keys [:to] defstruct to: nil, - data: nil, + data: %{}, title: nil, body: nil, ttl: 0, - expiration: nil, + expiration: 2419200, priority: "default", sound: "default", - badge: nil, - channelId: nil + badge: 1, + channelId: "Default" @typedoc """ https://docs.expo.io/versions/v29.0.0/guides/push-notifications#message-format @@ -137,7 +137,7 @@ defmodule ExponentServerSdk.PushMessage do iex> message_map = %{to: "ExponentPushToken[XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX]", title: "Pushed!", body: "You got your first message"} iex> message = ExponentServerSdk.PushMessage.create(message_map) iex> message - %ExponentServerSdk.PushMessage{badge: nil, body: "You got your first message", channelId: nil, data: nil, expiration: nil, priority: "default", sound: "default", title: "Pushed!", to: "ExponentPushToken[XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX]", ttl: 0} + %ExponentServerSdk.PushMessage{badge: 1, body: "You got your first message", channelId: "Default", data: %{}, expiration: 2419200, priority: "default", sound: "default", title: "Pushed!", to: "ExponentPushToken[XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX]", ttl: 0} """ @spec create(map) :: PushMessage.t() def create(message) when is_map(message) do @@ -151,7 +151,7 @@ defmodule ExponentServerSdk.PushMessage do iex> message_list = [%{to: "ExponentPushToken[XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX]", title: "Pushed!", body: "You got your first message"}, %{to: "ExponentPushToken[YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY]", title: "Pushed Again!", body: "You got your second message"}] iex> messages = ExponentServerSdk.PushMessage.create_from_list(message_list) iex> messages - [[%ExponentServerSdk.PushMessage{badge: nil, body: "You got your first message", channelId: nil, data: nil, expiration: nil, priority: "default", sound: "default", title: "Pushed!", to: "ExponentPushToken[XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX]", ttl: 0}, %ExponentServerSdk.PushMessage{ badge: nil, body: "You got your second message", channelId: nil, data: nil, expiration: nil, priority: "default", sound: "default", title: "Pushed Again!", to: "ExponentPushToken[YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY]", ttl: 0}]] + [[%ExponentServerSdk.PushMessage{badge: 1, body: "You got your first message", channelId: "Default", data: %{}, expiration: 2419200, priority: "default", sound: "default", title: "Pushed!", to: "ExponentPushToken[XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX]", ttl: 0}, %ExponentServerSdk.PushMessage{ badge: 1, body: "You got your second message", channelId: "Default", data: %{}, expiration: 2419200, priority: "default", sound: "default", title: "Pushed Again!", to: "ExponentPushToken[YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY]", ttl: 0}]] """ @spec create_from_list(list(map)) :: list(PushMessage.t()) def create_from_list(messages) when is_list(messages) do diff --git a/lib/exponent_server_sdk/push_notification.ex b/lib/exponent_server_sdk/push_notification.ex index b7939ec..676e352 100644 --- a/lib/exponent_server_sdk/push_notification.ex +++ b/lib/exponent_server_sdk/push_notification.ex @@ -30,21 +30,26 @@ defmodule ExponentServerSdk.PushNotification do def push(message) when is_map(message) do message |> PushMessage.create() - - PushNotification.post!("send", message) + |> PushNotification.post!("send", message) |> Parser.parse() end @doc """ Send the push notification request when using a list of message maps """ - @spec push_list(list(PushMessage.t())) :: Parser.success() | Parser.error() + @spec push_list(list()) :: list(Parser.success()) | list(Parser.error()) def push_list(messages) when is_list(messages) do messages - |> PushMessage.create_from_list() + |> PushMessage.create_from_list + |> push_messages_list + end - PushNotification.post!("send", messages) - |> Parser.parse_list() + def push_messages_list([]), do: [] + + @spec push_messages_list(list(list(PushMessage.t()))) :: list(Parser.success()) | list(Parser.error()) + def push_messages_list([head | tail]) do + current_message = PushNotification.post!("send", head) |> Parser.parse_list() + [ current_message | push_messages_list(tail) ] end @doc """ @@ -52,9 +57,6 @@ defmodule ExponentServerSdk.PushNotification do """ @spec get_receipts(list()) :: Parser.success() | Parser.error() def get_receipts(ids) when is_list(ids) do - ids - |> PushMessage.create_receipt_id_list() - PushNotification.post!("getReceipts", %{ids: ids}) |> Parser.parse() end diff --git a/test/exponent_server_sdk/push_message_test.exs b/test/exponent_server_sdk/push_message_test.exs index 87d8c97..e48baea 100644 --- a/test/exponent_server_sdk/push_message_test.exs +++ b/test/exponent_server_sdk/push_message_test.exs @@ -15,11 +15,11 @@ defmodule ExponentServerSdk.PushMessageTest do } message = %PushMessage{ - badge: nil, + badge: 1, body: "You got your first message", - channelId: nil, - data: nil, - expiration: nil, + channelId: "Default", + data: %{}, + expiration: 2419200, priority: "default", sound: "default", title: "Pushed!", @@ -47,11 +47,11 @@ defmodule ExponentServerSdk.PushMessageTest do messages = [ [ %PushMessage{ - badge: nil, + badge: 1, body: "You got your first message", - channelId: nil, - data: nil, - expiration: nil, + channelId: "Default", + data: %{}, + expiration: 2419200, priority: "default", sound: "default", title: "Pushed!", @@ -59,11 +59,11 @@ defmodule ExponentServerSdk.PushMessageTest do ttl: 0 }, %PushMessage{ - badge: nil, + badge: 1, body: "You got your second message", - channelId: nil, - data: nil, - expiration: nil, + channelId: "Default", + data: %{}, + expiration: 2419200, priority: "default", sound: "default", title: "Pushed Again!", diff --git a/test/exponent_server_sdk/push_notification_test.exs b/test/exponent_server_sdk/push_notification_test.exs index f8f3078..93bbe99 100644 --- a/test/exponent_server_sdk/push_notification_test.exs +++ b/test/exponent_server_sdk/push_notification_test.exs @@ -20,14 +20,15 @@ defmodule ExponentServerSdk.PushNotificationTest do with_fixture(:post!, json, fn -> # expected = {:ok, %{"status" => "ok", "id" => "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"}} - expected = - {:ok, - %{ - "status" => "error", - "details" => %{"error" => "DeviceNotRegistered"}, - "message" => - "\"ExponentPushToken[XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX]\" is not a registered push notification recipient" - }} + expected = {:ok, %{"status" => "ok", "id" => "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"}} + # {:ok, + # %{ + # "status" => "error", + # "details" => %{"error" => "DeviceNotRegistered"}, + # "message" => + # "\"ExponentPushToken[XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX]\" is not a registered push notification recipient" + # }} + assert expected == PushNotification.push(message_map) end) @@ -38,12 +39,14 @@ defmodule ExponentServerSdk.PushNotificationTest do %{ to: "ExponentPushToken[XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX]", title: "Pushed!", - body: "You got your first message" + body: "You got your first message", + data: %{} }, %{ to: "ExponentPushToken[YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY]", title: "Pushed Again!", - body: "You got your second message" + body: "You got your second message", + data: %{} } ] @@ -64,22 +67,24 @@ defmodule ExponentServerSdk.PushNotificationTest do # %{"status" => "ok", "id" => "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"} # ] # } - expected = - {:ok, - [ - %{ - "status" => "error", - "details" => %{"error" => "DeviceNotRegistered"}, - "message" => - "\"ExponentPushToken[XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX]\" is not a registered push notification recipient" - }, - %{ - "status" => "error", - "details" => %{"error" => "DeviceNotRegistered"}, - "message" => - "\"ExponentPushToken[YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY]\" is not a registered push notification recipient" - } - ]} + expected = [ + ok: [ + %{ + "details" => %{ + "error" => "DeviceNotRegistered" + }, + "message" => "\"ExponentPushToken[XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX]\" is not a registered push notification recipient", + "status" => "error" + }, + %{ + "details" => %{ + "error" => "DeviceNotRegistered" + }, + "message" => "\"ExponentPushToken[YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY]\" is not a registered push notification recipient", + "status" => "error" + } + ] + ] assert expected == PushNotification.push_list(message_list) end) @@ -159,11 +164,11 @@ defmodule ExponentServerSdk.PushNotificationTest do [ [ %PushMessage{ - badge: nil, + badge: 0, body: "You got your first message", - channelId: nil, - data: nil, - expiration: nil, + channelId: "Default", + data: %{}, + expiration: 2419200, priority: "default", sound: "default", title: "Pushed!", @@ -171,11 +176,11 @@ defmodule ExponentServerSdk.PushNotificationTest do ttl: 0 }, %PushMessage{ - badge: nil, + badge: 0, body: "You got your second message", - channelId: nil, - data: nil, - expiration: nil, + channelId: "Default", + data: %{}, + expiration: 2419200, priority: "default", sound: "default", title: "Pushed Again!",