Created
January 18, 2021 15:58
-
-
Save gbutt/bbd4e937d816bb06898329de4fd8d771 to your computer and use it in GitHub Desktop.
Simple feature toggles in Salesforce
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public without sharing class Toggles { | |
private static final Map<String, Boolean> TOGGLE_CACHE; | |
static { | |
TOGGLE_CACHE = new Map<String, Boolean>(); | |
loadToggles(); | |
} | |
// temporary toggle - remove after enabled | |
public static Boolean DISABLE_CERT_MEMBERSHIP_EXTENSIONS { | |
get { | |
return getToggle('Disable_Cert_Membership_Extensions'); | |
} | |
set { | |
setToggle('Disable_Cert_Membership_Extensions', value); | |
} | |
} | |
// permanent toggle - do not remove | |
public static Boolean COURSE_REG_SALES_TAX_ENABLED { | |
get { | |
return getToggle('Course_Reg_Sales_Tax'); | |
} | |
set { | |
setToggle('Course_Reg_Sales_Tax', value); | |
} | |
} | |
private static void loadToggles() { | |
Feature_Toggle__mdt[] toggles = [SELECT QualifiedApiName, Enabled__c FROM Feature_Toggle__mdt]; | |
for (Feature_Toggle__mdt toggle : toggles) { | |
TOGGLE_CACHE.put(toggle.QualifiedApiName.toUpperCase(), toggle.Enabled__c); | |
} | |
} | |
private static Boolean getToggle(String toggleName) { | |
Boolean value = TOGGLE_CACHE.get(toggleName.toUpperCase()); | |
return value == null ? false : value; | |
} | |
private static void setToggle(String toggleName, Boolean value) { | |
TOGGLE_CACHE.put(toggleName.toUpperCase(), value); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment