preferences ?? $this->getDefaultPreferences(); return view('user.settings.preferences', [ 'preferences' => $preferences, ]); } public function update(Request $request): RedirectResponse { $user = Auth::user(); $validated = $request->validate([ 'radio_auto_play' => 'sometimes|boolean', 'radio_shouts' => 'sometimes|boolean', 'radio_notifications' => 'sometimes|boolean', 'friend_requests' => 'sometimes|boolean', 'room_invites' => 'sometimes|boolean', 'email_notifications' => 'sometimes|boolean', 'client_open_mode' => 'sometimes|in:same,new_window', 'client_volume' => 'sometimes|integer|min:0|max:100', 'compact_mode' => 'sometimes|boolean', 'hide_online' => 'sometimes|boolean', 'default_page' => 'sometimes|in:me,hotel,community,shop', ]); $preferences = array_merge($this->getDefaultPreferences(), $validated); $user->preferences = $preferences; $user->save(); return redirect()->route('settings.preferences.show')->with('success', __('Preferences updated successfully')); } private function getDefaultPreferences(): array { return [ 'radio_auto_play' => false, 'radio_shouts' => true, 'radio_notifications' => true, 'friend_requests' => true, 'room_invites' => true, 'email_notifications' => false, 'client_open_mode' => 'same', 'client_volume' => 50, 'compact_mode' => false, 'hide_online' => false, 'default_page' => 'me', ]; } }