Class: Admin::DashboardController

Inherits:
StaffController
  • Object
show all
Defined in:
app/controllers/admin/dashboard_controller.rb

Instance Method Summary collapse

Instance Method Details

#generalObject



23
24
25
# File 'app/controllers/admin/dashboard_controller.rb', line 23

def general
  render json: AdminDashboardGeneralData.fetch_cached_stats
end

#indexObject



4
5
6
7
8
9
10
11
12
# File 'app/controllers/admin/dashboard_controller.rb', line 4

def index
  data = AdminDashboardIndexData.fetch_cached_stats

  if SiteSetting.version_checks?
    data.merge!(version_check: DiscourseUpdates.check_version.as_json)
  end

  render json: data
end

#moderationObject



14
15
# File 'app/controllers/admin/dashboard_controller.rb', line 14

def moderation
end

#new_featuresObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'app/controllers/admin/dashboard_controller.rb', line 33

def new_features
  force_refresh = params[:force_refresh] == "true"

  if force_refresh
    RateLimiter.new(
      current_user,
      "force-refresh-new-features",
      5,
      1.minute,
      apply_limit_to_staff: true,
    ).performed!
  end

  new_features = DiscourseUpdates.new_features(force_refresh:)

  if current_user.admin? && most_recent = new_features&.first
    DiscourseUpdates.bump_last_viewed_feature_date(current_user.id, most_recent["created_at"])
  end

  data = {
    new_features: new_features,
    has_unseen_features: DiscourseUpdates.has_unseen_features?(current_user.id),
    release_notes_link: AdminDashboardGeneralData.fetch_cached_stats["release_notes_link"],
  }

  mark_new_features_as_seen

  render json: data
end

#problemsObject



27
28
29
30
31
# File 'app/controllers/admin/dashboard_controller.rb', line 27

def problems
  ProblemCheck.realtime.run_all

  render json: { problems: serialize_data(AdminNotice.problem.all, AdminNoticeSerializer) }
end

#reportsObject



20
21
# File 'app/controllers/admin/dashboard_controller.rb', line 20

def reports
end

#securityObject



17
18
# File 'app/controllers/admin/dashboard_controller.rb', line 17

def security
end

#toggle_featureObject



63
64
65
66
67
68
69
70
71
72
73
# File 'app/controllers/admin/dashboard_controller.rb', line 63

def toggle_feature
  Experiments::Toggle.call(service_params) do
    on_success { render(json: success_json) }
    on_failure { render(json: failed_json, status: 422) }
    on_failed_policy(:current_user_is_admin) { raise Discourse::InvalidAccess }
    on_failed_policy(:setting_is_available) { raise Discourse::InvalidAccess }
    on_failed_contract do |contract|
      render(json: failed_json.merge(errors: contract.errors.full_messages), status: 400)
    end
  end
end