Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Asset property type needs to parse attrValue when updating #4579

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

paolis92
Copy link

@paolis92 paolis92 commented May 7, 2020

Description:

Only in components with single-property schema, asset is not parsed when updating (for example gltf-model)
So #asset-id will not be converted in url necessary for this.data.

Maybe instead of doing this in propertyTypes we should add the possibility to force a parse, like:
function registerPropertyType (type, defaultValue, parse, stringify, parseRequired)
so it becomes
registerPropertyType('model', '', assetParse, undefined, true);
and then in the code commited above instead of checking the parse function name, we check
if (this.schema.parseRequired)

This change should fix #4341

Changes proposed:

  • add parse of attrValue for singleProperty schema for type: asset when updating component

Only in components with single-property schema asset is not parsed when updating (for example gltf-model)
So #asset-id will not be converted in url necessary for this.data.
Maybe instead of doing this in propertyTypes we should add the possibility to force a parse, like:
function registerPropertyType (type, defaultValue, parse, stringify, parseRequired)
so it becomes
registerPropertyType('model', '', assetParse, undefined, true);
and then in the code commited above instead of checking the parse function name, we check if (this.schema.parseRequired)
@@ -356,6 +356,11 @@ Component.prototype = {
if (this.isObjectBased) {
parseProperty(attrValue, this.schema);
}
// Assets need parsing otherwise #asset-id will not be converted in url for this.data (ex gltf-model)
if (this.schema.parse.name === 'assetParse') {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding an exception for a specific parser is brittle. We would need to find a more robust way.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can always call parse function like it happens for components that have schema with more than one property (am I wrong here?) a few lines below the highlighted ones
parseProperties(attrValue, this.schema, true, this.name);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

gltf-model update not working with assets
2 participants