Implement Infinite Scrolling for lightning-datatable

Salesforce Lightning Datatable Infinite Scrolling

If you are thinking this post is about implementing infinite scrolling behavior for lightning-datatable component, then you only got half part right. Main purpose of this blog post is to compare side by side @wire vs Imperative way of calling Apex and decide which one to use when?

If you are looking for basics of LWC or how to use LWC in flow, Lightning Message Service, how to call Apex then follow this link.

In this post, you would learn

  • How to call Apex in LWC using @wire
  • How to call Apex in LWC by Imperative approach
  • How to call Apex on component load event equivalent to init in Aura
  • Why would you choose to call Apex either by @wire or Imperative Apex approach
  • How to bind wrapper class in Lightning-datatable component
  • How to enable infinite scrolling in Lightning-datatable by making server call

Shell Script – Read all file names in Git Pull Request

In your CI / CD process, it could be very common scenario that you need to know name of all files thats part of any pull request. Example- in Salesforce you want to perform delta deployment with only components that are part of user story.

Below shell script demonstrates how we can read all file names and iterate through it. For Demo purpose, I’m just adding white space at end of each file however you can do anything as per you continuous integration pipeline requirement.

# File name - AddWhitespace.sh 
# Read list of all unique file and store as array - 231327
echo "Provide Pull Request Number"
read prNumber
echo "Your entered $prNumber"
#Read all files that are part of Git
fileNames=$(  git log origin/remoteBranchName --grep "$prNumber"  --pretty=format: --name-only | grep -v -e "^$" | sort | uniq )
#convert variable to array
IFS=$'\n' array=($fileNames) 
echo "------ Printing file names"
for element in "${array[@]}"
do   
    echo "Trying to add White space in $element"
    printf " " >> $element  
done

To run above file just use command

bash AddWhitespace.sh

Gravatar – Reusable Lightning Web Component

Gravatar - Reusable Lightning Web Component

Wouldn’t it would be great if we can use existing avatar of user on basis of email id instead of asking user to upload their profile pic ?

Gravatar is Globally recognized avatar used by millions of user and many websites like WordPress, github, stackoverflow etc.

Click here for Live Demo – Gravatar Component on public community

In this post, we would create a reusable lightning component which would receive below three parameters to construct avatar

  1. Email address to render avatar
  2. Size of avatar
  3. Should image be rendered as rounded corner

Gravatar would need MD5 equivalent of email address. There is no native Javascript library to compute MD5 hash, either we have to use Javascript library or we can use Apex to compute MD5 using crypto class. I preferred Apex class instead of any other library a shown below

Salesforce Load Testing using SOAPUI

API Load Testing using SOAPUI

Previously, I have added multiple posts in this blog on how you would face governor limit errors on each step of Salesforce implementation and how we can leverage selenium to perform load testing of Salesforce to some extent.

SOAP UI is powerful tool and in this post we will see how it can be used to perform load testing of Salesforce API.

Step 1 : Download PartnerWSDL from your Salesforce instance and create SOAP UI Project.

Step 2 : Create a Test Suite in SOAP UI

Limitations of LWC

LWC Not Supported

Almost all of us started using LWC instead of Aura or Visualforce however there are multiple occasion where we need to come back to either Aura or Visualforce.

I was not able to find single consolidated list of limitations of LWC and therefore thought to post this blog.

Feel free to comment on this blog post and help me keep this updated.

Unsupported features of Lightning Web Components

Using Custom Label in Lightning Web Components – LWC

Below is code snippet on using custom labels in Lightning Web Components.

Assume, we have custom label named welcomeText and exitText

In Javascript file of LWC, we have to follow below syntax

// CustomlabelExample.js
import { LightningElement } from 'lwc';
 
// Import custom labels
import welcomeText from '@salesforce/label/c.welcomeText';
import exitText from '@salesforce/label/c.exitText';


export default class CustomLabelExample extends LightningElement { 

    // Expose the labels to use in the template.
    label = {
        welcomeText,
        exitText
    };
}

Notice, how we imported label and used c. if there is no namespace.

import welcomeText from '@salesforce/label/c.welcomeText';
<!-- CustomlabelExample.html -->
<template>
    Hi , {label.welcomeText} !!! 
   <!-- some more code --> 
   Sorry to see you going, {label.exitText}
</template>

Reference :

Sharing records in partner community from different Accounts

Using Account Relationship Data Sharing Rule

As we know there are limited options to share records between community users.

For Customer Community , we can use Sharing set or Sharing Group.

For Customer Community Plus & Partner Community we can use role & Sharing rule. Maximum role that community can have is 3 per account and thats limitation there as well.

Now , lets assume below scenario

Salesforce Integration Patterns & Best Practices – with Video

Integration Patterns in Salesforce

Recently I gave talk in one of most active webinar of Salesforce ecosystem today – Apex hours on topic Integration Patterns and Best Practices in Salesforce.

Response was more than expected and questions were high quality. Therefore, I thought to quickly write high level summary of presentation in this blog post along with Youtube video that you can find towards the end of this post.

Firewall, Proxy and Reverse Proxy

Before integrating anything with Salesforce, as per Architect, it is necessary which system components are important for security and may impact with integration pattern to be used.

Firewalls : It controls and protects Malicious Traffics. Firewall can be hardware or software based.

Proxy aka Forward Proxy : Proxy normally configured in your browser or systems like VsCode, data loader, eclipse to hide your actual identity. Every outgoing request transmits through proxy server to make sure external systems unaware about your true origin and identity

Reverse Proxy : Its used by Web Servers and sits before it. It can server any purpose like authentication or perform security related stuff. Best example is Mulesoft where we can configure API proxy which is used to apply throttling, avoiding DoS attacks or applying SLA as per licenses provided to customer

Mastering Visual Studio and Salesforce DX

Salesforce DX on Udemy

I’m delighted to announce new Udemy course Mastering Visual Studio & Salesforce DX recorded by me and my friend Amit Chaudhary.

This course is for

This course is for you if answer to any of below question is yes

  • New Salesforce Developer and wondering how Visual Studio and Salesforce DX fits together
  • Salesforce Admin who don’t want to stay behind adapting source based development methodology
  • Experience Salesforce developer worked immensely on force.com IDE and ANT migration toolkit but not able to fit with new development paradigm
  • Advance developer or Architect who wants to understand how Unlocked package is different than manage package and unmanaged package
  • Want to streamline CI / CD process by developing some advance plugin

Curriculum

  1. What is Salesforce DX and why do we need it if we already had ANT based metadata tool
  2. How to remember Salesforce DX
  3. How admins can use Visual Studio without knowing Salesforce DX command
  4. Why do we need Scratch Org and difference between scratch org and Sandbox
  5. When to use Scratch Org
  6. How to perform relational data load using SalesforceDX
  7. Automating scripts , from 10 commands to single command
  8. How JWT OAuth works with Salesforce DX
  9. How Salesforce DX plugin boiler plate can be created within 5 minutes

Udemy is running huge sale , Click below image to get discounted price for this course !!!