Skip to main content

Class: RuntimeConfiguration

Allows you to get and set the user ID and PDF metadata of a product at runtime.

Constructors​

Constructor​

new RuntimeConfiguration(postMessageClient): RuntimeConfiguration

Parameters​

postMessageClient​

Client

Returns​

RuntimeConfiguration

Methods​

getPdfMetadata()​

getPdfMetadata(): Promise<IPdfMetadata>

Reads PDF metadata of the current product.

Returns​

Promise<IPdfMetadata>

The IPdfMetadata structure with data to be saved in the hi-res output.

Example​

const data = await editor.configuration.getPdfMetadata()
.catch(error => console.error("Retrieving PDF metadata failed with exception: ", error));

console.info("getPdfMetadata returned: " + data.title);

setPdfMetadata()​

setPdfMetadata(config): Promise<void>

Sets PDF metadata to the current product.

Parameters​

config​

IPdfMetadata

PDF metadata to be saved in the hi-res output.

Returns​

Promise<void>

Example​

editor.configuration.setPdfMetadata({
author: "John Wood",
title: "Postcard template with flowers",
keywords: "red,flower,postcard"
})
.catch(error => console.error("setPdfMetadata failed with exception: ", error));

getUserId()​

getUserId(): Promise<string>

Reads ID of the user working on the product.

Returns​

Promise<string>

The user identifier.

Example​

let editor = await CustomersCanvas.IframeApi.loadEditor(iframe, productDefinition, config);
console.log(await editor.configuration.getUserId());

getImageMetadata()​

getImageMetadata(url, fromDesignImages?): Promise<ImageMetaData>

Loads metadata of an image.

Parameters​

url​

string

The link to the image.

fromDesignImages?​

boolean

If true, gets metadata from the design gallery.

Returns​

Promise<ImageMetaData>

Image properties.

Example​

// Get metadata of an image in the public gallery.
const metaData = await editor.configuration.getImageMetadata("public:backgrounds/azure.jpg");

setUserId()​

setUserId(userId): Promise<void>

Sets a new user identifier and moves user files to this user's folders.

Parameters​

userId​

string

The new user identifier that needs to be set for the product.

Returns​

Promise<void>

Remarks​

Before using this method, you must enable the secure mode and update an authentication token by using the additionalUserId parameter with the new user identifier.

Example​

<html>
<head>
<title>Setting a new user ID</title>
<!-- The IFrame API script. IMPORTANT! Do not remove or change the ID. -->
<script id="CcIframeApiScript" type="text/javascript" src="https://example.com/Resources/Generated/IframeApi.js">
</script>
</head>
<body>
<!-- The iframe to display the editor in. -->
<iframe id="editorFrame" width="100%" height="800px"></iframe>
<input type="button" value="Set User ID" onclick="setUserID()" />

<script>
let editor = null;

document.addEventListener('DOMContentLoaded', async () => {
// Initialize product with an Invitation template.
const productDefinition = { surfaces: ["invitation"] };
// Get the iframe element to display the editor in.
const iframe = document.getElementById("editorFrame");
// Load the editor.
editor = await CustomersCanvas.IframeApi.loadEditor(iframe, productDefinition)
// If there was an error thrown when loading the editor.
.catch(e => console.log(e));
});

// Set JohnWood as a new user ID.
async function setUserID() {
let userId = await editor.configuration.getUserId();
// Get an active token for the current user.
let token = (await (await fetch("https://example.com/api/Auth/Users/" + userId + "/Tokens",
{
method: "GET",
headers: { "X-CustomersCanvasAPIKey": "UniqueSecurityKey" }
})).json()).tokens[0].tokenId;

// Update the token for another user.
await fetch("https://example.com/api/Auth/Tokens/" + token + "?AdditionalUserId=JohnWood", {
method: "PUT",
headers: { "X-CustomersCanvasAPIKey": "UniqueSecurityKey" }
});

// Copy user files.
editor.configuration.setUserId("JohnWood")
.catch(e => console.log(e));
}
</script>
</body>
</html>
Was this page helpful?