orderBy('created_at', 'desc')->get(); return view('pages.platforms.index', compact('accounts')); } public function create(): View { return view('pages.platforms.create'); } public function store(Request $request): RedirectResponse { $validated = $request->validate([ 'platform' => 'required|in:lemmy,mastodon,reddit', 'instance_url' => 'required|url', 'username' => 'required|string|max:255', 'password' => 'required|string', 'settings' => 'nullable|array', ]); // Create or find platform instance $platformEnum = PlatformEnum::from($validated['platform']); $instance = PlatformInstance::firstOrCreate([ 'platform' => $platformEnum, 'url' => $validated['instance_url'], ], [ 'name' => parse_url($validated['instance_url'], PHP_URL_HOST), 'description' => ucfirst($validated['platform']) . ' instance', 'is_active' => true, ]); $account = PlatformAccount::create($validated); // If this is the first account for this platform, make it active if (! PlatformAccount::where('platform', $validated['platform'])->where('is_active', true)->exists()) { $account->setAsActive(); } // Check if there's a redirect_to parameter for onboarding flow $redirectTo = $request->input('redirect_to'); if ($redirectTo) { return redirect($redirectTo) ->with('success', 'Platform account created successfully!'); } return redirect()->route('platforms.index') ->with('success', 'Platform account created successfully!'); } public function edit(PlatformAccount $platformAccount): View { return view('pages.platforms.edit', compact('platformAccount')); } public function update(Request $request, PlatformAccount $platformAccount): RedirectResponse { $validated = $request->validate([ 'instance_url' => 'required|url', 'username' => 'required|string|max:255', 'password' => 'nullable|string', 'settings' => 'nullable|array', ]); // Don't update password if not provided if (empty($validated['password'])) { unset($validated['password']); } $platformAccount->update($validated); return redirect()->route('platforms.index') ->with('success', 'Platform account updated successfully!'); } public function destroy(PlatformAccount $platformAccount): RedirectResponse { $platformAccount->delete(); return redirect()->route('platforms.index') ->with('success', 'Platform account deleted successfully!'); } public function setActive(PlatformAccount $platformAccount): RedirectResponse { $platformAccount->setAsActive(); return redirect()->route('platforms.index') ->with('success', "Set $platformAccount->username@$platformAccount->instance_url as active for {$platformAccount->platform->value}!"); } }