Following the announcement that the URL format in lightning experience will change from /one/one.app we are looking for a way of detecting which format is being used so that we can generate URLs in Apex.
For example, if we were to generate a PDF in Visualforce containing a URL to a lightning page we would like to correct the URL to use the correct format depending on whether the org is using `/one/one.app` or `/lightning`
What does it do?
From the announcement:
It changes the URL format used by Lightning Experience standard apps and the Salesforce mobile app. For example: Current format: https://<lightning.domain.com>/one/one.app/#/sObject/Account/home New format: https://<lightning.domain.com>/lightning/o/Account/home
In Summer '18 the new URL format will be enforced, but in Spring '18 it can be enabled for testing via a critical update.
Why do we care?
If the user enabled the critical update themselves we need to be able to make sure that our features still work.
The force:recordData attribute targetRecord promises to be a useful addition to Lightning Data Service in future versions.
We had hoped that the schema information would be included in the object so that client side validation and conditional field display would be possible, but that doesn't seem to be the case.
Available attributesfields: The fields that have been made accessible from force:recordData. e.g. v.record.fields.Name.valuechildRelationships: The child relationships defined on the recordapiName: The full API Name of the record. e.g. Accountid: The ID of the recordrecordTypeInfo: Any record type information relating to the record
Convert the proxy to a readable object
Sometimes being able to view the data in the record proxy object is useful for debugging. I have created a helpful method for this:
In your component helper, insert the following code:
Then, from anywhere in that component you can call helper.ouputProxy(record) where the record argument is the record proxy…