Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F7893081
thread_mute.ex
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
1 KB
Referenced Files
None
Subscribers
None
thread_mute.ex
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.ThreadMute
do
use
Ecto.Schema
alias
Pleroma.Repo
alias
Pleroma.ThreadMute
alias
Pleroma.User
import
Ecto.Changeset
import
Ecto.Query
schema
"thread_mutes"
do
belongs_to
(
:user
,
User
,
type
:
FlakeId.Ecto.CompatType
)
field
(
:context
,
:string
)
end
def
changeset
(
mute
,
params
\\
%{})
do
mute
|>
cast
(
params
,
[
:user_id
,
:context
])
|>
foreign_key_constraint
(
:user_id
)
|>
unique_constraint
(
:user_id
,
name
:
:unique_index
)
end
def
query
(
user_id
,
context
)
do
user_binary_id
=
User
.
binary_id
(
user_id
)
ThreadMute
|>
where
(
user_id
:
^
user_binary_id
)
|>
where
(
context
:
^
context
)
end
def
muters_query
(
context
)
do
ThreadMute
|>
join
(
:inner
,
[
tm
],
u
in
assoc
(
tm
,
:user
))
|>
where
([
tm
],
tm
.
context
==
^
context
)
|>
select
([
tm
,
u
],
u
.
ap_id
)
end
def
muter_ap_ids
(
context
,
ap_ids
\\
nil
)
# Note: applies to fake activities (ActivityPub.Utils.get_notified_from_object/1 etc.)
def
muter_ap_ids
(
context
,
_ap_ids
)
when
is_nil
(
context
),
do
:
[]
def
muter_ap_ids
(
context
,
ap_ids
)
do
context
|>
muters_query
()
|>
maybe_filter_on_ap_id
(
ap_ids
)
|>
Repo
.
all
()
end
defp
maybe_filter_on_ap_id
(
query
,
ap_ids
)
when
is_list
(
ap_ids
)
do
where
(
query
,
[
tm
,
u
],
u
.
ap_id
in
^
ap_ids
)
end
defp
maybe_filter_on_ap_id
(
query
,
_ap_ids
),
do
:
query
def
add_mute
(
user_id
,
context
)
do
%
ThreadMute
{}
|>
changeset
(%{
user_id
:
user_id
,
context
:
context
})
|>
Repo
.
insert
()
end
def
remove_mute
(
user_id
,
context
)
do
query
(
user_id
,
context
)
|>
Repo
.
delete_all
()
end
def
exists?
(
user_id
,
context
)
do
query
(
user_id
,
context
)
|>
Repo
.
exists?
()
end
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Thu, Oct 2, 4:47 AM (1 d, 22 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
465585
Default Alt Text
thread_mute.ex (1 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment