discourse/app/controllers/admin/dashboard_controller.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

69 lines
1.7 KiB
Ruby
Raw Normal View History

2019-05-02 14:57:12 +08:00
# frozen_string_literal: true
class Admin::DashboardController < Admin::StaffController
def index
2019-04-01 18:39:49 +08:00
data = AdminDashboardIndexData.fetch_cached_stats
if SiteSetting.version_checks?
data.merge!(version_check: DiscourseUpdates.check_version.as_json)
end
render json: data
end
def moderation
end
2019-04-01 18:39:49 +08:00
def security
end
2019-04-01 18:39:49 +08:00
def reports
end
def general
render json: AdminDashboardGeneralData.fetch_cached_stats
end
def problems
ProblemCheck.realtime.run_all
render json: { problems: serialize_data(AdminNotice.problem.all, AdminNoticeSerializer) }
end
def new_features
new_features = DiscourseUpdates.new_features
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
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
private
def mark_new_features_as_seen
DiscourseUpdates.mark_new_features_as_seen(current_user.id)
end
2013-07-08 10:25:38 +08:00
end