Add webpush front-end support

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2021-05-06 18:39:59 +02:00
parent 8c6b0003bc
commit 938f698b7a
99 changed files with 2594 additions and 1536 deletions

View File

@@ -64,6 +64,7 @@ defmodule Mobilizon.GraphQL.Schema.ConfigType do
field(:auth, :auth, description: "The instance auth methods")
field(:instance_feeds, :instance_feeds, description: "The instance's feed settings")
field(:web_push, :web_push, description: "Web Push settings for the instance")
end
@desc """
@@ -301,6 +302,11 @@ defmodule Mobilizon.GraphQL.Schema.ConfigType do
field(:enabled, :boolean, description: "Whether the instance-wide feeds are enabled")
end
object :web_push do
field(:enabled, :boolean, description: "Whether the WebPush feature is enabled")
field(:public_key, :string, description: "The server's public WebPush VAPID key")
end
object :config_queries do
@desc "Get the instance config"
field :config, :config do

View File

@@ -5,29 +5,32 @@ defmodule Mobilizon.GraphQL.Schema.Users.PushSubscription do
use Absinthe.Schema.Notation
alias Mobilizon.GraphQL.Resolvers.PushSubscription
@desc """
An object representing the keys for a push subscription
"""
input_object :push_subscription_keys do
field(:p256dh, non_null(:string))
field(:auth, non_null(:string))
end
# object :push_subscription do
# field(:id, :id)
# end
object :push_queries do
field :list_push_subscriptions, :paginated_push_subscription_list do
resolve(&PushSubscription.list_user_push_subscriptions/3)
end
end
# @desc "A paginated list of subscriptions"
# object :paginated_push_subscription_list do
# field(:elements, list_of(:push_subscription), description: "A list of push subscriptions")
# field(:total, :integer, description: "The total number of push subscriptions in the list")
# end
# object :push_queries do
# field :list_push_subscriptions, :paginated_push_subscription_list do
# resolve(&PushSubscription.list_user_push_subscriptions/3)
# end
# end
object :push_mutations do
field :register_push_mutation, :string do
field :register_push, :string do
arg(:endpoint, non_null(:string))
arg(:keys, non_null(:push_subscription_keys))
arg(:auth, non_null(:string))
arg(:p256dh, non_null(:string))
resolve(&PushSubscription.register_push_subscription/3)
end
field :unregister_push_mutation, :string do
arg(:id, non_null(:id))
field :unregister_push, :string do
arg(:endpoint, non_null(:string))
resolve(&PushSubscription.unregister_push_subscription/3)
end
end