diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 996e6acca1..bfd04475dd 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -863,8 +863,10 @@ App::patch('/v1/account/prefs') /** @var Appwrite\Database\Database $projectDB */ /** @var Appwrite\Event\Event $audits */ + $old = $user->getAttribute('prefs', new \stdClass); + $user = $projectDB->updateDocument(\array_merge($user->getArrayCopy(), [ - 'prefs' => $prefs, + 'prefs' => \array_merge($old, $prefs), ])); if (false === $user) { diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index a2987e2ff8..6ace9e772a 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -208,13 +208,6 @@ App::get('/v1/users/:userId/prefs') $prefs = $user->getAttribute('prefs', ''); - try { - $prefs = \json_decode($prefs, true); - $prefs = ($prefs) ? $prefs : []; - } catch (\Exception $error) { - throw new Exception('Failed to parse prefs', 500); - } - $response->json($prefs); }, ['response', 'projectDB']); @@ -439,26 +432,16 @@ App::patch('/v1/users/:userId/prefs') throw new Exception('User not found', 404); } - $old = \json_decode($user->getAttribute('prefs', '{}'), true); - $old = ($old) ? $old : []; + $old = $user->getAttribute('prefs', new \stdClass); $user = $projectDB->updateDocument(\array_merge($user->getArrayCopy(), [ - 'prefs' => \json_encode(\array_merge($old, $prefs)), + 'prefs' => \array_merge($old, $prefs), ])); if (false === $user) { throw new Exception('Failed saving user to DB', 500); } - $prefs = $user->getAttribute('prefs', ''); - - try { - $prefs = \json_decode($prefs, true); - $prefs = ($prefs) ? $prefs : []; - } catch (\Exception $error) { - throw new Exception('Failed to parse prefs', 500); - } - $response->json($prefs); }, ['response', 'projectDB']);