Skip to content

Instantly share code, notes, and snippets.

@gbutt
Created January 18, 2021 15:58
Show Gist options
  • Save gbutt/bbd4e937d816bb06898329de4fd8d771 to your computer and use it in GitHub Desktop.
Save gbutt/bbd4e937d816bb06898329de4fd8d771 to your computer and use it in GitHub Desktop.
Simple feature toggles in Salesforce
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