From 4514ab1dbe82e20f0e7d925d67e19e72b9a4be34 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Mon, 19 Sep 2022 03:39:33 -0600 Subject: [PATCH] Update SettingsController, fix double json encoding and cache settings for 7 days --- app/Http/Controllers/SettingsController.php | 2 +- app/Services/AccountService.php | 40 ++++++++++--------- ...encoded_settings_in_usersettings_table.php | 38 ++++++++++++++++++ 3 files changed, 60 insertions(+), 20 deletions(-) create mode 100644 database/migrations/2022_09_19_093029_fix_double_json_encoded_settings_in_usersettings_table.php diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index 41b971bff..40691cce4 100644 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -303,7 +303,7 @@ class SettingsController extends Controller } if($changed) { - $setting->compose_settings = json_encode($compose); + $setting->compose_settings = $compose; $setting->save(); Cache::forget('profile:compose:settings:' . $request->user()->id); } diff --git a/app/Services/AccountService.php b/app/Services/AccountService.php index 3813f70fa..13cccffab 100644 --- a/app/Services/AccountService.php +++ b/app/Services/AccountService.php @@ -74,27 +74,29 @@ class AccountService public static function settings($id) { - $settings = UserSetting::whereUserId($id)->first(); - if(!$settings) { - return self::defaultSettings(); - } - return collect($settings) - ->filter(function($item, $key) { - return in_array($key, array_keys(self::defaultSettings())) == true; - }) - ->map(function($item, $key) { - if($key == 'compose_settings') { - $cs = self::defaultSettings()['compose_settings']; - $ms = is_array($item) ? $item : []; - return array_merge($cs, $ms); + return Cache::remember('profile:compose:settings:' . $id, 604800, function() use($id) { + $settings = UserSetting::whereUserId($id)->first(); + if(!$settings) { + return self::defaultSettings(); } + return collect($settings) + ->filter(function($item, $key) { + return in_array($key, array_keys(self::defaultSettings())) == true; + }) + ->map(function($item, $key) { + if($key == 'compose_settings') { + $cs = self::defaultSettings()['compose_settings']; + $ms = is_array($item) ? $item : []; + return array_merge($cs, $ms); + } - if($key == 'other') { - $other = self::defaultSettings()['other']; - $mo = is_array($item) ? $item : []; - return array_merge($other, $mo); - } - return $item; + if($key == 'other') { + $other = self::defaultSettings()['other']; + $mo = is_array($item) ? $item : []; + return array_merge($other, $mo); + } + return $item; + }); }); } diff --git a/database/migrations/2022_09_19_093029_fix_double_json_encoded_settings_in_usersettings_table.php b/database/migrations/2022_09_19_093029_fix_double_json_encoded_settings_in_usersettings_table.php new file mode 100644 index 000000000..d2f43213f --- /dev/null +++ b/database/migrations/2022_09_19_093029_fix_double_json_encoded_settings_in_usersettings_table.php @@ -0,0 +1,38 @@ +chunk(50, function($settings) { + foreach($settings as $userSetting) { + if(is_array($userSetting->compose_settings)) { + continue; + } + $userSetting->compose_settings = json_decode($userSetting->compose_settings); + $userSetting->save(); + } + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + + } +}