mojito icon indicating copy to clipboard operation
mojito copied to clipboard

Config assets added twice (once by ac.done and once by ac.assets)

Open aljimenez opened this issue 11 years ago • 3 comments

Assets in a mojit's config are added twice; once by the ac.done method and once by the ac.assets constructor method. When it is added by the ac.assets addon, assets with relative paths are expanded; however when added by ac.done, relative paths are not expanded resulting in a meta data with duplicate assets (one with a relative path and one with an absolute path). On the client side the absolute paths load; however the relative paths seem to be associated with the parent mojit resulting in 404s.

Resulting meta data:

{
    top: {
        css: [
            './index.css',
            '/static/Mojit/assets/index.css'
        ]
   }
}

assets.common.js:

// Add "assets" if they are found in the config.
if (command.instance && command.instance.config &&
        command.instance.config.assets) {
    this.addAssets(command.instance.config.assets);
}

action-context.common.js:

meta.assets = Y.mojito.util.metaMerge(meta.assets, config.assets || {});

aljimenez avatar Nov 04 '13 23:11 aljimenez

@aljimenez did you ever solve this?

caridy avatar Mar 03 '14 20:03 caridy

From what I remember, my solution was not to use relative paths for assets in static configuration. But there is a problem since ac.done merges meta.assets with config.assets and then it calls ac.assets' mergeMetaInto method, which also merges assets contained in config.assets. So config.assets end up getting added twice. This becomes a problem when an asset is specified with a relative path, because ac.done simply does a metaMerge of config.assets without expanding the relative path.

aljimenez avatar Mar 04 '14 01:03 aljimenez

I guess there is a design flaw, since config.assets only need to be added in one place.

aljimenez avatar Mar 04 '14 01:03 aljimenez