defmodule Mobilizon.GraphQL.Resolvers.Users.ActivitySettings do @moduledoc """ Handles the user activity settings-related GraphQL calls. """ alias Mobilizon.Users alias Mobilizon.Users.{ActivitySetting, User} require Logger @spec user_activity_settings(any(), map(), Absinthe.Resolution.t()) :: {:ok, list(ActivitySetting.t())} | {:error, :unauthenticated} def user_activity_settings(_parent, _args, %{context: %{current_user: %User{} = user}}) do {:ok, Users.activity_settings_for_user(user)} end def user_activity_settings(_parent, _args, _context) do {:error, :unauthenticated} end @spec upsert_user_activity_setting(any(), map(), Absinthe.Resolution.t()) :: {:ok, ActivitySetting.t()} | {:error, :unauthenticated} def upsert_user_activity_setting(_parent, args, %{context: %{current_user: %User{id: user_id}}}) do Users.create_activity_setting(Map.put(args, :user_id, user_id)) end def upsert_user_activity_setting(_parent, _args, _resolution) do {:error, :unauthenticated} end end