Skip to content

Commit 4828a0e

Browse files
committed
MAGETWO-58251: PayPal Best Practice to Separate Saved Tokens
- fixed async module loading - fixed collecttions updater
1 parent 45b060e commit 4828a0e

File tree

2 files changed

+42
-32
lines changed
  • app/code/Magento

2 files changed

+42
-32
lines changed

app/code/Magento/Checkout/view/frontend/web/js/view/payment/list.js

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ define([
1111
'Magento_Checkout/js/model/payment/renderer-list',
1212
'uiLayout',
1313
'Magento_Checkout/js/model/checkout-data-resolver',
14-
'mage/translate'
15-
], function (_, ko, utils, Component, paymentMethods, rendererList, layout, checkoutDataResolver, $t) {
14+
'mage/translate',
15+
'uiRegistry'
16+
], function (_, ko, utils, Component, paymentMethods, rendererList, layout, checkoutDataResolver, $t, registry) {
1617
'use strict';
1718

1819
return Component.extend({
@@ -23,9 +24,6 @@ define([
2324
name: 'methodGroup',
2425
component: 'Magento_Checkout/js/model/payment/method-group'
2526
},
26-
modules: {
27-
defaultGroup: '${ $.configDefaultGroup.name }'
28-
},
2927
paymentGroupsList: [],
3028
defaultGroupTitle: $t('Select a new payment method')
3129
},
@@ -129,33 +127,35 @@ define([
129127
var isRendererForMethod = false,
130128
currentGroup;
131129

132-
_.find(rendererList(), function (renderer) {
133-
134-
if (renderer.hasOwnProperty('typeComparatorCallback') &&
135-
typeof renderer.typeComparatorCallback == 'function'
136-
) {
137-
isRendererForMethod = renderer.typeComparatorCallback(renderer.type, paymentMethodData.method);
138-
} else {
139-
isRendererForMethod = renderer.type === paymentMethodData.method;
140-
}
141-
142-
if (isRendererForMethod) {
143-
currentGroup = renderer.group ? renderer.group : this.defaultGroup();
144-
145-
this.collectPaymentGroups(currentGroup);
146-
147-
layout([
148-
this.createComponent(
149-
{
150-
config: renderer.config,
151-
component: renderer.component,
152-
name: renderer.type,
153-
method: paymentMethodData.method,
154-
item: paymentMethodData,
155-
displayArea: currentGroup.displayArea
156-
}
157-
)]);
158-
}
130+
registry.get(this.configDefaultGroup.name, function (defaultGroup) {
131+
_.each(rendererList(), function (renderer) {
132+
133+
if (renderer.hasOwnProperty('typeComparatorCallback') &&
134+
typeof renderer.typeComparatorCallback == 'function'
135+
) {
136+
isRendererForMethod = renderer.typeComparatorCallback(renderer.type, paymentMethodData.method);
137+
} else {
138+
isRendererForMethod = renderer.type === paymentMethodData.method;
139+
}
140+
141+
if (isRendererForMethod) {
142+
currentGroup = renderer.group ? renderer.group : defaultGroup;
143+
144+
this.collectPaymentGroups(currentGroup);
145+
146+
layout([
147+
this.createComponent(
148+
{
149+
config: renderer.config,
150+
component: renderer.component,
151+
name: renderer.type,
152+
method: paymentMethodData.method,
153+
item: paymentMethodData,
154+
displayArea: currentGroup.displayArea
155+
}
156+
)]);
157+
}
158+
}.bind(this));
159159
}.bind(this));
160160
},
161161

app/code/Magento/Ui/view/base/web/js/lib/core/collection.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,16 @@ define([
268268

269269
_.each(grouped, this.updateRegion, this);
270270

271+
_.each(this.regions, function (items) {
272+
var shouldBeEmpty = items.every(function (item) {
273+
return !~_elems.indexOf(item);
274+
});
275+
276+
if (shouldBeEmpty && items().length) {
277+
items.removeAll();
278+
}
279+
}, this);
280+
271281
this.elems(_elems);
272282

273283
return this;

0 commit comments

Comments
 (0)