addons hooks adapted to changes in core

This commit is contained in:
nklhrstv 2020-02-04 17:53:26 +02:00
parent c82a4563df
commit 5ee47cf7d2
2 changed files with 41 additions and 35 deletions

View file

@ -21,16 +21,16 @@ const mapAddonsStateWithCtx = (addons, ctx) => {
...addons.catalog_resource, ...addons.catalog_resource,
content: { content: {
...addons.catalog_resource.content, ...addons.catalog_resource.content,
content: addons.catalog_resource.content.content.map((descriptor) => ({ content: addons.catalog_resource.content.content.map((addon) => ({
transportUrl: descriptor.transportUrl, transportUrl: addon.transportUrl,
installed: ctx.content.addons.some((addon) => addon.transportUrl === descriptor.transportUrl), installed: ctx.profile.addons.some(({ transportUrl }) => transportUrl === addon.transportUrl),
manifest: { manifest: {
id: descriptor.manifest.id, id: addon.manifest.id,
name: descriptor.manifest.name, name: addon.manifest.name,
version: descriptor.manifest.version, version: addon.manifest.version,
logo: descriptor.manifest.logo, logo: addon.manifest.logo,
description: descriptor.manifest.description, description: addon.manifest.description,
types: descriptor.manifest.types types: addon.manifest.types
} }
})) }))
} }
@ -45,8 +45,10 @@ const onNewAddonsState = (addons) => {
return { return {
action: 'Load', action: 'Load',
args: { args: {
load: 'CatalogFiltered', model: 'CatalogFiltered',
args: addons.selectable.catalogs[0].load_request args: {
request: addons.selectable.catalogs[0].request
}
} }
}; };
} }
@ -59,14 +61,16 @@ const useAddons = (urlParams) => {
return { return {
action: 'Load', action: 'Load',
args: { args: {
load: 'CatalogFiltered', model: 'CatalogFiltered',
args: { args: {
base: urlParams.transportUrl, request: {
path: { base: urlParams.transportUrl,
resource: 'addon_catalog', path: {
type_name: urlParams.type, resource: 'addon_catalog',
id: urlParams.catalogId, type_name: urlParams.type,
extra: [] id: urlParams.catalogId,
extra: []
}
} }
} }
} }
@ -77,8 +81,10 @@ const useAddons = (urlParams) => {
return { return {
action: 'Load', action: 'Load',
args: { args: {
load: 'CatalogFiltered', model: 'CatalogFiltered',
args: addons.selectable.catalogs[0].load_request args: {
request: addons.selectable.catalogs[0].request
}
} }
}; };
} else { } else {

View file

@ -1,9 +1,9 @@
const React = require('react'); const React = require('react');
const navigateWithLoadRequest = (load_request) => { const navigateWithRequest = (request) => {
const transportUrl = encodeURIComponent(load_request.base); const transportUrl = encodeURIComponent(request.base);
const catalogId = encodeURIComponent(load_request.path.id); const catalogId = encodeURIComponent(request.path.id);
const type = encodeURIComponent(load_request.path.type_name); const type = encodeURIComponent(request.path.type_name);
window.location.replace(`#/addons/${transportUrl}/${catalogId}/${type}`); window.location.replace(`#/addons/${transportUrl}/${catalogId}/${type}`);
}; };
@ -18,35 +18,35 @@ const mapSelectableInputs = (addons) => {
const catalogSelect = { const catalogSelect = {
title: 'Select catalog', title: 'Select catalog',
options: addons.selectable.catalogs options: addons.selectable.catalogs
.map(({ name, load_request }) => ({ .map(({ name, request }) => ({
value: JSON.stringify(load_request), value: JSON.stringify(request),
label: name label: name
})), })),
selected: addons.selectable.catalogs selected: addons.selectable.catalogs
.filter(({ load_request: { path: { id } } }) => { .filter(({ request: { path: { id } } }) => {
return addons.catalog_resource !== null && return addons.catalog_resource !== null &&
addons.catalog_resource.request.path.id === id; addons.catalog_resource.request.path.id === id;
}) })
.map(({ load_request }) => JSON.stringify(load_request)), .map(({ request }) => JSON.stringify(request)),
onSelect: (event) => { onSelect: (event) => {
navigateWithLoadRequest(JSON.parse(event.value)); navigateWithRequest(JSON.parse(event.value));
} }
}; };
const typeSelect = { const typeSelect = {
title: 'Select type', title: 'Select type',
options: addons.selectable.types options: addons.selectable.types
.map(({ name, load_request }) => ({ .map(({ name, request }) => ({
value: JSON.stringify(load_request), value: JSON.stringify(request),
label: name label: name
})), })),
selected: addons.selectable.types selected: addons.selectable.types
.filter(({ load_request }) => { .filter(({ request }) => {
return addons.catalog_resource !== null && return addons.catalog_resource !== null &&
equalWithouExtra(addons.catalog_resource.request, load_request); equalWithouExtra(addons.catalog_resource.request, request);
}) })
.map(({ load_request }) => JSON.stringify(load_request)), .map(({ request }) => JSON.stringify(request)),
onSelect: (event) => { onSelect: (event) => {
navigateWithLoadRequest(JSON.parse(event.value)); navigateWithRequest(JSON.parse(event.value));
} }
}; };
return [catalogSelect, typeSelect]; return [catalogSelect, typeSelect];