mirror of
https://github.com/pixelfed/pixelfed.git
synced 2024-11-22 22:41:27 +00:00
Fix like count
This commit is contained in:
parent
9952920aa7
commit
dfe451db70
4 changed files with 40 additions and 31 deletions
|
@ -21,21 +21,30 @@ class LikeController extends Controller
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$profile = Auth::user()->profile;
|
$profile = Auth::user()->profile;
|
||||||
$status = Status::findOrFail($request->input('item'));
|
$status = Status::withCount('likes')->findOrFail($request->input('item'));
|
||||||
|
|
||||||
|
$count = $status->likes_count;
|
||||||
|
|
||||||
if($status->likes()->whereProfileId($profile->id)->count() !== 0) {
|
if($status->likes()->whereProfileId($profile->id)->count() !== 0) {
|
||||||
$like = Like::whereProfileId($profile->id)->whereStatusId($status->id)->firstOrFail();
|
$like = Like::whereProfileId($profile->id)->whereStatusId($status->id)->firstOrFail();
|
||||||
$like->delete();
|
$like->delete();
|
||||||
return redirect()->back();
|
$count--;
|
||||||
|
} else {
|
||||||
|
$like = new Like;
|
||||||
|
$like->profile_id = $profile->id;
|
||||||
|
$like->status_id = $status->id;
|
||||||
|
$like->save();
|
||||||
|
$count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
$like = new Like;
|
|
||||||
$like->profile_id = $profile->id;
|
|
||||||
$like->status_id = $status->id;
|
|
||||||
$like->save();
|
|
||||||
|
|
||||||
LikePipeline::dispatch($like);
|
LikePipeline::dispatch($like);
|
||||||
|
|
||||||
return redirect($status->url());
|
if($request->ajax()) {
|
||||||
|
$response = ['code' => 200, 'msg' => 'Like saved', 'count' => $count];
|
||||||
|
} else {
|
||||||
|
$response = redirect($status->url());
|
||||||
|
}
|
||||||
|
|
||||||
|
return $response;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
BIN
public/js/app.js
vendored
BIN
public/js/app.js
vendored
Binary file not shown.
Binary file not shown.
46
resources/assets/js/components/likebutton.js
vendored
46
resources/assets/js/components/likebutton.js
vendored
|
@ -30,30 +30,30 @@ $(document).ready(function() {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var el = $(this);
|
var el = $(this);
|
||||||
var id = el.data('id');
|
var id = el.data('id');
|
||||||
var res = axios.post('/i/like', {item: id});
|
axios.post('/i/like', {item: id})
|
||||||
var likes = ls.get('likes');
|
.then(function (res) {
|
||||||
var action = false;
|
var likes = ls.get('likes');
|
||||||
var counter = el.parents().eq(2).find('.like-count');
|
var action = false;
|
||||||
var count = parseInt(counter.text());
|
var counter = el.parents().eq(2).find('.like-count');
|
||||||
var heart = el.find('.status-heart');
|
var count = res.data.count;
|
||||||
|
var heart = el.find('.status-heart');
|
||||||
|
|
||||||
if(likes.indexOf(id) > -1) {
|
if(likes.indexOf(id) > -1) {
|
||||||
heart.addClass('far fa-heart').removeClass('fas fa-heart');
|
heart.addClass('far fa-heart').removeClass('fas fa-heart');
|
||||||
likes = likes.filter(function(item) {
|
likes = likes.filter(function(item) {
|
||||||
return item !== id
|
return item !== id
|
||||||
});
|
});
|
||||||
count = count == 0 ? 0 : count--;
|
counter.text(count);
|
||||||
counter.text(count);
|
action = 'unlike';
|
||||||
action = 'unlike';
|
} else {
|
||||||
} else {
|
heart.addClass('fas fa-heart').removeClass('far fa-heart');
|
||||||
heart.addClass('fas fa-heart').removeClass('far fa-heart');
|
likes.push(id);
|
||||||
likes.push(id);
|
counter.text(count);
|
||||||
count++;
|
action = 'like';
|
||||||
counter.text(count);
|
}
|
||||||
action = 'like';
|
|
||||||
}
|
|
||||||
|
|
||||||
ls.set('likes', likes);
|
ls.set('likes', likes);
|
||||||
console.log(action + ' - ' + $(this).data('id') + ' like event');
|
console.log(action + ' - ' + $(this).data('id') + ' like event');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
Loading…
Reference in a new issue