latest update

This commit is contained in:
ghassan committed 2026-03-11 11:21:33 +03:00
1 parent 9ad842dcd5
commit 062c0e896f
42 files changed
+7052 -2921

No files matched your search

+44 -17
View File
@@ -21,6 +21,7 @@ class UserController extends Controller
public function profile()
{
$user = Auth::user();
return view('user.profile', compact('user'));
}
@@ -32,16 +33,38 @@ class UserController extends Controller
$request->validate([
'name' => 'required|string|max:255',
'avatar' => 'nullable|image|mimes:jpg,jpeg,png,webp|max:5120',
'bio' => 'nullable|string|max:500',
'website' => 'nullable|string|max:255',
'twitter' => 'nullable|string|max:100',
'instagram' => 'nullable|string|max:100',
'facebook' => 'nullable|string|max:100',
'youtube' => 'nullable|string|max:100',
'linkedin' => 'nullable|string|max:100',
'tiktok' => 'nullable|string|max:100',
'birthday' => 'nullable|date',
'location' => 'nullable|string|max:100',
]);
$data = ['name' => $request->name];
$data = [
'name' => $request->name,
'bio' => $request->bio,
'website' => $request->website,
'twitter' => $request->twitter,
'instagram' => $request->instagram,
'facebook' => $request->facebook,
'youtube' => $request->youtube,
'linkedin' => $request->linkedin,
'tiktok' => $request->tiktok,
'birthday' => $request->birthday,
'location' => $request->location,
];
if ($request->hasFile('avatar')) {
// Delete old avatar
if ($user->avatar) {
Storage::delete('public/avatars/' . $user->avatar);
Storage::delete('public/avatars/'.$user->avatar);
}
$filename = Str::uuid() . '.' . $request->file('avatar')->getClientOriginalExtension();
$filename = Str::uuid().'.'.$request->file('avatar')->getClientOriginalExtension();
$request->file('avatar')->storeAs('public/avatars', $filename);
$data['avatar'] = $filename;
}
@@ -55,6 +78,7 @@ class UserController extends Controller
public function settings()
{
$user = Auth::user();
return view('user.settings', compact('user'));
}
@@ -68,12 +92,12 @@ class UserController extends Controller
'new_password' => 'required|min:8|confirmed',
]);
if (!Hash::check($request->current_password, $user->password)) {
if (! Hash::check($request->current_password, $user->password)) {
return back()->withErrors(['current_password' => 'Current password is incorrect']);
}
$user->update([
'password' => Hash::make($request->new_password)
'password' => Hash::make($request->new_password),
]);
return redirect()->route('settings')->with('success', 'Password updated successfully!');
@@ -94,21 +118,25 @@ class UserController extends Controller
$videos = Video::where('user_id', $user->id)
->latest()
->paginate(12);
// Also get user's playlists for their own channel
$playlists = $user->playlists()->orderBy('created_at', 'desc')->get();
} else {
$videos = Video::public()
->where('user_id', $user->id)
->latest()
->paginate(12);
$playlists = null;
}
return view('user.channel', compact('user', 'videos'));
return view('user.channel', compact('user', 'videos', 'playlists'));
}
// Watch history
public function history()
{
$user = Auth::user();
// Get videos the user has watched, ordered by most recently watched
// Include private videos since they are the user's own
$videoIds = \DB::table('video_views')
@@ -118,9 +146,9 @@ class UserController extends Controller
->unique();
$videos = Video::whereIn('id', $videoIds)
->where(function($q) use ($user) {
->where(function ($q) use ($user) {
$q->where('visibility', '!=', 'private')
->orWhere('user_id', $user->id);
->orWhere('user_id', $user->id);
})
->get()
->sortByDesc(function ($video) use ($videoIds) {
@@ -136,9 +164,9 @@ class UserController extends Controller
$user = Auth::user();
// Include private videos in liked (user's own private videos)
$videos = $user->likes()
->where(function($q) use ($user) {
->where(function ($q) use ($user) {
$q->where('visibility', '!=', 'private')
->orWhere('videos.user_id', $user->id);
->orWhere('videos.user_id', $user->id);
})
->latest()
->paginate(12);
@@ -150,8 +178,8 @@ class UserController extends Controller
public function like(Video $video)
{
$user = Auth::user();
if (!$video->isLikedBy($user)) {
if (! $video->isLikedBy($user)) {
$video->likes()->attach($user->id);
}
@@ -162,7 +190,7 @@ class UserController extends Controller
public function unlike(Video $video)
{
$user = Auth::user();
$video->likes()->detach($user->id);
return back();
@@ -172,7 +200,7 @@ class UserController extends Controller
public function toggleLike(Video $video)
{
$user = Auth::user();
if ($video->isLikedBy($user)) {
$video->likes()->detach($user->id);
$liked = false;
@@ -183,8 +211,7 @@ class UserController extends Controller
return response()->json([
'liked' => $liked,
'like_count' => $video->like_count
'like_count' => $video->like_count,
]);
}
}