Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Pleroma
pleroma
Commits
c9f6eb9a
Commit
c9f6eb9a
authored
Sep 19, 2018
by
kaniini
Committed by
kaniini
Sep 20, 2018
Browse files
user: implement dynamic refresh of profiles (gets rid of need for fix_ap_users task)
parent
f2727e23
Changes
2
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/user.ex
View file @
c9f6eb9a
...
...
@@ -22,6 +22,7 @@ defmodule Pleroma.User do
field
(
:info
,
:map
,
default:
%{})
field
(
:follower_address
,
:string
)
field
(
:search_distance
,
:float
,
virtual:
true
)
field
(
:last_refreshed_at
,
:naive_datetime
)
has_many
(
:notifications
,
Notification
)
timestamps
()
...
...
@@ -112,8 +113,12 @@ def update_changeset(struct, params \\ %{}) do
end
def
upgrade_changeset
(
struct
,
params
\\
%{})
do
params
=
params
|>
Map
.
put
(
:last_refreshed_at
,
NaiveDateTime
.
utc_now
())
struct
|>
cast
(
params
,
[
:bio
,
:name
,
:info
,
:follower_address
,
:avatar
])
|>
cast
(
params
,
[
:bio
,
:name
,
:info
,
:follower_address
,
:avatar
,
:last_refreshed_at
])
|>
unique_constraint
(
:nickname
)
|>
validate_format
(
:nickname
,
~r/^[a-zA-Z\d]+$/
)
|>
validate_length
(
:bio
,
max:
5000
)
...
...
@@ -169,6 +174,16 @@ def register_changeset(struct, params \\ %{}) do
end
end
def
needs_update?
(%
User
{
local:
true
}),
do
:
false
def
needs_update?
(%
User
{
local:
false
,
last_refreshed_at:
nil
}),
do
:
true
def
needs_update?
(%
User
{
local:
false
}
=
user
)
do
NaiveDateTime
.
diff
(
NaiveDateTime
.
utc_now
(),
user
.
last_refreshed_at
)
>=
86400
end
def
needs_update?
(
_
),
do
:
true
def
maybe_direct_follow
(%
User
{}
=
follower
,
%
User
{
info:
info
}
=
followed
)
do
user_config
=
Application
.
get_env
(
:pleroma
,
:user
)
deny_follow_blocked
=
Keyword
.
get
(
user_config
,
:deny_follow_blocked
)
...
...
@@ -655,7 +670,9 @@ def delete(%User{} = user) do
end
def
get_or_fetch_by_ap_id
(
ap_id
)
do
if
user
=
get_by_ap_id
(
ap_id
)
do
user
=
get_by_ap_id
(
ap_id
)
if
!is_nil
(
user
)
and
!User
.
needs_update?
(
user
)
do
user
else
ap_try
=
ActivityPub
.
make_user_from_ap_id
(
ap_id
)
...
...
priv/repo/migrations/20180919060348_users_add_last_refreshed_at.exs
0 → 100644
View file @
c9f6eb9a
defmodule
Pleroma
.
Repo
.
Migrations
.
UsersAddLastRefreshedAt
do
use
Ecto
.
Migration
def
change
do
alter
table
(
:users
)
do
add
:last_refreshed_at
,
:naive_datetime
end
end
end
Adam Piontek
@saxifrage
mentioned in issue
#302 (closed)
·
Sep 22, 2018
mentioned in issue
#302 (closed)
mentioned in issue #302
Toggle commit list
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment