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?