Update SettingsController, fix double json encoding and cache settings for 7 days

This commit is contained in:
Daniel Supernault 2022-09-19 03:39:33 -06:00
parent ef0d1f84ae
commit 4514ab1dbe
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7
3 changed files with 60 additions and 20 deletions

View file

@ -303,7 +303,7 @@ class SettingsController extends Controller
} }
if($changed) { if($changed) {
$setting->compose_settings = json_encode($compose); $setting->compose_settings = $compose;
$setting->save(); $setting->save();
Cache::forget('profile:compose:settings:' . $request->user()->id); Cache::forget('profile:compose:settings:' . $request->user()->id);
} }

View file

@ -74,27 +74,29 @@ class AccountService
public static function settings($id) public static function settings($id)
{ {
$settings = UserSetting::whereUserId($id)->first(); return Cache::remember('profile:compose:settings:' . $id, 604800, function() use($id) {
if(!$settings) { $settings = UserSetting::whereUserId($id)->first();
return self::defaultSettings(); 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 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') { if($key == 'other') {
$other = self::defaultSettings()['other']; $other = self::defaultSettings()['other'];
$mo = is_array($item) ? $item : []; $mo = is_array($item) ? $item : [];
return array_merge($other, $mo); return array_merge($other, $mo);
} }
return $item; return $item;
});
}); });
} }

View file

@ -0,0 +1,38 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use App\UserSetting;
class FixDoubleJsonEncodedSettingsInUsersettingsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
UserSetting::whereNotNull('compose_settings')
->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()
{
}
}