瀏覽代碼

Merge branch 'develop' into docs/apache-config

youtube-fix
Mark Felder 3 年之前
父節點
當前提交
0b19534475
共有 100 個檔案被更改,包括 1607 行新增1119 行删除
  1. +4
    -1
      CHANGELOG.md
  2. +3
    -5
      docs/administration/CLI_tasks/user.md
  3. +1
    -1
      docs/installation/alpine_linux_en.md
  4. +1
    -1
      docs/installation/arch_linux_en.md
  5. +1
    -1
      docs/installation/debian_based_en.md
  6. +1
    -1
      docs/installation/debian_based_jp.md
  7. +1
    -1
      lib/mix/tasks/pleroma/email.ex
  8. +28
    -22
      lib/mix/tasks/pleroma/user.ex
  9. +1
    -1
      lib/pleroma/following_relationship.ex
  10. +1
    -1
      lib/pleroma/notification.ex
  11. +1
    -1
      lib/pleroma/stats.ex
  12. +22
    -26
      lib/pleroma/user.ex
  13. +3
    -3
      lib/pleroma/user/query.ex
  14. +1
    -1
      lib/pleroma/web/activity_pub/activity_pub.ex
  15. +1
    -1
      lib/pleroma/web/activity_pub/object_validators/common_validations.ex
  16. +4
    -4
      lib/pleroma/web/admin_api/controllers/user_controller.ex
  17. +1
    -1
      lib/pleroma/web/admin_api/views/account_view.ex
  18. +1
    -1
      lib/pleroma/web/api_spec/operations/admin/report_operation.ex
  19. +1
    -1
      lib/pleroma/web/api_spec/operations/admin/status_operation.ex
  20. +1
    -1
      lib/pleroma/web/mastodon_api/views/account_view.ex
  21. +1
    -1
      lib/pleroma/web/mastodon_api/views/status_view.ex
  22. +2
    -2
      lib/pleroma/web/mongoose_im/mongoose_im_controller.ex
  23. +1
    -1
      lib/pleroma/web/pleroma_api/views/emoji_reaction_view.ex
  24. +1
    -1
      lib/pleroma/web/twitter_api/controllers/util_controller.ex
  25. +1
    -1
      lib/pleroma/web/twitter_api/twitter_api.ex
  26. +2
    -2
      lib/pleroma/workers/background_worker.ex
  27. +22
    -0
      priv/repo/migrations/20201012173004_refactor_deactivated_user_field.exs
  28. +0
    -1
      priv/static/adminfe/chunk-1e46.0411a9b2.css
  29. +1
    -0
      priv/static/adminfe/chunk-bc60.4417dd06.css
  30. +1
    -1
      priv/static/adminfe/index.html
  31. +0
    -2
      priv/static/adminfe/static/js/app.01bfc983.js
  32. +0
    -1
      priv/static/adminfe/static/js/app.01bfc983.js.map
  33. +2
    -0
      priv/static/adminfe/static/js/app.1428845f.js
  34. +1
    -0
      priv/static/adminfe/static/js/app.1428845f.js.map
  35. +0
    -2
      priv/static/adminfe/static/js/chunk-1e46.7c2ee531.js
  36. +0
    -1
      priv/static/adminfe/static/js/chunk-1e46.7c2ee531.js.map
  37. +2
    -0
      priv/static/adminfe/static/js/chunk-35b1.50c1449b.js
  38. +1
    -0
      priv/static/adminfe/static/js/chunk-35b1.50c1449b.js.map
  39. +0
    -2
      priv/static/adminfe/static/js/chunk-35b1.ddb9524c.js
  40. +0
    -1
      priv/static/adminfe/static/js/chunk-35b1.ddb9524c.js.map
  41. +0
    -2
      priv/static/adminfe/static/js/chunk-606c.35588dea.js
  42. +0
    -1
      priv/static/adminfe/static/js/chunk-606c.35588dea.js.map
  43. +2
    -0
      priv/static/adminfe/static/js/chunk-606c.8ac52179.js
  44. +1
    -0
      priv/static/adminfe/static/js/chunk-606c.8ac52179.js.map
  45. +0
    -1
      priv/static/adminfe/static/js/chunk-7041.1495e01c.js.map
  46. +2
    -2
      priv/static/adminfe/static/js/chunk-7041.390b2ec4.js
  47. +1
    -0
      priv/static/adminfe/static/js/chunk-7041.390b2ec4.js.map
  48. +2
    -2
      priv/static/adminfe/static/js/chunk-7968.88218960.js
  49. +1
    -0
      priv/static/adminfe/static/js/chunk-7968.88218960.js.map
  50. +0
    -1
      priv/static/adminfe/static/js/chunk-7968.d6317b83.js.map
  51. +2
    -0
      priv/static/adminfe/static/js/chunk-bc60.79f8c7e7.js
  52. +1
    -0
      priv/static/adminfe/static/js/chunk-bc60.79f8c7e7.js.map
  53. +2
    -0
      priv/static/adminfe/static/js/chunk-f364.a5927f18.js
  54. +1
    -0
      priv/static/adminfe/static/js/chunk-f364.a5927f18.js.map
  55. +0
    -2
      priv/static/adminfe/static/js/chunk-f364.f22b0eee.js
  56. +0
    -1
      priv/static/adminfe/static/js/chunk-f364.f22b0eee.js.map
  57. +2
    -2
      priv/static/adminfe/static/js/runtime.6b30c658.js
  58. +1
    -1
      priv/static/adminfe/static/js/runtime.6b30c658.js.map
  59. +1
    -1
      priv/static/index.html
  60. +1430
    -968
      priv/static/static/emoji.json
  61. +0
    -2
      priv/static/static/js/10.46f441b948010eda4403.js
  62. +2
    -0
      priv/static/static/js/10.a11a612e4c1ef51ded17.js
  63. +1
    -1
      priv/static/static/js/10.a11a612e4c1ef51ded17.js.map
  64. +2
    -2
      priv/static/static/js/11.22872a1f83121e70a148.js
  65. +1
    -1
      priv/static/static/js/11.22872a1f83121e70a148.js.map
  66. +2
    -2
      priv/static/static/js/12.c6df5166dc6cdcf749e5.js
  67. +1
    -1
      priv/static/static/js/12.c6df5166dc6cdcf749e5.js.map
  68. +2
    -2
      priv/static/static/js/13.77214c18c6d2a9865281.js
  69. +1
    -1
      priv/static/static/js/13.77214c18c6d2a9865281.js.map
  70. +0
    -1
      priv/static/static/js/14.273855b3e4e27ce80219.js.map
  71. +2
    -2
      priv/static/static/js/14.e560f5e2f902b9ad2d0d.js
  72. +1
    -0
      priv/static/static/js/14.e560f5e2f902b9ad2d0d.js.map
  73. +2
    -2
      priv/static/static/js/15.2893c12f1ca2bcdc3cbf.js
  74. +1
    -0
      priv/static/static/js/15.2893c12f1ca2bcdc3cbf.js.map
  75. +0
    -1
      priv/static/static/js/15.afbe29b6665fcd015b2d.js.map
  76. +0
    -1
      priv/static/static/js/16.5e3f20da470591d0cabf.js.map
  77. +2
    -2
      priv/static/static/js/16.be7f4b788716bec25023.js
  78. +1
    -0
      priv/static/static/js/16.be7f4b788716bec25023.js.map
  79. +0
    -1
      priv/static/static/js/17.44e90ef82ee2ef12dc3f.js.map
  80. +2
    -2
      priv/static/static/js/17.4ddba89b4f8c284f6392.js
  81. +1
    -0
      priv/static/static/js/17.4ddba89b4f8c284f6392.js.map
  82. +2
    -0
      priv/static/static/js/18.990b88b57bf3a6809098.js
  83. +1
    -0
      priv/static/static/js/18.990b88b57bf3a6809098.js.map
  84. +0
    -2
      priv/static/static/js/18.9a5b877f94b2b53065e1.js
  85. +0
    -1
      priv/static/static/js/18.9a5b877f94b2b53065e1.js.map
  86. +0
    -1
      priv/static/static/js/19.1fd4da643df0abf89122.js.map
  87. +2
    -2
      priv/static/static/js/19.783715f17e3f98e8898e.js
  88. +1
    -0
      priv/static/static/js/19.783715f17e3f98e8898e.js.map
  89. +0
    -2
      priv/static/static/js/2.422e6c756ac673a6fd44.js
  90. +0
    -1
      priv/static/static/js/2.422e6c756ac673a6fd44.js.map
  91. +2
    -0
      priv/static/static/js/2.88fa7ac80b2020ac2b46.js
  92. +1
    -0
      priv/static/static/js/2.88fa7ac80b2020ac2b46.js.map
  93. +2
    -2
      priv/static/static/js/20.96c40f6c9db8c08633bd.js
  94. +1
    -0
      priv/static/static/js/20.96c40f6c9db8c08633bd.js.map
  95. +0
    -1
      priv/static/static/js/20.a64fd29da59076399a27.js.map
  96. +0
    -1
      priv/static/static/js/21.243d9e6ebf469a2dc740.js.map
  97. +2
    -2
      priv/static/static/js/21.5a9f8e39a7833c1aa117.js
  98. +1
    -0
      priv/static/static/js/21.5a9f8e39a7833c1aa117.js.map
  99. +2
    -2
      priv/static/static/js/22.d65671b9e5e00a0eb625.js
  100. +1
    -0
      priv/static/static/js/22.d65671b9e5e00a0eb625.js.map

+ 4
- 1
CHANGELOG.md 查看文件

@@ -8,9 +8,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

### Changed

- **Breaking:** Changed `mix pleroma.user toggle_confirmed` to `mix pleroma.user confirm`
- **Breaking**: Changed `mix pleroma.user toggle_confirmed` to `mix pleroma.user confirm`
- **Breaking**: Changed `mix pleroma.user toggle_activated` to `mix pleroma.user activate/deactivate`
- **Breaking**: AdminAPI changed User field `confirmation_pending` to `is_confirmed`
- **Breaking**: AdminAPI changed User field `approval_pending` to `is_approved`
- **Breaking**: AdminAPI changed User field `deactivated` to `is_active`
- Polls now always return a `voters_count`, even if they are single-choice.
- Admin Emails: The ap id is used as the user link in emails now.
- Improved registration workflow for email confirmation and account approval modes.
@@ -55,6 +57,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Streaming API: Posts and notifications are not dropped, when CLI task is executing.
- Creating incorrect IPv4 address-style HTTP links when encountering certain numbers.
- Reblog API Endpoint: Do not set visibility parameter to public by default and let CommonAPI to infer it from status, so a user can reblog their private status without explicitly setting reblog visibility to private.
- Tag URLs in statuses are now absolute

<details>
<summary>API Changes</summary>


+ 3
- 5
docs/administration/CLI_tasks/user.md 查看文件

@@ -133,22 +133,20 @@
mix pleroma.user sign_out <nickname>
```


## Deactivate or activate a user
## Activate a user

=== "OTP"

```sh
./bin/pleroma_ctl user toggle_activated <nickname>
./bin/pleroma_ctl user activate NICKNAME
```

=== "From Source"

```sh
mix pleroma.user toggle_activated <nickname>
mix pleroma.user activate NICKNAME
```


## Deactivate a user and unsubscribes local users from the user

=== "OTP"


+ 1
- 1
docs/installation/alpine_linux_en.md 查看文件

@@ -125,7 +125,7 @@ sudo -Hu pleroma mix deps.get
* Check the configuration and if all looks right, rename it, so Pleroma will load it (`prod.secret.exs` for productive instance, `dev.secret.exs` for development instances):

```shell
mv config/{generated_config.exs,prod.secret.exs}
sudo -Hu pleroma mv config/{generated_config.exs,prod.secret.exs}
```

* The previous command creates also the file `config/setup_db.psql`, with which you can create the database:


+ 1
- 1
docs/installation/arch_linux_en.md 查看文件

@@ -100,7 +100,7 @@ sudo -Hu pleroma mix deps.get
* Check the configuration and if all looks right, rename it, so Pleroma will load it (`prod.secret.exs` for productive instance, `dev.secret.exs` for development instances):

```shell
mv config/{generated_config.exs,prod.secret.exs}
sudo -Hu pleroma mv config/{generated_config.exs,prod.secret.exs}
```

* The previous command creates also the file `config/setup_db.psql`, with which you can create the database:


+ 1
- 1
docs/installation/debian_based_en.md 查看文件

@@ -98,7 +98,7 @@ sudo -Hu pleroma mix deps.get
* Check the configuration and if all looks right, rename it, so Pleroma will load it (`prod.secret.exs` for productive instance, `dev.secret.exs` for development instances):

```shell
mv config/{generated_config.exs,prod.secret.exs}
sudo -Hu pleroma mv config/{generated_config.exs,prod.secret.exs}
```




+ 1
- 1
docs/installation/debian_based_jp.md 查看文件

@@ -98,7 +98,7 @@ sudo -Hu pleroma mix pleroma.instance gen

* コンフィギュレーションを確認して、もし問題なければ、ファイル名を変更してください。
```
mv config/{generated_config.exs,prod.secret.exs}
sudo -Hu pleroma mv config/{generated_config.exs,prod.secret.exs}
```

* 先程のコマンドで、すでに `config/setup_db.psql` というファイルが作られています。このファイルをもとに、データベースを作成します。


+ 1
- 1
lib/mix/tasks/pleroma/email.ex 查看文件

@@ -33,7 +33,7 @@ defmodule Mix.Tasks.Pleroma.Email do

Pleroma.User.Query.build(%{
local: true,
deactivated: false,
is_active: true,
is_confirmed: false,
invisible: false
})


+ 28
- 22
lib/mix/tasks/pleroma/user.ex 查看文件

@@ -107,21 +107,6 @@ defmodule Mix.Tasks.Pleroma.User do
end
end

def run(["toggle_activated", nickname]) do
start_pleroma()

with %User{} = user <- User.get_cached_by_nickname(nickname) do
{:ok, user} = User.deactivate(user, !user.deactivated)

shell_info(
"Activation status of #{nickname}: #{if(user.deactivated, do: "de", else: "")}activated"
)
else
_ ->
shell_error("No user #{nickname}")
end
end

def run(["reset_password", nickname]) do
start_pleroma()

@@ -156,20 +141,41 @@ defmodule Mix.Tasks.Pleroma.User do
end
end

def run(["activate", nickname]) do
start_pleroma()

with %User{} = user <- User.get_cached_by_nickname(nickname),
false <- user.is_active do
User.set_activation(user, true)
:timer.sleep(500)

shell_info("Successfully activated #{nickname}")
else
true ->
shell_info("User #{nickname} already activated")

_ ->
shell_error("No user #{nickname}")
end
end

def run(["deactivate", nickname]) do
start_pleroma()

with %User{} = user <- User.get_cached_by_nickname(nickname) do
shell_info("Deactivating #{user.nickname}")
User.deactivate(user)
with %User{} = user <- User.get_cached_by_nickname(nickname),
true <- user.is_active do
User.set_activation(user, false)
:timer.sleep(500)

user = User.get_cached_by_id(user.id)

if Enum.empty?(Enum.filter(User.get_friends(user), & &1.local)) do
shell_info("Successfully unsubscribed all local followers from #{user.nickname}")
shell_info("Successfully deactivated #{nickname} and unsubscribed all local followers")
end
else
false ->
shell_info("User #{nickname} already deactivated")

_ ->
shell_error("No user #{nickname}")
end
@@ -365,7 +371,7 @@ defmodule Mix.Tasks.Pleroma.User do

Pleroma.User.Query.build(%{
local: true,
deactivated: false,
is_active: true,
is_moderator: false,
is_admin: false,
invisible: false
@@ -383,7 +389,7 @@ defmodule Mix.Tasks.Pleroma.User do

Pleroma.User.Query.build(%{
local: true,
deactivated: false,
is_active: true,
is_moderator: false,
is_admin: false,
invisible: false
@@ -420,7 +426,7 @@ defmodule Mix.Tasks.Pleroma.User do
shell_info(
"#{user.nickname} moderator: #{user.is_moderator}, admin: #{user.is_admin}, locked: #{
user.is_locked
}, deactivated: #{user.deactivated}"
}, is_active: #{user.is_active}"
)
end)
end)


+ 1
- 1
lib/pleroma/following_relationship.ex 查看文件

@@ -152,7 +152,7 @@ defmodule Pleroma.FollowingRelationship do
|> join(:inner, [r], f in assoc(r, :follower))
|> where([r], r.state == ^:follow_pending)
|> where([r], r.following_id == ^id)
|> where([r, f], f.deactivated != true)
|> where([r, f], f.is_active == true)
|> select([r, f], f)
|> Repo.all()
end


+ 1
- 1
lib/pleroma/notification.ex 查看文件

@@ -115,7 +115,7 @@ defmodule Pleroma.Notification do
|> where(
[n, a],
fragment(
"? not in (SELECT ap_id FROM users WHERE deactivated = 'true')",
"? not in (SELECT ap_id FROM users WHERE is_active = 'false')",
a.actor
)
)


+ 1
- 1
lib/pleroma/stats.ex 查看文件

@@ -75,7 +75,7 @@ defmodule Pleroma.Stats do

users_query =
from(u in User,
where: u.deactivated != true,
where: u.is_active == true,
where: u.local == true,
where: not is_nil(u.nickname),
where: not u.invisible


+ 22
- 26
lib/pleroma/user.ex 查看文件

@@ -117,7 +117,7 @@ defmodule Pleroma.User do
field(:confirmation_token, :string, default: nil)
field(:default_scope, :string, default: "public")
field(:domain_blocks, {:array, :string}, default: [])
field(:deactivated, :boolean, default: false)
field(:is_active, :boolean, default: true)
field(:no_rich_text, :boolean, default: false)
field(:ap_enabled, :boolean, default: false)
field(:is_moderator, :boolean, default: false)
@@ -217,7 +217,8 @@ defmodule Pleroma.User do
target_users_query = assoc(user, unquote(outgoing_relation_target))

if restrict_deactivated? do
restrict_deactivated(target_users_query)
target_users_query
|> User.Query.build(%{deactivated: false})
else
target_users_query
end
@@ -286,7 +287,7 @@ defmodule Pleroma.User do

@doc "Returns status account"
@spec account_status(User.t()) :: account_status()
def account_status(%User{deactivated: true}), do: :deactivated
def account_status(%User{is_active: false}), do: :deactivated
def account_status(%User{password_reset_pending: true}), do: :password_reset_pending
def account_status(%User{local: true, is_approved: false}), do: :approval_pending
def account_status(%User{local: true, is_confirmed: false}), do: :confirmation_pending
@@ -378,11 +379,6 @@ defmodule Pleroma.User do
def ap_following(%User{following_address: fa}) when is_binary(fa), do: fa
def ap_following(%User{} = user), do: "#{ap_id(user)}/following"

@spec restrict_deactivated(Ecto.Query.t()) :: Ecto.Query.t()
def restrict_deactivated(query) do
from(u in query, where: u.deactivated != ^true)
end

defp truncate_fields_param(params) do
if Map.has_key?(params, :fields) do
Map.put(params, :fields, Enum.map(params[:fields], &truncate_field/1))
@@ -777,7 +773,7 @@ defmodule Pleroma.User do
candidates = Config.get([:instance, :autofollowed_nicknames])

autofollowed_users =
User.Query.build(%{nickname: candidates, local: true, deactivated: false})
User.Query.build(%{nickname: candidates, local: true, is_active: true})
|> Repo.all()

follow_all(user, autofollowed_users)
@@ -938,7 +934,7 @@ defmodule Pleroma.User do
deny_follow_blocked = Config.get([:user, :deny_follow_blocked])

cond do
followed.deactivated ->
not followed.is_active ->
{:error, "Could not follow user: #{followed.nickname} is deactivated."}

deny_follow_blocked and blocks?(followed, follower) ->
@@ -1173,7 +1169,7 @@ defmodule Pleroma.User do

@spec get_followers_query(User.t(), pos_integer() | nil) :: Ecto.Query.t()
def get_followers_query(%User{} = user, nil) do
User.Query.build(%{followers: user, deactivated: false})
User.Query.build(%{followers: user, is_active: true})
end

def get_followers_query(%User{} = user, page) do
@@ -1349,7 +1345,7 @@ defmodule Pleroma.User do
@spec get_users_from_set([String.t()], keyword()) :: [User.t()]
def get_users_from_set(ap_ids, opts \\ []) do
local_only = Keyword.get(opts, :local_only, true)
criteria = %{ap_id: ap_ids, deactivated: false}
criteria = %{ap_id: ap_ids, is_active: true}
criteria = if local_only, do: Map.put(criteria, :local, true), else: criteria

User.Query.build(criteria)
@@ -1360,7 +1356,7 @@ defmodule Pleroma.User do
def get_recipients_from_activity(%Activity{recipients: to, actor: actor}) do
to = [actor | to]

query = User.Query.build(%{recipients_from_activity: to, local: true, deactivated: false})
query = User.Query.build(%{recipients_from_activity: to, local: true, is_active: true})

query
|> Repo.all()
@@ -1579,19 +1575,19 @@ defmodule Pleroma.User do

defp maybe_filter_on_ap_id(query, _ap_ids), do: query

def deactivate_async(user, status \\ true) do
BackgroundWorker.enqueue("deactivate_user", %{"user_id" => user.id, "status" => status})
def set_activation_async(user, status \\ true) do
BackgroundWorker.enqueue("user_activation", %{"user_id" => user.id, "status" => status})
end

def deactivate(user, status \\ true)

def deactivate(users, status) when is_list(users) do
@spec set_activation([User.t()], boolean()) :: {:ok, User.t()} | {:error, Changeset.t()}
def set_activation(users, status) when is_list(users) do
Repo.transaction(fn ->
for user <- users, do: deactivate(user, status)
for user <- users, do: set_activation(user, status)
end)
end

def deactivate(%User{} = user, status) do
@spec set_activation(User.t(), boolean()) :: {:ok, User.t()} | {:error, Changeset.t()}
def set_activation(%User{} = user, status) do
with {:ok, user} <- set_activation_status(user, status) do
user
|> get_followers()
@@ -1680,7 +1676,7 @@ defmodule Pleroma.User do
registration_reason: nil,
confirmation_token: nil,
domain_blocks: [],
deactivated: true,
is_active: false,
ap_enabled: false,
is_moderator: false,
is_admin: false,
@@ -1754,7 +1750,7 @@ defmodule Pleroma.User do
delete_or_deactivate(user)
end

def perform(:deactivate_async, user, status), do: deactivate(user, status)
def perform(:set_activation_async, user, status), do: set_activation(user, status)

@spec external_users_query() :: Ecto.Query.t()
def external_users_query do
@@ -2048,7 +2044,7 @@ defmodule Pleroma.User do

@spec all_superusers() :: [User.t()]
def all_superusers do
User.Query.build(%{super_users: true, local: true, deactivated: false})
User.Query.build(%{super_users: true, local: true, is_active: true})
|> Repo.all()
end

@@ -2089,7 +2085,7 @@ defmodule Pleroma.User do
left_join: a in Pleroma.Activity,
on: u.ap_id == a.actor,
where: not is_nil(u.nickname),
where: u.deactivated != ^true,
where: u.is_active == ^true,
where: u.id not in ^has_read_notifications,
group_by: u.id,
having:
@@ -2210,9 +2206,9 @@ defmodule Pleroma.User do
end

# Internal function; public one is `deactivate/2`
defp set_activation_status(user, deactivated) do
defp set_activation_status(user, status) do
user
|> cast(%{deactivated: deactivated}, [:deactivated])
|> cast(%{is_active: status}, [:is_active])
|> update_and_set_cache()
end



+ 3
- 3
lib/pleroma/user/query.ex 查看文件

@@ -137,7 +137,7 @@ defmodule Pleroma.User.Query do
defp compose_query({:external, _}, query), do: location_query(query, false)

defp compose_query({:active, _}, query) do
User.restrict_deactivated(query)
where(query, [u], u.is_active == true)
|> where([u], u.is_approved == true)
|> where([u], u.is_confirmed == true)
end
@@ -148,11 +148,11 @@ defmodule Pleroma.User.Query do
end

defp compose_query({:deactivated, false}, query) do
User.restrict_deactivated(query)
where(query, [u], u.is_active == true)
end

defp compose_query({:deactivated, true}, query) do
where(query, [u], u.deactivated == ^true)
where(query, [u], u.is_active == false)
end

defp compose_query({:confirmation_pending, bool}, query) do


+ 1
- 1
lib/pleroma/web/activity_pub/activity_pub.ex 查看文件

@@ -56,7 +56,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do

defp check_actor_is_active(actor) when is_binary(actor) do
case User.get_cached_by_ap_id(actor) do
%User{deactivated: deactivated} -> not deactivated
%User{is_active: true} -> true
_ -> false
end
end


+ 1
- 1
lib/pleroma/web/activity_pub/object_validators/common_validations.ex 查看文件

@@ -35,7 +35,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations do
cng
|> validate_change(field_name, fn field_name, actor ->
case User.get_cached_by_ap_id(actor) do
%User{deactivated: true} ->
%User{is_active: false} ->
[{field_name, "user is deactivated"}]

%User{} ->


+ 4
- 4
lib/pleroma/web/admin_api/controllers/user_controller.ex 查看文件

@@ -172,9 +172,9 @@ defmodule Pleroma.Web.AdminAPI.UserController do
def toggle_activation(%{assigns: %{user: admin}} = conn, %{"nickname" => nickname}) do
user = User.get_cached_by_nickname(nickname)

{:ok, updated_user} = User.deactivate(user, !user.deactivated)
{:ok, updated_user} = User.set_activation(user, !user.is_active)

action = if user.deactivated, do: "activate", else: "deactivate"
action = if !user.is_active, do: "activate", else: "deactivate"

ModerationLog.insert_log(%{
actor: admin,
@@ -189,7 +189,7 @@ defmodule Pleroma.Web.AdminAPI.UserController do

def activate(%{assigns: %{user: admin}} = conn, %{"nicknames" => nicknames}) do
users = Enum.map(nicknames, &User.get_cached_by_nickname/1)
{:ok, updated_users} = User.deactivate(users, false)
{:ok, updated_users} = User.set_activation(users, true)

ModerationLog.insert_log(%{
actor: admin,
@@ -204,7 +204,7 @@ defmodule Pleroma.Web.AdminAPI.UserController do

def deactivate(%{assigns: %{user: admin}} = conn, %{"nicknames" => nicknames}) do
users = Enum.map(nicknames, &User.get_cached_by_nickname/1)
{:ok, updated_users} = User.deactivate(users, true)
{:ok, updated_users} = User.set_activation(users, false)

ModerationLog.insert_log(%{
actor: admin,


+ 1
- 1
lib/pleroma/web/admin_api/views/account_view.ex 查看文件

@@ -73,7 +73,7 @@ defmodule Pleroma.Web.AdminAPI.AccountView do
"avatar" => avatar,
"nickname" => user.nickname,
"display_name" => display_name,
"deactivated" => user.deactivated,
"is_active" => user.is_active,
"local" => user.local,
"roles" => User.roles(user),
"tags" => user.tags || [],


+ 1
- 1
lib/pleroma/web/api_spec/operations/admin/report_operation.ex 查看文件

@@ -182,7 +182,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.ReportOperation do
properties:
Map.merge(Account.schema().properties, %{
nickname: %Schema{type: :string},
deactivated: %Schema{type: :boolean},
is_active: %Schema{type: :boolean},
local: %Schema{type: :boolean},
roles: %Schema{
type: :object,


+ 1
- 1
lib/pleroma/web/api_spec/operations/admin/status_operation.ex 查看文件

@@ -132,7 +132,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.StatusOperation do
avatar: %Schema{type: :string},
nickname: %Schema{type: :string},
display_name: %Schema{type: :string},
deactivated: %Schema{type: :boolean},
is_active: %Schema{type: :boolean},
local: %Schema{type: :boolean},
roles: %Schema{
type: :object,


+ 1
- 1
lib/pleroma/web/mastodon_api/views/account_view.ex 查看文件

@@ -376,7 +376,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
defp maybe_put_allow_following_move(data, _, _), do: data

defp maybe_put_activation_status(data, user, %User{is_admin: true}) do
Kernel.put_in(data, [:pleroma, :deactivated], user.deactivated)
Kernel.put_in(data, [:pleroma, :deactivated], !user.is_active)
end

defp maybe_put_activation_status(data, _, _), do: data


+ 1
- 1
lib/pleroma/web/mastodon_api/views/status_view.ex 查看文件

@@ -491,7 +491,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
def build_tags(object_tags) when is_list(object_tags) do
object_tags
|> Enum.filter(&is_binary/1)
|> Enum.map(&%{name: &1, url: "/tag/#{URI.encode(&1)}"})
|> Enum.map(&%{name: &1, url: "#{Pleroma.Web.base_url()}/tag/#{URI.encode(&1)}"})
end

def build_tags(_), do: []


+ 2
- 2
lib/pleroma/web/mongoose_im/mongoose_im_controller.ex 查看文件

@@ -14,7 +14,7 @@ defmodule Pleroma.Web.MongooseIM.MongooseIMController do
plug(RateLimiter, [name: :authentication, params: ["user"]] when action == :check_password)

def user_exists(conn, %{"user" => username}) do
with %User{} <- Repo.get_by(User, nickname: username, local: true, deactivated: false) do
with %User{} <- Repo.get_by(User, nickname: username, local: true, is_active: true) do
conn
|> json(true)
else
@@ -26,7 +26,7 @@ defmodule Pleroma.Web.MongooseIM.MongooseIMController do
end

def check_password(conn, %{"user" => username, "pass" => password}) do
with %User{password_hash: password_hash, deactivated: false} <-
with %User{password_hash: password_hash, is_active: true} <-
Repo.get_by(User, nickname: username, local: true),
true <- AuthenticationPlug.checkpw(password, password_hash) do
conn


+ 1
- 1
lib/pleroma/web/pleroma_api/views/emoji_reaction_view.ex 查看文件

@@ -26,7 +26,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionView do
user_ap_ids
|> Enum.map(&Pleroma.User.get_cached_by_ap_id/1)
|> Enum.filter(fn
%{deactivated: false} -> true
%{is_active: true} -> true
_ -> false
end)
end


+ 1
- 1
lib/pleroma/web/twitter_api/controllers/util_controller.ex 查看文件

@@ -150,7 +150,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do
def disable_account(%{assigns: %{user: user}} = conn, params) do
case CommonAPI.Utils.confirm_current_password(user, params["password"]) do
{:ok, user} ->
User.deactivate_async(user)
User.set_activation_async(user, false)
json(conn, %{status: "success"})

{:error, msg} ->


+ 1
- 1
lib/pleroma/web/twitter_api/twitter_api.ex 查看文件

@@ -59,7 +59,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do

def password_reset(nickname_or_email) do
with true <- is_binary(nickname_or_email),
%User{local: true, email: email, deactivated: false} = user when is_binary(email) <-
%User{local: true, email: email, is_active: true} = user when is_binary(email) <-
User.get_by_nickname_or_email(nickname_or_email),
{:ok, token_record} <- Pleroma.PasswordResetToken.create_token(user) do
user


+ 2
- 2
lib/pleroma/workers/background_worker.ex 查看文件

@@ -9,9 +9,9 @@ defmodule Pleroma.Workers.BackgroundWorker do

@impl Oban.Worker

def perform(%Job{args: %{"op" => "deactivate_user", "user_id" => user_id, "status" => status}}) do
def perform(%Job{args: %{"op" => "user_activation", "user_id" => user_id, "status" => status}}) do
user = User.get_cached_by_id(user_id)
User.perform(:deactivate_async, user, status)
User.perform(:set_activation_async, user, status)
end

def perform(%Job{args: %{"op" => "delete_user", "user_id" => user_id}}) do


+ 22
- 0
priv/repo/migrations/20201012173004_refactor_deactivated_user_field.exs 查看文件

@@ -0,0 +1,22 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only

defmodule Pleroma.Repo.Migrations.RefactorDeactivatedUserField do
use Ecto.Migration

def up do
# Flip the values before we change the meaning of the column
execute("UPDATE users SET deactivated = NOT deactivated;")
execute("ALTER TABLE users RENAME COLUMN deactivated TO is_active;")
execute("ALTER TABLE users ALTER COLUMN is_active SET DEFAULT true;")
execute("ALTER INDEX users_deactivated_index RENAME TO users_is_active_index;")
end

def down do
execute("UPDATE users SET is_active = NOT is_active;")
execute("ALTER TABLE users RENAME COLUMN is_active TO deactivated;")
execute("ALTER TABLE users ALTER COLUMN deactivated SET DEFAULT false;")
execute("ALTER INDEX users_is_active_index RENAME TO users_deactivated_index;")
end
end

+ 0
- 1
priv/static/adminfe/chunk-1e46.0411a9b2.css 查看文件

@@ -1 +0,0 @@
.actions-button[data-v-758e95f2]{text-align:left;width:350px;padding:10px}.actions-button-container[data-v-758e95f2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-dropdown[data-v-758e95f2]{float:right}.el-icon-edit[data-v-758e95f2]{margin-right:5px}.tag-container[data-v-758e95f2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tag-text[data-v-758e95f2]{padding-right:20px}.no-hover[data-v-758e95f2]:hover{color:#606266;background-color:#fff;cursor:auto}

+ 1
- 0
priv/static/adminfe/chunk-bc60.4417dd06.css 查看文件

@@ -0,0 +1 @@
.actions-button[data-v-6d7c9d64]{text-align:left;width:350px;padding:10px}.actions-button-container[data-v-6d7c9d64]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-dropdown[data-v-6d7c9d64]{float:right}.el-icon-edit[data-v-6d7c9d64]{margin-right:5px}.tag-container[data-v-6d7c9d64]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tag-text[data-v-6d7c9d64]{padding-right:20px}.no-hover[data-v-6d7c9d64]:hover{color:#606266;background-color:#fff;cursor:auto}

+ 1
- 1
priv/static/adminfe/index.html 查看文件

@@ -1 +1 @@
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=renderer content=webkit><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><title>Admin FE</title><link rel="shortcut icon" href=favicon.ico><link href=chunk-elementUI.f77689d7.css rel=stylesheet><link href=chunk-libs.5cf7f50a.css rel=stylesheet><link href=app.6fb984d1.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=static/js/runtime.5c1034c4.js></script><script type=text/javascript src=static/js/chunk-elementUI.21957ec8.js></script><script type=text/javascript src=static/js/chunk-libs.5ca2c8e8.js></script><script type=text/javascript src=static/js/app.01bfc983.js></script></body></html>
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=renderer content=webkit><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><title>Admin FE</title><link rel="shortcut icon" href=favicon.ico><link href=chunk-elementUI.f77689d7.css rel=stylesheet><link href=chunk-libs.5cf7f50a.css rel=stylesheet><link href=app.6fb984d1.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=static/js/runtime.6b30c658.js></script><script type=text/javascript src=static/js/chunk-elementUI.21957ec8.js></script><script type=text/javascript src=static/js/chunk-libs.5ca2c8e8.js></script><script type=text/javascript src=static/js/app.1428845f.js></script></body></html>

+ 0
- 2
priv/static/adminfe/static/js/app.01bfc983.js
文件差異過大導致無法顯示
查看文件


+ 0
- 1
priv/static/adminfe/static/js/app.01bfc983.js.map
文件差異過大導致無法顯示
查看文件


+ 2
- 0
priv/static/adminfe/static/js/app.1428845f.js
文件差異過大導致無法顯示
查看文件


+ 1
- 0
priv/static/adminfe/static/js/app.1428845f.js.map
文件差異過大導致無法顯示
查看文件


+ 0
- 2
priv/static/adminfe/static/js/chunk-1e46.7c2ee531.js
文件差異過大導致無法顯示
查看文件


+ 0
- 1
priv/static/adminfe/static/js/chunk-1e46.7c2ee531.js.map
文件差異過大導致無法顯示
查看文件


+ 2
- 0
priv/static/adminfe/static/js/chunk-35b1.50c1449b.js
文件差異過大導致無法顯示
查看文件


+ 1
- 0
priv/static/adminfe/static/js/chunk-35b1.50c1449b.js.map
文件差異過大導致無法顯示
查看文件


+ 0
- 2
priv/static/adminfe/static/js/chunk-35b1.ddb9524c.js
文件差異過大導致無法顯示
查看文件


+ 0
- 1
priv/static/adminfe/static/js/chunk-35b1.ddb9524c.js.map
文件差異過大導致無法顯示
查看文件


+ 0
- 2
priv/static/adminfe/static/js/chunk-606c.35588dea.js
文件差異過大導致無法顯示
查看文件


+ 0
- 1
priv/static/adminfe/static/js/chunk-606c.35588dea.js.map
文件差異過大導致無法顯示
查看文件


+ 2
- 0
priv/static/adminfe/static/js/chunk-606c.8ac52179.js
文件差異過大導致無法顯示
查看文件


+ 1
- 0
priv/static/adminfe/static/js/chunk-606c.8ac52179.js.map
文件差異過大導致無法顯示
查看文件


+ 0
- 1
priv/static/adminfe/static/js/chunk-7041.1495e01c.js.map
文件差異過大導致無法顯示
查看文件


priv/static/adminfe/static/js/chunk-7041.390b2ec4.js
文件差異過大導致無法顯示
查看文件


+ 1
- 0
priv/static/adminfe/static/js/chunk-7041.390b2ec4.js.map
文件差異過大導致無法顯示
查看文件


priv/static/adminfe/static/js/chunk-7968.88218960.js
文件差異過大導致無法顯示
查看文件


+ 1
- 0
priv/static/adminfe/static/js/chunk-7968.88218960.js.map
文件差異過大導致無法顯示
查看文件


+ 0
- 1
priv/static/adminfe/static/js/chunk-7968.d6317b83.js.map
文件差異過大導致無法顯示
查看文件


+ 2
- 0
priv/static/adminfe/static/js/chunk-bc60.79f8c7e7.js
文件差異過大導致無法顯示
查看文件


+ 1
- 0
priv/static/adminfe/static/js/chunk-bc60.79f8c7e7.js.map
文件差異過大導致無法顯示
查看文件


+ 2
- 0
priv/static/adminfe/static/js/chunk-f364.a5927f18.js
文件差異過大導致無法顯示
查看文件


+ 1
- 0
priv/static/adminfe/static/js/chunk-f364.a5927f18.js.map
文件差異過大導致無法顯示
查看文件


+ 0
- 2
priv/static/adminfe/static/js/chunk-f364.f22b0eee.js
文件差異過大導致無法顯示
查看文件


+ 0
- 1
priv/static/adminfe/static/js/chunk-f364.f22b0eee.js.map
文件差異過大導致無法顯示
查看文件


priv/static/adminfe/static/js/runtime.5c1034c4.js → priv/static/adminfe/static/js/runtime.6b30c658.js 查看文件

@@ -1,2 +1,2 @@
!function(e){function n(n){for(var t,r,a=n[0],h=n[1],f=n[2],i=0,k=[];i<a.length;i++)r=a[i],Object.prototype.hasOwnProperty.call(u,r)&&u[r]&&k.push(u[r][0]),u[r]=0;for(t in h)Object.prototype.hasOwnProperty.call(h,t)&&(e[t]=h[t]);for(d&&d(n);k.length;)k.shift()();return o.push.apply(o,f||[]),c()}function c(){for(var e,n=0;n<o.length;n++){for(var c=o[n],t=!0,r=1;r<c.length;r++){var h=c[r];0!==u[h]&&(t=!1)}t&&(o.splice(n--,1),e=a(a.s=c[0]))}return e}var t={},r={runtime:0},u={runtime:0},o=[];function a(n){if(t[n])return t[n].exports;var c=t[n]={i:n,l:!1,exports:{}};return e[n].call(c.exports,c,c.exports,a),c.l=!0,c.exports}a.e=function(e){var n=[];r[e]?n.push(r[e]):0!==r[e]&&{"chunk-68ea9":1,"chunk-6e81":1,"chunk-commons":1,"chunk-03c5":1,"chunk-0537":1,"chunk-1e46":1,"chunk-606c":1,"chunk-4770":1,"chunk-7c6b":1,"chunk-170f":1,"chunk-1e1e":1,"chunk-176e":1,"chunk-35b1":1,"chunk-7041":1,"chunk-7968":1,"chunk-f364":1,"chunk-e660":1}[e]&&n.push(r[e]=new Promise(function(n,c){for(var t=({"chunk-commons":"chunk-commons"}[e]||e)+"."+{"7zzA":"31d6cfe0",JEtC:"31d6cfe0","chunk-68ea9":"892994aa","chunk-6e81":"687d5046","chunk-commons":"f7c3d390","chunk-03c5":"3368e00c","chunk-0537":"76929cff","chunk-1e46":"0411a9b2","chunk-606c":"7c5b0a08","chunk-68ea":"31d6cfe0","chunk-4770":"20caaae1","chunk-7c6b":"b633878a","chunk-d55e":"31d6cfe0","chunk-170f":"fea927c5","chunk-1e1e":"5980e665","chunk-176e":"d9a630b2","chunk-35b1":"949db050","chunk-7041":"c5f6eab7","chunk-7968":"613084d0","chunk-f364":"4fd16c53",oAJy:"31d6cfe0","chunk-16d0":"31d6cfe0","chunk-e660":"62c077ac"}[e]+".css",r=a.p+t,u=document.getElementsByTagName("link"),o=0;o<u.length;o++){var h=(i=u[o]).getAttribute("data-href")||i.getAttribute("href");if("stylesheet"===i.rel&&(h===t||h===r))return n()}var f=document.getElementsByTagName("style");for(o=0;o<f.length;o++){var i;if((h=(i=f[o]).getAttribute("data-href"))===t||h===r)return n()}var d=document.createElement("link");d.rel="stylesheet",d.type="text/css",d.onload=n,d.onerror=function(n){var t=n&&n.target&&n.target.src||r,u=new Error("Loading CSS chunk "+e+" failed.\n("+t+")");u.request=t,c(u)},d.href=r,document.getElementsByTagName("head")[0].appendChild(d)}).then(function(){r[e]=0}));var c=u[e];if(0!==c)if(c)n.push(c[2]);else{var t=new Promise(function(n,t){c=u[e]=[n,t]});n.push(c[2]=t);var o,h=document.createElement("script");h.charset="utf-8",h.timeout=120,a.nc&&h.setAttribute("nonce",a.nc),h.src=function(e){return a.p+"static/js/"+({"chunk-commons":"chunk-commons"}[e]||e)+"."+{"7zzA":"e1ae1c94",JEtC:"f9ba4594","chunk-68ea9":"5a11341a","chunk-6e81":"6c4f2ce1","chunk-commons":"4ae74caa","chunk-03c5":"1b0ab243","chunk-0537":"d0eef370","chunk-1e46":"7c2ee531","chunk-606c":"35588dea","chunk-68ea":"6d56674a","chunk-4770":"1c1fff97","chunk-7c6b":"34152862","chunk-d55e":"f9bab96d","chunk-170f":"e1d6aac3","chunk-1e1e":"37f6f555","chunk-176e":"f64cb745","chunk-35b1":"ddb9524c","chunk-7041":"1495e01c","chunk-7968":"d6317b83","chunk-f364":"f22b0eee",oAJy:"2d5429b2","chunk-16d0":"fef0ce65","chunk-e660":"2101cafc"}[e]+".js"}(e);var f=new Error;o=function(n){h.onerror=h.onload=null,clearTimeout(i);var c=u[e];if(0!==c){if(c){var t=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;f.message="Loading chunk "+e+" failed.\n("+t+": "+r+")",f.name="ChunkLoadError",f.type=t,f.request=r,c[1](f)}u[e]=void 0}};var i=setTimeout(function(){o({type:"timeout",target:h})},12e4);h.onerror=h.onload=o,document.head.appendChild(h)}return Promise.all(n)},a.m=e,a.c=t,a.d=function(e,n,c){a.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:c})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,n){if(1&n&&(e=a(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var c=Object.create(null);if(a.r(c),Object.defineProperty(c,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var t in e)a.d(c,t,function(n){return e[n]}.bind(null,t));return c},a.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(n,"a",n),n},a.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},a.p="",a.oe=function(e){throw console.error(e),e};var h=window.webpackJsonp=window.webpackJsonp||[],f=h.push.bind(h);h.push=n,h=h.slice();for(var i=0;i<h.length;i++)n(h[i]);var d=f;c()}([]);
//# sourceMappingURL=runtime.5c1034c4.js.map
!function(e){function n(n){for(var t,r,a=n[0],h=n[1],f=n[2],i=0,d=[];i<a.length;i++)r=a[i],Object.prototype.hasOwnProperty.call(u,r)&&u[r]&&d.push(u[r][0]),u[r]=0;for(t in h)Object.prototype.hasOwnProperty.call(h,t)&&(e[t]=h[t]);for(k&&k(n);d.length;)d.shift()();return o.push.apply(o,f||[]),c()}function c(){for(var e,n=0;n<o.length;n++){for(var c=o[n],t=!0,r=1;r<c.length;r++){var h=c[r];0!==u[h]&&(t=!1)}t&&(o.splice(n--,1),e=a(a.s=c[0]))}return e}var t={},r={runtime:0},u={runtime:0},o=[];function a(n){if(t[n])return t[n].exports;var c=t[n]={i:n,l:!1,exports:{}};return e[n].call(c.exports,c,c.exports,a),c.l=!0,c.exports}a.e=function(e){var n=[];r[e]?n.push(r[e]):0!==r[e]&&{"chunk-68ea9":1,"chunk-6e81":1,"chunk-commons":1,"chunk-03c5":1,"chunk-0537":1,"chunk-4770":1,"chunk-7c6b":1,"chunk-bc60":1,"chunk-606c":1,"chunk-170f":1,"chunk-1e1e":1,"chunk-35b1":1,"chunk-7041":1,"chunk-7968":1,"chunk-176e":1,"chunk-f364":1,"chunk-e660":1}[e]&&n.push(r[e]=new Promise(function(n,c){for(var t=({"chunk-commons":"chunk-commons"}[e]||e)+"."+{"7zzA":"31d6cfe0",JEtC:"31d6cfe0","chunk-68ea9":"892994aa","chunk-6e81":"687d5046","chunk-commons":"f7c3d390","chunk-03c5":"3368e00c","chunk-0537":"76929cff","chunk-68ea":"31d6cfe0","chunk-4770":"20caaae1","chunk-7c6b":"b633878a","chunk-bc60":"4417dd06","chunk-606c":"7c5b0a08","chunk-d55e":"31d6cfe0","chunk-170f":"fea927c5","chunk-1e1e":"5980e665","chunk-35b1":"949db050","chunk-7041":"c5f6eab7","chunk-7968":"613084d0","chunk-176e":"d9a630b2","chunk-f364":"4fd16c53",oAJy:"31d6cfe0","chunk-16d0":"31d6cfe0","chunk-e660":"62c077ac"}[e]+".css",r=a.p+t,u=document.getElementsByTagName("link"),o=0;o<u.length;o++){var h=(i=u[o]).getAttribute("data-href")||i.getAttribute("href");if("stylesheet"===i.rel&&(h===t||h===r))return n()}var f=document.getElementsByTagName("style");for(o=0;o<f.length;o++){var i;if((h=(i=f[o]).getAttribute("data-href"))===t||h===r)return n()}var k=document.createElement("link");k.rel="stylesheet",k.type="text/css",k.onload=n,k.onerror=function(n){var t=n&&n.target&&n.target.src||r,u=new Error("Loading CSS chunk "+e+" failed.\n("+t+")");u.request=t,c(u)},k.href=r,document.getElementsByTagName("head")[0].appendChild(k)}).then(function(){r[e]=0}));var c=u[e];if(0!==c)if(c)n.push(c[2]);else{var t=new Promise(function(n,t){c=u[e]=[n,t]});n.push(c[2]=t);var o,h=document.createElement("script");h.charset="utf-8",h.timeout=120,a.nc&&h.setAttribute("nonce",a.nc),h.src=function(e){return a.p+"static/js/"+({"chunk-commons":"chunk-commons"}[e]||e)+"."+{"7zzA":"e1ae1c94",JEtC:"f9ba4594","chunk-68ea9":"5a11341a","chunk-6e81":"6c4f2ce1","chunk-commons":"4ae74caa","chunk-03c5":"1b0ab243","chunk-0537":"d0eef370","chunk-68ea":"6d56674a","chunk-4770":"1c1fff97","chunk-7c6b":"34152862","chunk-bc60":"79f8c7e7","chunk-606c":"8ac52179","chunk-d55e":"f9bab96d","chunk-170f":"e1d6aac3","chunk-1e1e":"37f6f555","chunk-35b1":"50c1449b","chunk-7041":"390b2ec4","chunk-7968":"88218960","chunk-176e":"f64cb745","chunk-f364":"a5927f18",oAJy:"2d5429b2","chunk-16d0":"fef0ce65","chunk-e660":"2101cafc"}[e]+".js"}(e);var f=new Error;o=function(n){h.onerror=h.onload=null,clearTimeout(i);var c=u[e];if(0!==c){if(c){var t=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;f.message="Loading chunk "+e+" failed.\n("+t+": "+r+")",f.name="ChunkLoadError",f.type=t,f.request=r,c[1](f)}u[e]=void 0}};var i=setTimeout(function(){o({type:"timeout",target:h})},12e4);h.onerror=h.onload=o,document.head.appendChild(h)}return Promise.all(n)},a.m=e,a.c=t,a.d=function(e,n,c){a.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:c})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,n){if(1&n&&(e=a(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var c=Object.create(null);if(a.r(c),Object.defineProperty(c,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var t in e)a.d(c,t,function(n){return e[n]}.bind(null,t));return c},a.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(n,"a",n),n},a.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},a.p="",a.oe=function(e){throw console.error(e),e};var h=window.webpackJsonp=window.webpackJsonp||[],f=h.push.bind(h);h.push=n,h=h.slice();for(var i=0;i<h.length;i++)n(h[i]);var k=f;c()}([]);
//# sourceMappingURL=runtime.6b30c658.js.map

priv/static/adminfe/static/js/runtime.6b30c658.js.map
文件差異過大導致無法顯示
查看文件


+ 1
- 1
priv/static/index.html 查看文件

@@ -1 +1 @@
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,user-scalable=no"><title>Pleroma</title><!--server-generated-meta--><link rel=icon type=image/png href=/favicon.png><link href=/static/css/app.9a4c5ede37b2f0230836.css rel=stylesheet></head><body class=hidden><noscript>To use Pleroma, please enable JavaScript.</noscript><div id=app></div><script type=text/javascript src=/static/js/vendors~app.952124344a84613dbac0.js></script><script type=text/javascript src=/static/js/app.45547c05212c403dd77c.js></script></body></html>
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,user-scalable=no"><!--server-generated-meta--><link rel=icon type=image/png href=/favicon.png><link href=/static/css/app.9a4c5ede37b2f0230836.css rel=stylesheet></head><body class=hidden><noscript>To use Pleroma, please enable JavaScript.</noscript><div id=app></div><script type=text/javascript src=/static/js/vendors~app.54838a79dee084ec3dad.js></script><script type=text/javascript src=/static/js/app.eb8f7164fc75862a251d.js></script></body></html>

+ 1430
- 968
priv/static/static/emoji.json
文件差異過大導致無法顯示
查看文件


+ 0
- 2
priv/static/static/js/10.46f441b948010eda4403.js
文件差異過大導致無法顯示
查看文件


+ 2
- 0
priv/static/static/js/10.a11a612e4c1ef51ded17.js
文件差異過大導致無法顯示
查看文件


priv/static/static/js/10.46f441b948010eda4403.js.map → priv/static/static/js/10.a11a612e4c1ef51ded17.js.map 查看文件

@@ -1 +1 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/10.46f441b948010eda4403.js","sourceRoot":""}
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/10.a11a612e4c1ef51ded17.js","sourceRoot":""}

priv/static/static/js/11.22872a1f83121e70a148.js
文件差異過大導致無法顯示
查看文件


priv/static/static/js/11.8ff1ed54814f2d34cb3e.js.map → priv/static/static/js/11.22872a1f83121e70a148.js.map 查看文件

@@ -1 +1 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/11.8ff1ed54814f2d34cb3e.js","sourceRoot":""}
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/11.22872a1f83121e70a148.js","sourceRoot":""}

priv/static/static/js/12.c6df5166dc6cdcf749e5.js
文件差異過大導致無法顯示
查看文件


priv/static/static/js/12.13204bdd0ad5703a3ea3.js.map → priv/static/static/js/12.c6df5166dc6cdcf749e5.js.map 查看文件

@@ -1 +1 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/12.13204bdd0ad5703a3ea3.js","sourceRoot":""}
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/12.c6df5166dc6cdcf749e5.js","sourceRoot":""}

priv/static/static/js/13.77214c18c6d2a9865281.js
文件差異過大導致無法顯示
查看文件


priv/static/static/js/13.e27c3eeddcc4b11c1f54.js.map → priv/static/static/js/13.77214c18c6d2a9865281.js.map 查看文件

@@ -1 +1 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/13.e27c3eeddcc4b11c1f54.js","sourceRoot":""}
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/13.77214c18c6d2a9865281.js","sourceRoot":""}

+ 0
- 1
priv/static/static/js/14.273855b3e4e27ce80219.js.map 查看文件

@@ -1 +0,0 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/14.273855b3e4e27ce80219.js","sourceRoot":""}

priv/static/static/js/14.e560f5e2f902b9ad2d0d.js
文件差異過大導致無法顯示
查看文件


+ 1
- 0
priv/static/static/js/14.e560f5e2f902b9ad2d0d.js.map 查看文件

@@ -0,0 +1 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/14.e560f5e2f902b9ad2d0d.js","sourceRoot":""}

priv/static/static/js/15.2893c12f1ca2bcdc3cbf.js
文件差異過大導致無法顯示
查看文件


+ 1
- 0
priv/static/static/js/15.2893c12f1ca2bcdc3cbf.js.map 查看文件

@@ -0,0 +1 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/15.2893c12f1ca2bcdc3cbf.js","sourceRoot":""}

+ 0
- 1
priv/static/static/js/15.afbe29b6665fcd015b2d.js.map 查看文件

@@ -1 +0,0 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/15.afbe29b6665fcd015b2d.js","sourceRoot":""}

+ 0
- 1
priv/static/static/js/16.5e3f20da470591d0cabf.js.map 查看文件

@@ -1 +0,0 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/16.5e3f20da470591d0cabf.js","sourceRoot":""}

priv/static/static/js/16.be7f4b788716bec25023.js
文件差異過大導致無法顯示
查看文件


+ 1
- 0
priv/static/static/js/16.be7f4b788716bec25023.js.map 查看文件

@@ -0,0 +1 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/16.be7f4b788716bec25023.js","sourceRoot":""}

+ 0
- 1
priv/static/static/js/17.44e90ef82ee2ef12dc3f.js.map 查看文件

@@ -1 +0,0 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/17.44e90ef82ee2ef12dc3f.js","sourceRoot":""}

priv/static/static/js/17.44e90ef82ee2ef12dc3f.js → priv/static/static/js/17.4ddba89b4f8c284f6392.js 查看文件

@@ -1,2 +1,2 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{583:function(e){e.exports={finder:{error_fetching_user:"Hiba felhasználó beszerzésével",find_user:"Felhasználó keresése"},general:{submit:"Elküld"},login:{login:"Bejelentkezés",logout:"Kijelentkezés",password:"Jelszó",placeholder:"e.g. lain",register:"Feliratkozás",username:"Felhasználó név"},nav:{mentions:"Említéseim",public_tl:"Publikus Idővonal",timeline:"Idővonal",twkn:"Az Egész Ismert Hálózat"},notifications:{followed_you:"követ téged",notifications:"Értesítések",read:"Olvasva!"},post_status:{default:"Most érkeztem L.A.-be",posting:"Küldés folyamatban"},registration:{bio:"Bio",email:"Email",fullname:"Teljes név",password_confirm:"Jelszó megerősítése",registration:"Feliratkozás"},settings:{attachments:"Csatolmányok",avatar:"Avatár",bio:"Bio",current_avatar:"Jelenlegi avatár",current_profile_banner:"Jelenlegi profil banner",filtering:"Szűrés",filtering_explanation:"Minden tartalom mely ezen szavakat tartalmazza némítva lesz, soronként egy",hide_attachments_in_convo:"Csatolmányok elrejtése a társalgásokban",hide_attachments_in_tl:"Csatolmányok elrejtése az idővonalon",name:"Név",name_bio:"Név és Bio",nsfw_clickthrough:"NSFW átkattintási tartalom elrejtésének engedélyezése",profile_background:"Profil háttérkép",profile_banner:"Profil Banner",set_new_avatar:"Új avatár",set_new_profile_background:"Új profil háttér beállítása",set_new_profile_banner:"Új profil banner",settings:"Beállítások",theme:"Téma",user_settings:"Felhasználói beállítások"},timeline:{conversation:"Társalgás",error_fetching:"Hiba a frissítések beszerzésénél",load_older:"Régebbi állapotok betöltése",show_new:"Újak mutatása",up_to_date:"Naprakész"},user_card:{block:"Letilt",blocked:"Letiltva!",follow:"Követ",followees:"Követettek",followers:"Követők",following:"Követve!",follows_you:"Követ téged!",mute:"Némít",muted:"Némított",per_day:"naponta",statuses:"Állapotok"}}}}]);
//# sourceMappingURL=17.44e90ef82ee2ef12dc3f.js.map
(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{584:function(e){e.exports={finder:{error_fetching_user:"Hiba felhasználó beszerzésével",find_user:"Felhasználó keresése"},general:{submit:"Elküld"},login:{login:"Bejelentkezés",logout:"Kijelentkezés",password:"Jelszó",placeholder:"e.g. lain",register:"Feliratkozás",username:"Felhasználó név"},nav:{mentions:"Említéseim",public_tl:"Publikus Idővonal",timeline:"Idővonal",twkn:"Az Egész Ismert Hálózat"},notifications:{followed_you:"követ téged",notifications:"Értesítések",read:"Olvasva!"},post_status:{default:"Most érkeztem L.A.-be",posting:"Küldés folyamatban"},registration:{bio:"Bio",email:"Email",fullname:"Teljes név",password_confirm:"Jelszó megerősítése",registration:"Feliratkozás"},settings:{attachments:"Csatolmányok",avatar:"Avatár",bio:"Bio",current_avatar:"Jelenlegi avatár",current_profile_banner:"Jelenlegi profil banner",filtering:"Szűrés",filtering_explanation:"Minden tartalom mely ezen szavakat tartalmazza némítva lesz, soronként egy",hide_attachments_in_convo:"Csatolmányok elrejtése a társalgásokban",hide_attachments_in_tl:"Csatolmányok elrejtése az idővonalon",name:"Név",name_bio:"Név és Bio",nsfw_clickthrough:"NSFW átkattintási tartalom elrejtésének engedélyezése",profile_background:"Profil háttérkép",profile_banner:"Profil Banner",set_new_avatar:"Új avatár",set_new_profile_background:"Új profil háttér beállítása",set_new_profile_banner:"Új profil banner",settings:"Beállítások",theme:"Téma",user_settings:"Felhasználói beállítások"},timeline:{conversation:"Társalgás",error_fetching:"Hiba a frissítések beszerzésénél",load_older:"Régebbi állapotok betöltése",show_new:"Újak mutatása",up_to_date:"Naprakész"},user_card:{block:"Letilt",blocked:"Letiltva!",follow:"Követ",followees:"Követettek",followers:"Követők",following:"Követve!",follows_you:"Követ téged!",mute:"Némít",muted:"Némított",per_day:"naponta",statuses:"Állapotok"}}}}]);
//# sourceMappingURL=17.4ddba89b4f8c284f6392.js.map

+ 1
- 0
priv/static/static/js/17.4ddba89b4f8c284f6392.js.map 查看文件

@@ -0,0 +1 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/17.4ddba89b4f8c284f6392.js","sourceRoot":""}

+ 2
- 0
priv/static/static/js/18.990b88b57bf3a6809098.js
文件差異過大導致無法顯示
查看文件


+ 1
- 0
priv/static/static/js/18.990b88b57bf3a6809098.js.map 查看文件

@@ -0,0 +1 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/18.990b88b57bf3a6809098.js","sourceRoot":""}

+ 0
- 2
priv/static/static/js/18.9a5b877f94b2b53065e1.js
文件差異過大導致無法顯示
查看文件


+ 0
- 1
priv/static/static/js/18.9a5b877f94b2b53065e1.js.map 查看文件

@@ -1 +0,0 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/18.9a5b877f94b2b53065e1.js","sourceRoot":""}

+ 0
- 1
priv/static/static/js/19.1fd4da643df0abf89122.js.map 查看文件

@@ -1 +0,0 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/19.1fd4da643df0abf89122.js","sourceRoot":""}

priv/static/static/js/19.783715f17e3f98e8898e.js
文件差異過大導致無法顯示
查看文件


+ 1
- 0
priv/static/static/js/19.783715f17e3f98e8898e.js.map 查看文件

@@ -0,0 +1 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/19.783715f17e3f98e8898e.js","sourceRoot":""}

+ 0
- 2
priv/static/static/js/2.422e6c756ac673a6fd44.js
文件差異過大導致無法顯示
查看文件


+ 0
- 1
priv/static/static/js/2.422e6c756ac673a6fd44.js.map
文件差異過大導致無法顯示
查看文件


+ 2
- 0
priv/static/static/js/2.88fa7ac80b2020ac2b46.js
文件差異過大導致無法顯示
查看文件


+ 1
- 0
priv/static/static/js/2.88fa7ac80b2020ac2b46.js.map
文件差異過大導致無法顯示
查看文件


priv/static/static/js/20.96c40f6c9db8c08633bd.js
文件差異過大導致無法顯示
查看文件


+ 1
- 0
priv/static/static/js/20.96c40f6c9db8c08633bd.js.map 查看文件

@@ -0,0 +1 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/20.96c40f6c9db8c08633bd.js","sourceRoot":""}

+ 0
- 1
priv/static/static/js/20.a64fd29da59076399a27.js.map 查看文件

@@ -1 +0,0 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/20.a64fd29da59076399a27.js","sourceRoot":""}

+ 0
- 1
priv/static/static/js/21.243d9e6ebf469a2dc740.js.map 查看文件

@@ -1 +0,0 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/21.243d9e6ebf469a2dc740.js","sourceRoot":""}

priv/static/static/js/21.5a9f8e39a7833c1aa117.js
文件差異過大導致無法顯示
查看文件


+ 1
- 0
priv/static/static/js/21.5a9f8e39a7833c1aa117.js.map 查看文件

@@ -0,0 +1 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/21.5a9f8e39a7833c1aa117.js","sourceRoot":""}

priv/static/static/js/22.d65671b9e5e00a0eb625.js
文件差異過大導致無法顯示
查看文件


+ 1
- 0
priv/static/static/js/22.d65671b9e5e00a0eb625.js.map 查看文件

@@ -0,0 +1 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"static/js/22.d65671b9e5e00a0eb625.js","sourceRoot":""}

部分文件因文件數量過多而無法顯示

Loading…
取消
儲存