Skip to content

Commit f2fe85c

Browse files
authored
Dynamic field visibility for LogEntry__c HTTP response header fields (#569)
* Added new checkbox fields on LogEntry__c for long textarea fields that didn't previously have an equivalent checkbox field * Rewrote several tests in LogEntryHandler_Tests to be unit tests without DML * Resolved #566 by updating LogEntryRecordPage.flexipage to have conditional visibility for the fields HttpResponseHeaderKeys__c and HttpResponseHeaders__c, based on the new checkbox field HasHttpResponseHeaders__c
1 parent 4ede2fb commit f2fe85c

16 files changed

Lines changed: 501 additions & 248 deletions

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55

66
The most robust logger for Salesforce. Works with Apex, Lightning Components, Flow, Process Builder & Integrations. Designed for Salesforce admins, developers & architects.
77

8-
## Unlocked Package - v4.11.8
8+
## Unlocked Package - v4.11.10
99

10-
[![Install Unlocked Package in a Sandbox](./images/btn-install-unlocked-package-sandbox.png)](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t5Y000001OigJQAS)
11-
[![Install Unlocked Package in Production](./images/btn-install-unlocked-package-production.png)](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t5Y000001OigJQAS)
10+
[![Install Unlocked Package in a Sandbox](./images/btn-install-unlocked-package-sandbox.png)](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t5Y000001OigxQAC)
11+
[![Install Unlocked Package in Production](./images/btn-install-unlocked-package-production.png)](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t5Y000001OigxQAC)
1212
[![View Documentation](./images/btn-view-documentation.png)](https://jongpie.github.io/NebulaLogger/)
1313

14-
`sf package install --wait 20 --security-type AdminsOnly --package 04t5Y000001OigJQAS`
14+
`sf package install --wait 20 --security-type AdminsOnly --package 04t5Y000001OigxQAC`
1515

16-
`sfdx force:package:install --wait 20 --securitytype AdminsOnly --package 04t5Y000001OigJQAS`
16+
`sfdx force:package:install --wait 20 --securitytype AdminsOnly --package 04t5Y000001OigxQAC`
1717

1818
---
1919

nebula-logger/core/main/log-management/classes/LogEntryHandler.cls

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ public without sharing class LogEntryHandler extends LoggerSObjectHandler {
2525
protected override void executeBeforeInsert(List<SObject> triggerNew) {
2626
this.logEntries = (List<LogEntry__c>) triggerNew;
2727

28-
this.setCheckboxFields();
2928
this.setApexClassFields();
3029
this.setComponentFields();
3130
this.setFlowDefinitionFields();
3231
this.setFlowVersionFields();
3332
this.setRecordNames();
33+
this.setCheckboxFields();
3434
}
3535

3636
protected override void executeBeforeUpdate(Map<Id, SObject> triggerNewMap, Map<Id, SObject> triggerOldMap) {
@@ -43,17 +43,6 @@ public without sharing class LogEntryHandler extends LoggerSObjectHandler {
4343
this.setCheckboxFields();
4444
}
4545

46-
private void setCheckboxFields() {
47-
// A formula field can't be used for checking if a long text area field is set/null
48-
// So, this code handles maintaing some checkbox fields via Apex instead
49-
for (LogEntry__c logEntry : this.logEntries) {
50-
logEntry.HasExceptionStackTrace__c = logEntry.ExceptionStackTrace__c != null;
51-
logEntry.HasInlineTags__c = logEntry.Tags__c != null;
52-
logEntry.HasRecordJson__c = logEntry.RecordJson__c != null;
53-
logEntry.HasStackTrace__c = logEntry.StackTrace__c != null;
54-
}
55-
}
56-
5746
private void setApexClassFields() {
5847
List<String> apexClassNames = new List<String>();
5948
List<LogEntry__c> apexLogEntries = new List<LogEntry__c>();
@@ -271,6 +260,23 @@ public without sharing class LogEntryHandler extends LoggerSObjectHandler {
271260
}
272261
}
273262

263+
private void setCheckboxFields() {
264+
// Long textarea fields can't be used in filters for SOQL, list views, etc, and a formula field can't be used
265+
// for checking if a long text area field is set/null...
266+
// So, this code handles maintaining some checkbox fields via Apex instead
267+
for (LogEntry__c logEntry : this.logEntries) {
268+
logEntry.HasDatabaseResultJson__c = logEntry.DatabaseResultJson__c != null;
269+
logEntry.HasExceptionStackTrace__c = logEntry.ExceptionStackTrace__c != null;
270+
logEntry.HasHttpRequestBody__c = logEntry.HttpRequestBody__c != null;
271+
logEntry.HasHttpResponseBody__c = logEntry.HttpResponseBody__c != null;
272+
logEntry.HasHttpResponseHeaderKeys__c = logEntry.HttpResponseHeaderKeys__c != null;
273+
logEntry.HasHttpResponseHeaders__c = logEntry.HttpResponseHeaders__c != null;
274+
logEntry.HasInlineTags__c = logEntry.Tags__c != null;
275+
logEntry.HasRecordJson__c = logEntry.RecordJson__c != null;
276+
logEntry.HasStackTrace__c = logEntry.StackTrace__c != null;
277+
}
278+
}
279+
274280
private String getDisplayFieldApiName(Schema.SObjectType sobjectType) {
275281
if (SOBJECT_TYPE_TO_DISPLAY_FIELD_NAME.containsKey(sobjectType)) {
276282
return SOBJECT_TYPE_TO_DISPLAY_FIELD_NAME.get(sobjectType);

nebula-logger/core/main/log-management/flexipages/LogEntryRecordPage.flexipage-meta.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -594,6 +594,13 @@
594594
</fieldInstanceProperties>
595595
<fieldItem>Record.HttpResponseHeaderKeys__c</fieldItem>
596596
<identifier>RecordHttpResponseHeaderKeys_cField1</identifier>
597+
<visibilityRule>
598+
<criteria>
599+
<leftValue>{!Record.HasHttpResponseHeaders__c}</leftValue>
600+
<operator>EQUAL</operator>
601+
<rightValue>false</rightValue>
602+
</criteria>
603+
</visibilityRule>
597604
</fieldInstance>
598605
</itemInstances>
599606
<itemInstances>
@@ -604,6 +611,13 @@
604611
</fieldInstanceProperties>
605612
<fieldItem>Record.HttpResponseHeaders__c</fieldItem>
606613
<identifier>RecordHttpResponseHeaders_cField1</identifier>
614+
<visibilityRule>
615+
<criteria>
616+
<leftValue>{!Record.HasHttpResponseHeaders__c}</leftValue>
617+
<operator>EQUAL</operator>
618+
<rightValue>true</rightValue>
619+
</criteria>
620+
</visibilityRule>
607621
</fieldInstance>
608622
</itemInstances>
609623
<itemInstances>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
3+
<fullName>HasDatabaseResultJson__c</fullName>
4+
<businessStatus>Active</businessStatus>
5+
<complianceGroup>None</complianceGroup>
6+
<defaultValue>false</defaultValue>
7+
<externalId>false</externalId>
8+
<label>Has Database Result JSON</label>
9+
<securityClassification>Confidential</securityClassification>
10+
<trackFeedHistory>false</trackFeedHistory>
11+
<trackTrending>false</trackTrending>
12+
<type>Checkbox</type>
13+
</CustomField>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
3+
<fullName>HasHttpRequestBody__c</fullName>
4+
<businessStatus>Active</businessStatus>
5+
<complianceGroup>None</complianceGroup>
6+
<defaultValue>false</defaultValue>
7+
<externalId>false</externalId>
8+
<label>Has HTTP Request Body</label>
9+
<securityClassification>Confidential</securityClassification>
10+
<trackFeedHistory>false</trackFeedHistory>
11+
<trackTrending>false</trackTrending>
12+
<type>Checkbox</type>
13+
</CustomField>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
3+
<fullName>HasHttpResponseBody__c</fullName>
4+
<businessStatus>Active</businessStatus>
5+
<complianceGroup>None</complianceGroup>
6+
<defaultValue>false</defaultValue>
7+
<externalId>false</externalId>
8+
<label>Has HTTP Response Body</label>
9+
<securityClassification>Confidential</securityClassification>
10+
<trackFeedHistory>false</trackFeedHistory>
11+
<trackTrending>false</trackTrending>
12+
<type>Checkbox</type>
13+
</CustomField>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
3+
<fullName>HasHttpResponseHeaderKeys__c</fullName>
4+
<businessStatus>Active</businessStatus>
5+
<complianceGroup>None</complianceGroup>
6+
<defaultValue>false</defaultValue>
7+
<externalId>false</externalId>
8+
<label>Has HTTP Response Header Keys</label>
9+
<securityClassification>Confidential</securityClassification>
10+
<trackFeedHistory>false</trackFeedHistory>
11+
<trackTrending>false</trackTrending>
12+
<type>Checkbox</type>
13+
</CustomField>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
3+
<fullName>HasHttpResponseHeaders__c</fullName>
4+
<businessStatus>Active</businessStatus>
5+
<complianceGroup>None</complianceGroup>
6+
<defaultValue>false</defaultValue>
7+
<externalId>false</externalId>
8+
<label>Has HTTP Response Headers</label>
9+
<securityClassification>Confidential</securityClassification>
10+
<trackFeedHistory>false</trackFeedHistory>
11+
<trackTrending>false</trackTrending>
12+
<type>Checkbox</type>
13+
</CustomField>

nebula-logger/core/main/log-management/permissionsets/LoggerAdmin.permissionset-meta.xml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,11 @@
348348
<field>LogEntry__c.FlowVersionRunInMode__c</field>
349349
<readable>true</readable>
350350
</fieldPermissions>
351+
<fieldPermissions>
352+
<editable>false</editable>
353+
<field>LogEntry__c.HasDatabaseResultJson__c</field>
354+
<readable>true</readable>
355+
</fieldPermissions>
351356
<fieldPermissions>
352357
<editable>false</editable>
353358
<field>LogEntry__c.HasDatabaseResult__c</field>
@@ -363,6 +368,26 @@
363368
<field>LogEntry__c.HasException__c</field>
364369
<readable>true</readable>
365370
</fieldPermissions>
371+
<fieldPermissions>
372+
<editable>false</editable>
373+
<field>LogEntry__c.HasHttpRequestBody__c</field>
374+
<readable>true</readable>
375+
</fieldPermissions>
376+
<fieldPermissions>
377+
<editable>false</editable>
378+
<field>LogEntry__c.HasHttpResponseBody__c</field>
379+
<readable>true</readable>
380+
</fieldPermissions>
381+
<fieldPermissions>
382+
<editable>false</editable>
383+
<field>LogEntry__c.HasHttpResponseHeaderKeys__c</field>
384+
<readable>true</readable>
385+
</fieldPermissions>
386+
<fieldPermissions>
387+
<editable>false</editable>
388+
<field>LogEntry__c.HasHttpResponseHeaders__c</field>
389+
<readable>true</readable>
390+
</fieldPermissions>
366391
<fieldPermissions>
367392
<editable>false</editable>
368393
<field>LogEntry__c.HasInlineTags__c</field>
@@ -393,6 +418,11 @@
393418
<field>LogEntry__c.HttpRequestBody__c</field>
394419
<readable>true</readable>
395420
</fieldPermissions>
421+
<fieldPermissions>
422+
<editable>false</editable>
423+
<field>LogEntry__c.HttpRequestCompressed__c</field>
424+
<readable>true</readable>
425+
</fieldPermissions>
396426
<fieldPermissions>
397427
<editable>false</editable>
398428
<field>LogEntry__c.HttpRequestEndpoint__c</field>

nebula-logger/core/main/log-management/permissionsets/LoggerEndUser.permissionset-meta.xml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,11 @@
187187
<editable>false</editable>
188188
<field>LogEntry__c.FlowVersionRunInMode__c</field>
189189
<readable>true</readable>
190+
</fieldPermissions>
191+
<fieldPermissions>
192+
<editable>false</editable>
193+
<field>LogEntry__c.HasDatabaseResultJson__c</field>
194+
<readable>true</readable>
190195
</fieldPermissions>
191196
<fieldPermissions>
192197
<editable>false</editable>
@@ -203,6 +208,31 @@
203208
<field>LogEntry__c.HasException__c</field>
204209
<readable>true</readable>
205210
</fieldPermissions>
211+
<fieldPermissions>
212+
<editable>false</editable>
213+
<field>LogEntry__c.HasHttpRequestBody__c</field>
214+
<readable>true</readable>
215+
</fieldPermissions>
216+
<fieldPermissions>
217+
<editable>false</editable>
218+
<field>LogEntry__c.HasHttpResponseBody__c</field>
219+
<readable>true</readable>
220+
</fieldPermissions>
221+
<fieldPermissions>
222+
<editable>false</editable>
223+
<field>LogEntry__c.HasHttpResponseHeaderKeys__c</field>
224+
<readable>true</readable>
225+
</fieldPermissions>
226+
<fieldPermissions>
227+
<editable>false</editable>
228+
<field>LogEntry__c.HasHttpResponseHeaders__c</field>
229+
<readable>true</readable>
230+
</fieldPermissions>
231+
<fieldPermissions>
232+
<editable>false</editable>
233+
<field>LogEntry__c.HasInlineTags__c</field>
234+
<readable>true</readable>
235+
</fieldPermissions>
206236
<fieldPermissions>
207237
<editable>false</editable>
208238
<field>LogEntry__c.HasRecordId__c</field>

0 commit comments

Comments
 (0)