From e8f37dd2b2588e4fd21cab577cdd42dce64a36d7 Mon Sep 17 00:00:00 2001
From: Julien Veyssier <eneiluj@posteo.net>
Date: Mon, 31 Aug 2020 17:44:30 +0200
Subject: [PATCH] refs #22468 fix empty php array becoming an array instead of
 an object in UI

Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
---
 apps/dashboard/lib/Controller/DashboardController.php | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/apps/dashboard/lib/Controller/DashboardController.php b/apps/dashboard/lib/Controller/DashboardController.php
index c9fd96fcb6f..57717b26698 100644
--- a/apps/dashboard/lib/Controller/DashboardController.php
+++ b/apps/dashboard/lib/Controller/DashboardController.php
@@ -103,8 +103,12 @@ class DashboardController extends Controller {
 				'url' => $widget->getUrl()
 			];
 		}, $this->dashboardManager->getWidgets());
-		$configStatuses = $this->config->getUserValue($this->userId, 'dashboard', 'statuses', '{}');
+		$configStatuses = $this->config->getUserValue($this->userId, 'dashboard', 'statuses', '');
 		$statuses = json_decode($configStatuses, true);
+		// We avoid getting an empty array as it will not produce an object in UI's JS
+		// It does not matter if some statuses are missing from the array, missing ones are considered enabled
+		$statuses = ($statuses && count($statuses) > 0) ? $statuses : ['weather' => true];
+
 		$this->inititalStateService->provideInitialState('dashboard', 'panels', $widgets);
 		$this->inititalStateService->provideInitialState('dashboard', 'statuses', $statuses);
 		$this->inititalStateService->provideInitialState('dashboard', 'layout', $userLayout);
-- 
GitLab