Merge branch 'release/1.1.4' into 'stable'
Release/1.1.4 - user.info fix plus NOT NULL for user.info See merge request pleroma/pleroma!1927
This commit is contained in:
commit
21716aa594
|
@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
|
|
||||||
|
## [1.1.4] - 2019-11-01
|
||||||
|
### Fixed
|
||||||
|
- Added a migration that fills up empty user.info fields to prevent breakage after previous unsafe migrations.
|
||||||
|
- Failure to migrate from pre-1.0.0 versions
|
||||||
|
- Mastodon API: Notification stream not including follow notifications
|
||||||
|
|
||||||
## [1.1.3] - 2019-10-25
|
## [1.1.3] - 2019-10-25
|
||||||
### Fixed
|
### Fixed
|
||||||
- Blocked users showing up in notifications collapsed as if they were muted
|
- Blocked users showing up in notifications collapsed as if they were muted
|
||||||
|
|
|
@ -136,7 +136,7 @@ defp should_send?(%User{} = user, %Activity{} = item) do
|
||||||
recipients = MapSet.new(item.recipients)
|
recipients = MapSet.new(item.recipients)
|
||||||
domain_blocks = Pleroma.Web.ActivityPub.MRF.subdomains_regex(user.info.domain_blocks)
|
domain_blocks = Pleroma.Web.ActivityPub.MRF.subdomains_regex(user.info.domain_blocks)
|
||||||
|
|
||||||
with parent when not is_nil(parent) <- Object.normalize(item),
|
with parent <- Object.normalize(item) || item,
|
||||||
true <- Enum.all?([blocks, mutes, reblog_mutes], &(item.actor not in &1)),
|
true <- Enum.all?([blocks, mutes, reblog_mutes], &(item.actor not in &1)),
|
||||||
true <- Enum.all?([blocks, mutes], &(parent.data["actor"] not in &1)),
|
true <- Enum.all?([blocks, mutes], &(parent.data["actor"] not in &1)),
|
||||||
true <- MapSet.disjoint?(recipients, recipient_blocks),
|
true <- MapSet.disjoint?(recipients, recipient_blocks),
|
||||||
|
|
2
mix.exs
2
mix.exs
|
@ -4,7 +4,7 @@ defmodule Pleroma.Mixfile do
|
||||||
def project do
|
def project do
|
||||||
[
|
[
|
||||||
app: :pleroma,
|
app: :pleroma,
|
||||||
version: version("1.1.3"),
|
version: version("1.1.4"),
|
||||||
elixir: "~> 1.7",
|
elixir: "~> 1.7",
|
||||||
elixirc_paths: elixirc_paths(Mix.env()),
|
elixirc_paths: elixirc_paths(Mix.env()),
|
||||||
compilers: [:phoenix, :gettext] ++ Mix.compilers(),
|
compilers: [:phoenix, :gettext] ++ Mix.compilers(),
|
||||||
|
|
|
@ -8,10 +8,10 @@ defmodule Pleroma.Repo.Migrations.MigrateOldBookmarks do
|
||||||
|
|
||||||
def up do
|
def up do
|
||||||
query =
|
query =
|
||||||
from(u in User,
|
from(u in "users",
|
||||||
where: u.local == true,
|
where: u.local == true,
|
||||||
where: fragment("array_length(bookmarks, 1)") > 0,
|
where: fragment("array_length(?, 1)", u.bookmarks) > 0,
|
||||||
select: %{id: u.id, bookmarks: fragment("bookmarks")}
|
select: %{id: u.id, bookmarks: u.bookmarks}
|
||||||
)
|
)
|
||||||
|
|
||||||
Repo.stream(query)
|
Repo.stream(query)
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
defmodule Pleroma.Repo.Migrations.FixAndSecureUserInfoField do
|
||||||
|
use Ecto.Migration
|
||||||
|
|
||||||
|
def up do
|
||||||
|
execute("UPDATE users SET info = '{}'::jsonb WHERE info IS NULL")
|
||||||
|
|
||||||
|
execute("ALTER TABLE users
|
||||||
|
ALTER COLUMN info SET NOT NULL
|
||||||
|
")
|
||||||
|
end
|
||||||
|
|
||||||
|
def down do
|
||||||
|
execute("ALTER TABLE users
|
||||||
|
ALTER COLUMN info DROP NOT NULL
|
||||||
|
")
|
||||||
|
end
|
||||||
|
end
|
|
@ -3,6 +3,6 @@ defmodule Pleroma.Repo.Migrations.CopyMutedToMutedNotifications do
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
|
|
||||||
def change do
|
def change do
|
||||||
execute("update users set info = safe_jsonb_set(info, '{muted_notifications}', info->'mutes', true) where local = true")
|
execute("update users set info = safe_jsonb_set(info, '{muted_notifications}', info->'mutes', true) where local = true and info->'mutes' is not null")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
defmodule Pleroma.Repo.Migrations.FixNullMutedNotificationFields do
|
||||||
|
use Ecto.Migration
|
||||||
|
|
||||||
|
def change do
|
||||||
|
execute("update users set info = safe_jsonb_set(info, '{muted_notifications}', '[]'::jsonb, true) where local = true and info->'muted_notifications' = 'null'::jsonb")
|
||||||
|
end
|
||||||
|
end
|
|
@ -10,7 +10,8 @@ def build(data \\ %{}) do
|
||||||
password_hash: Comeonin.Pbkdf2.hashpwsalt("test"),
|
password_hash: Comeonin.Pbkdf2.hashpwsalt("test"),
|
||||||
bio: "A tester.",
|
bio: "A tester.",
|
||||||
ap_id: "some id",
|
ap_id: "some id",
|
||||||
last_digest_emailed_at: NaiveDateTime.truncate(NaiveDateTime.utc_now(), :second)
|
last_digest_emailed_at: NaiveDateTime.truncate(NaiveDateTime.utc_now(), :second),
|
||||||
|
info: %{}
|
||||||
}
|
}
|
||||||
|
|
||||||
Map.merge(user, data)
|
Map.merge(user, data)
|
||||||
|
|
|
@ -110,6 +110,24 @@ test "it doesn't send notify to the 'user:notification' stream' when a domain is
|
||||||
Streamer.stream("user:notification", notif)
|
Streamer.stream("user:notification", notif)
|
||||||
Task.await(task)
|
Task.await(task)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "it sends follow activities to the 'user:notification' stream", %{
|
||||||
|
user: user
|
||||||
|
} do
|
||||||
|
user2 = insert(:user)
|
||||||
|
task = Task.async(fn -> assert_receive {:text, _}, 4_000 end)
|
||||||
|
|
||||||
|
Streamer.add_socket(
|
||||||
|
"user:notification",
|
||||||
|
%{transport_pid: task.pid, assigns: %{user: user}}
|
||||||
|
)
|
||||||
|
|
||||||
|
{:ok, _follower, _followed, _activity} = CommonAPI.follow(user2, user)
|
||||||
|
|
||||||
|
# We don't directly pipe the notification to the streamer as it's already
|
||||||
|
# generated as a side effect of CommonAPI.follow().
|
||||||
|
Task.await(task)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
test "it sends to public" do
|
test "it sends to public" do
|
||||||
|
|
Loading…
Reference in New Issue