From de48c06f998fcd229824e436b319ac1a8e683c1b Mon Sep 17 00:00:00 2001 From: "byte[]" Date: Sun, 17 Nov 2019 23:02:08 -0500 Subject: [PATCH] automatically subscribe user on post --- lib/philomena/comments.ex | 4 ++++ lib/philomena/images.ex | 1 + lib/philomena/posts.ex | 4 ++++ lib/philomena/topics.ex | 1 + 4 files changed, 10 insertions(+) diff --git a/lib/philomena/comments.ex b/lib/philomena/comments.ex index 6f77d0e6..6cb26ce3 100644 --- a/lib/philomena/comments.ex +++ b/lib/philomena/comments.ex @@ -9,6 +9,7 @@ defmodule Philomena.Comments do alias Philomena.Comments.Comment alias Philomena.Images.Image + alias Philomena.Images alias Philomena.Notifications @doc """ @@ -51,6 +52,9 @@ defmodule Philomena.Comments do Multi.new |> Multi.insert(:comment, comment) |> Multi.update_all(:image, image_query, inc: [comments_count: 1]) + |> Multi.run(:subscribe, fn _repo, _changes -> + Images.create_subscription(image, user) + end) |> Repo.transaction() end diff --git a/lib/philomena/images.ex b/lib/philomena/images.ex index d0705e73..3d7de462 100644 --- a/lib/philomena/images.ex +++ b/lib/philomena/images.ex @@ -141,6 +141,7 @@ defmodule Philomena.Images do {:error, %Ecto.Changeset{}} """ + def create_subscription(image, nil), do: {:ok, nil} def create_subscription(image, user) do %Subscription{image_id: image.id, user_id: user.id} |> Subscription.changeset(%{}) diff --git a/lib/philomena/posts.ex b/lib/philomena/posts.ex index 744c816b..d078385d 100644 --- a/lib/philomena/posts.ex +++ b/lib/philomena/posts.ex @@ -8,6 +8,7 @@ defmodule Philomena.Posts do alias Philomena.Repo alias Philomena.Topics.Topic + alias Philomena.Topics alias Philomena.Posts.Post alias Philomena.Forums.Forum alias Philomena.Notifications @@ -75,6 +76,9 @@ defmodule Philomena.Posts do {:ok, count} end) + |> Multi.run(:subscribe, fn _repo, _changes -> + Topics.create_subscription(topic, user) + end) |> Repo.isolated_transaction(:serializable) end diff --git a/lib/philomena/topics.ex b/lib/philomena/topics.ex index a63b3b3b..a235c406 100644 --- a/lib/philomena/topics.ex +++ b/lib/philomena/topics.ex @@ -123,6 +123,7 @@ defmodule Philomena.Topics do {:error, %Ecto.Changeset{}} """ + def create_subscription(topic, nil), do: {:ok, nil} def create_subscription(topic, user) do %Subscription{topic_id: topic.id, user_id: user.id} |> Subscription.changeset(%{})