about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/controllers/admin/accounts_controller.rb31
-rw-r--r--app/javascript/styles/admin.scss16
-rw-r--r--app/views/admin/accounts/show.html.haml10
-rw-r--r--app/views/admin/reports/show.html.haml4
4 files changed, 44 insertions, 17 deletions
diff --git a/app/controllers/admin/accounts_controller.rb b/app/controllers/admin/accounts_controller.rb
index 4c41c4215..ef2f8c4c2 100644
--- a/app/controllers/admin/accounts_controller.rb
+++ b/app/controllers/admin/accounts_controller.rb
@@ -2,16 +2,43 @@
 
 module Admin
   class AccountsController < BaseController
+    before_action :set_account, only: [:show, :subscribe, :unsubscribe, :redownload]
+    before_action :require_remote_account!, only: [:subscribe, :unsubscribe, :redownload]
+
     def index
       @accounts = filtered_accounts.page(params[:page])
     end
 
-    def show
-      @account = Account.find(params[:id])
+    def show; end
+
+    def subscribe
+      Pubsubhubbub::SubscribeWorker.perform_async(@account.id)
+      redirect_to admin_account_path(@account.id)
+    end
+
+    def unsubscribe
+      UnsubscribeService.new.call(@account)
+      redirect_to admin_account_path(@account.id)
+    end
+
+    def redownload
+      @account.avatar = @account.avatar_remote_url
+      @account.header = @account.header_remote_url
+      @account.save!
+
+      redirect_to admin_account_path(@account.id)
     end
 
     private
 
+    def set_account
+      @account = Account.find(params[:id])
+    end
+
+    def require_remote_account!
+      redirect_to admin_account_path(@account.id) if @account.local?
+    end
+
     def filtered_accounts
       AccountFilter.new(filter_params).results
     end
diff --git a/app/javascript/styles/admin.scss b/app/javascript/styles/admin.scss
index d011548a7..541e57f32 100644
--- a/app/javascript/styles/admin.scss
+++ b/app/javascript/styles/admin.scss
@@ -245,19 +245,13 @@
 
 .report-status__actions {
   flex: 0 0 auto;
-  position: relative;
-
-  .nsfw-button {
-    color: $white;
-    font-size: 11px;
-    width: 11px;
-    display: block;
-  }
+  display: flex;
+  flex-direction: column;
 
-  .trash-button {
-    position: absolute;
-    bottom: 10px;
+  .icon-button {
     font-size: 24px;
     width: 24px;
+    text-align: center;
+    margin-bottom: 10px;
   }
 }
diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml
index 1a9bd2c48..d91ba9c78 100644
--- a/app/views/admin/accounts/show.html.haml
+++ b/app/views/admin/accounts/show.html.haml
@@ -67,11 +67,17 @@
       %th= t('.targeted_reports')
       %td= link_to pluralize(@account.targeted_reports.count, t('.report')), admin_reports_path(target_account_id: @account.id)
 
-- if @account.local?
-  %div{ style: 'float: right' }
+
+%div{ style: 'float: right' }
+  - if @account.local?
     = link_to t('admin.accounts.reset_password'), admin_account_reset_path(@account.id), method: :create, class: 'button'
     - if @account.user&.otp_required_for_login?
       = link_to t('admin.accounts.disable_two_factor_authentication'), admin_user_two_factor_authentication_path(@account.user.id), method: :delete, class: 'button'
+  - else
+    = link_to @account.subscribed? ? t('admin.accounts.resubscribe') : t('admin.accounts.subscribe'), subscribe_admin_account_path(@account.id), method: :post, class: 'button'
+    - if @account.subscribed?
+      = link_to t('admin.accounts.unsubscribe'), unsubscribe_admin_account_path(@account.id), method: :post, class: 'button negative'
+    = link_to t('admin.accounts.redownload'), redownload_admin_account_path(@account.id), method: :post, class: 'button'
 
 %div{ style: 'float: left' }
   - if @account.silenced?
diff --git a/app/views/admin/reports/show.html.haml b/app/views/admin/reports/show.html.haml
index 560031079..7db5927ab 100644
--- a/app/views/admin/reports/show.html.haml
+++ b/app/views/admin/reports/show.html.haml
@@ -25,8 +25,8 @@
         .entry= render partial: 'stream_entries/simple_status', locals: { status: status }
       .report-status__actions
         - unless status.media_attachments.empty?
-          = link_to admin_report_reported_status_path(@report, status, status: { sensitive: !status.sensitive }), method: :patch, class: 'nsfw-button', title: t("admin.reports.nsfw.#{!status.sensitive}") do
-            = t("admin.reports.nsfw.#{!status.sensitive}")
+          = link_to admin_report_reported_status_path(@report, status, status: { sensitive: !status.sensitive }), method: :patch, class: 'icon-button nsfw-button', title: t("admin.reports.nsfw.#{!status.sensitive}") do
+            = fa_icon status.sensitive? ? 'eye' : 'eye-slash'
         = link_to admin_report_reported_status_path(@report, status), method: :delete, class: 'icon-button trash-button', title: t('admin.reports.delete'), data: { confirm: t('admin.reports.are_you_sure') } do
           = fa_icon 'trash'