Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F8613517
activity_expiration_worker.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
activity_expiration_worker.ex
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2019 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.ActivityExpirationWorker
do
alias
Pleroma.Activity
alias
Pleroma.ActivityExpiration
alias
Pleroma.Config
alias
Pleroma.Repo
alias
Pleroma.User
alias
Pleroma.Web.CommonAPI
require
Logger
use
GenServer
import
Ecto.Query
@schedule_interval
:timer
.
minutes
(
1
)
def
start_link
(
_
)
do
GenServer
.
start_link
(
__MODULE__
,
nil
)
end
@impl
true
def
init
(
_
)
do
if
Config
.
get
([
ActivityExpiration
,
:enabled
])
do
schedule_next
()
{
:ok
,
nil
}
else
:ignore
end
end
def
perform
(
:execute
,
expiration_id
)
do
try
do
expiration
=
ActivityExpiration
|>
where
([
e
],
e
.
id
==
^
expiration_id
)
|>
Repo
.
one!
()
activity
=
Activity
.
get_by_id_with_object
(
expiration
.
activity_id
)
user
=
User
.
get_by_ap_id
(
activity
.
object
.
data
[
"actor"
])
CommonAPI
.
delete
(
activity
.
id
,
user
)
rescue
error
->
Logger
.
error
(
"
#{
__MODULE__
}
Couldn't delete expired activity:
#{
inspect
(
error
)
}
"
)
end
end
@impl
true
def
handle_info
(
:perform
,
state
)
do
ActivityExpiration
.
due_expirations
(
@schedule_interval
)
|>
Enum
.
each
(
fn
expiration
->
PleromaJobQueue
.
enqueue
(
:activity_expiration
,
__MODULE__
,
[
:execute
,
expiration
.
id
])
end
)
schedule_next
()
{
:noreply
,
state
}
end
defp
schedule_next
do
Process
.
send_after
(
self
(),
:perform
,
@schedule_interval
)
end
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Sat, Oct 25, 4:20 PM (5 h, 25 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
529325
Default Alt Text
activity_expiration_worker.ex (1 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment