From dfd25c2a1448cd52adac96e1c5d310f3cdb58753 Mon Sep 17 00:00:00 2001 From: Yuri Bocharov Date: Sun, 7 Jul 2024 15:17:37 -0400 Subject: [PATCH] Feat/replace old feature flags with flipper (#5852) * feat: replace hand rolled feature flags with flipper * feat: use devise for auth --- app/assets/stylesheets/application.scss | 3 +- .../feature_flags_controller.rb | 10 ------- app/javascript/all_casa_admin.js | 1 - .../src/all_casa_admin/feature_flags.js | 30 ------------------- app/models/feature_flag.rb | 18 ----------- app/policies/case_contact_policy.rb | 2 +- app/services/feature_flag_service.rb | 16 ---------- .../feature_flags/index.html.erb | 18 ----------- app/views/casa_org/edit.html.erb | 2 +- .../layouts/_all_casa_admin_sidebar.html.erb | 4 +-- config/initializers/all_casa_admin_access.rb | 6 ++++ config/routes.rb | 24 ++++++++------- .../20240622020203_drop_feature_flags.rb | 15 ++++++++++ db/schema.rb | 10 +------ ...05830_enable_show_additional_expenses.rake | 13 -------- spec/factories/feature_flags.rb | 6 ---- spec/models/feature_flag_spec.rb | 14 --------- .../all_casa_admins/feature_flags_spec.rb | 26 ---------------- spec/services/feature_flag_service_spec.rb | 11 ------- .../all_casa_admins/sessions/new_spec.rb | 9 ++++++ .../case_contacts/additional_expenses_spec.rb | 2 +- spec/system/case_contacts/create_spec.rb | 2 +- spec/system/case_contacts/new_spec.rb | 3 +- .../feature_flags/index.html.erb_spec.rb | 20 ------------- spec/views/casa_orgs/edit.html.erb_spec.rb | 4 +-- 25 files changed, 55 insertions(+), 214 deletions(-) delete mode 100644 app/controllers/all_casa_admins/feature_flags_controller.rb delete mode 100644 app/javascript/src/all_casa_admin/feature_flags.js delete mode 100644 app/models/feature_flag.rb delete mode 100644 app/services/feature_flag_service.rb delete mode 100644 app/views/all_casa_admins/feature_flags/index.html.erb create mode 100644 config/initializers/all_casa_admin_access.rb create mode 100644 db/migrate/20240622020203_drop_feature_flags.rb delete mode 100644 lib/tasks/deployment/20220825005830_enable_show_additional_expenses.rake delete mode 100644 spec/factories/feature_flags.rb delete mode 100644 spec/models/feature_flag_spec.rb delete mode 100644 spec/requests/all_casa_admins/feature_flags_spec.rb delete mode 100644 spec/services/feature_flag_service_spec.rb delete mode 100644 spec/views/all_casa_admins/feature_flags/index.html.erb_spec.rb diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index cd122331ad..2be96e7119 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -37,7 +37,6 @@ @use "pages/case_contacts_form"; @use "pages/court_dates"; @use "pages/emancipation"; -@use "pages/feature_flags"; @use "pages/login"; @use "pages/password"; @use "pages/patch_notes"; @@ -45,5 +44,5 @@ @use "pages/supervisors"; @use "pages/volunteers"; -@use 'trix/dist/trix.css'; +@use "trix/dist/trix.css"; @use "actiontext"; diff --git a/app/controllers/all_casa_admins/feature_flags_controller.rb b/app/controllers/all_casa_admins/feature_flags_controller.rb deleted file mode 100644 index c1d75f76ed..0000000000 --- a/app/controllers/all_casa_admins/feature_flags_controller.rb +++ /dev/null @@ -1,10 +0,0 @@ -class AllCasaAdmins::FeatureFlagsController < AllCasaAdminsController - def index - @feature_flags = FeatureFlag.all.order(name: "asc") - end - - def update - @feature_flag = FeatureFlag.find(params[:id]) - @feature_flag.update(enabled: !@feature_flag.enabled) - end -end diff --git a/app/javascript/all_casa_admin.js b/app/javascript/all_casa_admin.js index 97d90c31ef..6324ded939 100644 --- a/app/javascript/all_casa_admin.js +++ b/app/javascript/all_casa_admin.js @@ -1,5 +1,4 @@ require('./src/all_casa_admin/tables') require('./src/all_casa_admin/patch_notes') -require('./src/all_casa_admin/feature_flags') require('./src/session_timeout_poller.js') require('./src/display_app_metric.js') diff --git a/app/javascript/src/all_casa_admin/feature_flags.js b/app/javascript/src/all_casa_admin/feature_flags.js deleted file mode 100644 index e72d0419e9..0000000000 --- a/app/javascript/src/all_casa_admin/feature_flags.js +++ /dev/null @@ -1,30 +0,0 @@ -$(function () { - const checkboxes = $('.form-check-input.toggle-switch') - - checkboxes.on('change', function (e) { - e.preventDefault() - const featureFlagId = $(this).data('feature-flag-id') - const uniqueCheckbox = $('#feature-checkbox-' + featureFlagId) - const csrfToken = $('meta[name=csrf-token]').attr('content') - const isChecked = this.checked - toggleSwitch(uniqueCheckbox, csrfToken, featureFlagId, isChecked) - }) - - function toggleSwitch (uniqueCheckbox, csrfToken, featureFlagId, checked) { - $.ajax({ - url: `/all_casa_admins/feature_flags/${featureFlagId}`, - method: 'PATCH', - contentType: 'application/json', - headers: { - 'X-CSRF-Token': csrfToken - }, - success: function () { - if (checked) { - uniqueCheckbox.prop('checked', true) - } else { - uniqueCheckbox.prop('checked', false) - } - } - }) - } -}) diff --git a/app/models/feature_flag.rb b/app/models/feature_flag.rb deleted file mode 100644 index 5b996ba80a..0000000000 --- a/app/models/feature_flag.rb +++ /dev/null @@ -1,18 +0,0 @@ -class FeatureFlag < ApplicationRecord - validates :name, presence: true, uniqueness: true -end - -# == Schema Information -# -# Table name: feature_flags -# -# id :bigint not null, primary key -# enabled :boolean default(FALSE), not null -# name :string not null -# created_at :datetime not null -# updated_at :datetime not null -# -# Indexes -# -# index_feature_flags_on_name (name) UNIQUE -# diff --git a/app/policies/case_contact_policy.rb b/app/policies/case_contact_policy.rb index e64815b589..d406307299 100644 --- a/app/policies/case_contact_policy.rb +++ b/app/policies/case_contact_policy.rb @@ -12,7 +12,7 @@ def destroy? end def additional_expenses_allowed? - FeatureFlagService.is_enabled?(FeatureFlagService::SHOW_ADDITIONAL_EXPENSES_FLAG) && + Flipper.enabled?(:show_additional_expenses) && current_organization.additional_expenses_enabled end diff --git a/app/services/feature_flag_service.rb b/app/services/feature_flag_service.rb deleted file mode 100644 index 0847197394..0000000000 --- a/app/services/feature_flag_service.rb +++ /dev/null @@ -1,16 +0,0 @@ -class FeatureFlagService - SOME_FLAG = "some_flag" - SHOW_ADDITIONAL_EXPENSES_FLAG = "show_additional_expenses" - - def self.is_enabled?(feature_flag_name) - FeatureFlag.find_by(name: feature_flag_name)&.enabled - end - - def self.enable!(feature_flag_name) - FeatureFlag.find_or_create_by(name: feature_flag_name).update!(enabled: true) - end - - def self.disable!(feature_flag_name) - FeatureFlag.find_or_create_by(name: feature_flag_name).update!(enabled: false) - end -end diff --git a/app/views/all_casa_admins/feature_flags/index.html.erb b/app/views/all_casa_admins/feature_flags/index.html.erb deleted file mode 100644 index 8e19f73c20..0000000000 --- a/app/views/all_casa_admins/feature_flags/index.html.erb +++ /dev/null @@ -1,18 +0,0 @@ -
-

Feature Flags

- - - <% @feature_flags.each do |feature_flag| %> - - - - - <% end %> - -
<%= feature_flag.name %> -
- checked <% end %>> - -
-
-
diff --git a/app/views/casa_org/edit.html.erb b/app/views/casa_org/edit.html.erb index 7805b8250f..75a1cc4c66 100644 --- a/app/views/casa_org/edit.html.erb +++ b/app/views/casa_org/edit.html.erb @@ -80,7 +80,7 @@ <%# Twilio Form End %> - <% if FeatureFlagService.is_enabled?(FeatureFlagService::SHOW_ADDITIONAL_EXPENSES_FLAG) %> + <% if Flipper.enabled?(:show_additional_expenses) %>
<%= form.check_box :additional_expenses_enabled, class: 'form-check-input' %> <%= form.label :additional_expenses_enabled, "Volunteers can add Other Expenses", class: 'form-check-label mb-2' %> diff --git a/app/views/layouts/_all_casa_admin_sidebar.html.erb b/app/views/layouts/_all_casa_admin_sidebar.html.erb index e029362731..0984d2cc6e 100644 --- a/app/views/layouts/_all_casa_admin_sidebar.html.erb +++ b/app/views/layouts/_all_casa_admin_sidebar.html.erb @@ -22,8 +22,8 @@ Edit Profile <% end %> -