Skip to content

Commit a4e6dc6

Browse files
authored
Merge pull request #1910 from google/fix/1456-map-on-undefined
Add checks to ensure Array.map is not called on undefined
2 parents 655133d + cce0b2a commit a4e6dc6

8 files changed

+45
-0
lines changed

assets/js/modules/analytics/components/dashboard/AdSenseDashboardWidgetTopPagesTableSmall.js

+4
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ class AdSenseDashboardWidgetTopPagesTableSmall extends Component {
6565
return null;
6666
}
6767

68+
if ( ! Array.isArray( data[ 0 ].data.rows ) ) {
69+
return null;
70+
}
71+
6872
const headers = [
6973
{
7074
title: __( 'Top Earning Pages', 'google-site-kit' ),

assets/js/modules/analytics/components/dashboard/AnalyticsAdSenseDashboardWidgetTopPagesTable.js

+8
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,14 @@ const AnalyticsAdSenseDashboardWidgetTopPagesTable = ( { data } ) => {
5252
return null;
5353
}
5454

55+
if ( ! data || ! data.length ) {
56+
return null;
57+
}
58+
59+
if ( ! Array.isArray( data[ 0 ].data.rows ) ) {
60+
return null;
61+
}
62+
5563
const headers = [
5664
{
5765
title: __( 'Page Title', 'google-site-kit' ),

assets/js/modules/analytics/components/dashboard/AnalyticsAllTrafficDashboardWidgetTopAcquisitionSources.js

+6
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ class AnalyticsAllTrafficDashboardWidgetTopAcquisitionSources extends Component
3939
if ( ! data || ! data.length ) {
4040
return null;
4141
}
42+
if ( ! Array.isArray( data[ 0 ].data.totals ) || ! data[ 0 ].data.totals.length ) {
43+
return null;
44+
}
45+
if ( ! Array.isArray( data[ 0 ].data.rows ) || ! data[ 0 ].data.rows.length ) {
46+
return null;
47+
}
4248

4349
const headers = [
4450
{

assets/js/modules/analytics/components/dashboard/AnalyticsDashboardWidgetPopularPagesTable.js

+4
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ class AnalyticsDashboardWidgetPopularPagesTable extends Component {
6161
return null;
6262
}
6363

64+
if ( ! Array.isArray( data[ 0 ].data.rows ) ) {
65+
return null;
66+
}
67+
6468
const headers = [
6569
{
6670
title: __( 'Most popular content', 'google-site-kit' ),

assets/js/modules/analytics/components/dashboard/AnalyticsDashboardWidgetTopAcquisitionSources.js

+6
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,12 @@ function AnalyticsDashboardWidgetTopAcquisitionSources( { data } ) {
4646
if ( ! data || ! data.length ) {
4747
return null;
4848
}
49+
if ( ! Array.isArray( data[ 0 ].data.totals ) || ! data[ 0 ].data.totals.length ) {
50+
return null;
51+
}
52+
if ( ! Array.isArray( data[ 0 ].data.rows ) || ! data[ 0 ].data.rows.length ) {
53+
return null;
54+
}
4955

5056
const currentRange = getCurrentDateRange( dateRange );
5157
const headers = [

assets/js/modules/analytics/components/dashboard/AnalyticsDashboardWidgetTopPagesTable.js

+4
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ const AnalyticsDashboardWidgetTopPagesTable = ( props ) => {
5353
return null;
5454
}
5555

56+
if ( ! Array.isArray( data[ 0 ].data.rows ) ) {
57+
return null;
58+
}
59+
5660
const headers = [
5761
{
5862
title: __( 'Title', 'google-site-kit' ),

assets/js/modules/analytics/components/wp-dashboard/WPAnalyticsDashboardWidgetTopPagesTable.js

+8
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,14 @@ class WPAnalyticsDashboardWidgetTopPagesTable extends Component {
4646
return null;
4747
}
4848

49+
if ( ! data || ! data.length ) {
50+
return null;
51+
}
52+
53+
if ( ! Array.isArray( data[ 0 ].data.rows ) ) {
54+
return null;
55+
}
56+
4957
const links = [];
5058
const dataMapped = data[ 0 ].data.rows.map( ( row, i ) => {
5159
const [ title, url ] = row.dimensions;

assets/js/modules/search-console/components/dashboard/SearchConsoleDashboardWidgetKeywordTable.js

+5
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ const SearchConsoleDashboardWidgetKeywordTable = ( props ) => {
3838
const { data } = props;
3939
const domain = useSelect( ( select ) => select( STORE_NAME ).getPropertyID() );
4040
const baseServiceURL = useSelect( ( select ) => select( STORE_NAME ).getServiceURL( { path: '/performance/search-analytics', query: { resource_id: domain, num_of_days: 28 } } ) );
41+
42+
if ( ! data || ! data.length ) {
43+
return null;
44+
}
45+
4146
const headers = [
4247
{
4348
title: __( 'Keyword', 'google-site-kit' ),

0 commit comments

Comments
 (0)