mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 11:35:55 +01:00
changed friends to following/followers, updated routes and the user.js functions
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
(function() {
|
(function() {
|
||||||
var yourid = templates.get('yourid'),
|
var yourid = templates.get('yourid'),
|
||||||
theirid = templates.get('theirid'),
|
theirid = templates.get('theirid'),
|
||||||
isFriend = templates.get('isFriend');
|
isFollowing = templates.get('isFollowing');
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
@@ -12,25 +12,24 @@
|
|||||||
postcount.html(app.addCommas(postcount.html()));
|
postcount.html(app.addCommas(postcount.html()));
|
||||||
|
|
||||||
var editLink = $('#editLink');
|
var editLink = $('#editLink');
|
||||||
var addFriendBtn = $('#add-friend-btn');
|
var followBtn = $('#follow-btn');
|
||||||
|
|
||||||
|
|
||||||
if( yourid !== theirid) {
|
if( yourid !== theirid) {
|
||||||
editLink.hide();
|
editLink.hide();
|
||||||
if(isFriend)
|
if(isFollowing)
|
||||||
addFriendBtn.hide();
|
followBtn.hide();
|
||||||
else
|
else
|
||||||
addFriendBtn.show();
|
followBtn.show();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
addFriendBtn.hide();
|
followBtn.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
addFriendBtn.on('click', function() {
|
followBtn.on('click', function() {
|
||||||
$.post('/users/addfriend', {uid: theirid},
|
$.post('/users/follow', {uid: theirid},
|
||||||
function(data) {
|
function(data) {
|
||||||
addFriendBtn.remove();
|
followBtn.remove();
|
||||||
$('#user-action-alert').html('Friend Added!').show();
|
$('#user-action-alert').html('You are now following'+ $('.account-username').text() +'!').show();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
|
29
public/src/forum/followers.js
Normal file
29
public/src/forum/followers.js
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
(function() {
|
||||||
|
|
||||||
|
var yourid = templates.get('yourid'),
|
||||||
|
theirid = templates.get('theirid'),
|
||||||
|
followersCount = templates.get('followersCount');
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
|
||||||
|
if(parseInt(followersCount, 10) === 0) {
|
||||||
|
$('#no-followers-notice').show();
|
||||||
|
}
|
||||||
|
var editLink = $('#editLink');
|
||||||
|
|
||||||
|
if(yourid !== theirid) {
|
||||||
|
editLink.hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
$('.reputation').each(function(index, element) {
|
||||||
|
$(element).html(app.addCommas($(element).html()));
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.postcount').each(function(index, element) {
|
||||||
|
$(element).html(app.addCommas($(element).html()));
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}());
|
44
public/src/forum/following.js
Normal file
44
public/src/forum/following.js
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
(function() {
|
||||||
|
|
||||||
|
var yourid = templates.get('yourid'),
|
||||||
|
theirid = templates.get('theirid'),
|
||||||
|
followingCount = templates.get('followingCount');
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
|
||||||
|
if(parseInt(followingCount, 10) === 0) {
|
||||||
|
$('#no-following-notice').show();
|
||||||
|
}
|
||||||
|
var editLink = $('#editLink');
|
||||||
|
|
||||||
|
if(yourid !== theirid) {
|
||||||
|
editLink.hide();
|
||||||
|
$('.unfollow-btn').hide();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$('.unfollow-btn').on('click',function(){
|
||||||
|
|
||||||
|
var removeBtn = $(this);
|
||||||
|
var followingUid = $(this).attr('followingUid');
|
||||||
|
|
||||||
|
$.post('/users/unfollow', {uid: followingUid},
|
||||||
|
function(data) {
|
||||||
|
removeBtn.parent().remove();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$('.reputation').each(function(index, element) {
|
||||||
|
$(element).html(app.addCommas($(element).html()));
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.postcount').each(function(index, element) {
|
||||||
|
$(element).html(app.addCommas($(element).html()));
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}());
|
@@ -8,7 +8,8 @@
|
|||||||
<a href="/users/{username}">{username}</a>
|
<a href="/users/{username}">{username}</a>
|
||||||
</span>
|
</span>
|
||||||
<div class="account-sub-links inline-block pull-right">
|
<div class="account-sub-links inline-block pull-right">
|
||||||
<span id="friendsLink" class="pull-right"><a href="/users/{username}/friends">friends</a></span>
|
<span id="followersLink" class="pull-right"><a href="/users/{username}/followers">followers</a></span>
|
||||||
|
<span id="followingLink" class="pull-right"><a href="/users/{username}/following">following</a></span>
|
||||||
<span id="editLink" class="pull-right"><a href="/users/{username}/edit">edit</a></span>
|
<span id="editLink" class="pull-right"><a href="/users/{username}/edit">edit</a></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -65,7 +66,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="user-actions" class="container">
|
<div id="user-actions" class="container">
|
||||||
<a id="add-friend-btn" href="#" class="btn">Follow</a>
|
<a id="follow-btn" href="#" class="btn">Follow</a>
|
||||||
</div>
|
</div>
|
||||||
<br/>
|
<br/>
|
||||||
<div id="user-action-alert" class="alert alert-success hide"></div>
|
<div id="user-action-alert" class="alert alert-success hide"></div>
|
||||||
|
@@ -66,7 +66,8 @@
|
|||||||
<a href="/users/{username}/edit">edit</a>
|
<a href="/users/{username}/edit">edit</a>
|
||||||
</span>
|
</span>
|
||||||
<div class="account-sub-links inline-block pull-right">
|
<div class="account-sub-links inline-block pull-right">
|
||||||
<span id="friendsLink" class="pull-right"><a href="/users/{username}/friends">friends</a></span>
|
<span id="followersLink" class="pull-right"><a href="/users/{username}/followers">followers</a></span>
|
||||||
|
<span id="followingLink" class="pull-right"><a href="/users/{username}/following">following</a></span>
|
||||||
<span id="editLink" class="pull-right"><a href="/users/{username}/edit">edit</a></span>
|
<span id="editLink" class="pull-right"><a href="/users/{username}/edit">edit</a></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -16,7 +16,8 @@
|
|||||||
"install/social/?": "install/social",
|
"install/social/?": "install/social",
|
||||||
"install/privileges/?": "install/privileges",
|
"install/privileges/?": "install/privileges",
|
||||||
"users[^]*edit": "accountedit",
|
"users[^]*edit": "accountedit",
|
||||||
"users[^]*friends": "friends",
|
"users[^]*following": "following",
|
||||||
|
"users[^]*followers": "followers",
|
||||||
"users/[^]*": "account",
|
"users/[^]*": "account",
|
||||||
"latest": "category",
|
"latest": "category",
|
||||||
"popular": "category",
|
"popular": "category",
|
||||||
|
47
public/templates/followers.tpl
Normal file
47
public/templates/followers.tpl
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
|
||||||
|
<div class="well">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="account-username-box">
|
||||||
|
<span class="account-username">
|
||||||
|
<a href="/users/{username}">{username}</a> >
|
||||||
|
<a href="/users/{username}/followers">followers</a>
|
||||||
|
</span>
|
||||||
|
<div class="account-sub-links inline-block pull-right">
|
||||||
|
<span id="followersLink" class="pull-right"><a href="/users/{username}/followers">followers</a></span>
|
||||||
|
<span id="followingLink" class="pull-right"><a href="/users/{username}/following">following</a></span>
|
||||||
|
<span id="editLink" class="pull-right"><a href="/users/{username}/edit">edit</a></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<!-- BEGIN followers -->
|
||||||
|
|
||||||
|
<div class="users-box well">
|
||||||
|
<a href="/users/{followers.username}">
|
||||||
|
<img src="{followers.picture}" class="user-8080-picture"/>
|
||||||
|
</a>
|
||||||
|
<br/>
|
||||||
|
<a href="/users/{followers.username}">{followers.username}</a>
|
||||||
|
<br/>
|
||||||
|
<div title="reputation">
|
||||||
|
<span class='reputation'>{followers.reputation}</span>
|
||||||
|
<i class='icon-star'></i>
|
||||||
|
</div>
|
||||||
|
<div title="post count">
|
||||||
|
<span class='postcount'>{followers.postcount}</span>
|
||||||
|
<i class='icon-pencil'></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- END followers -->
|
||||||
|
</div>
|
||||||
|
<div id="no-followers-notice" class="alert alert-warning hide">This user doesn't have any followers :(</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<input type="hidden" template-variable="yourid" value="{yourid}" />
|
||||||
|
<input type="hidden" template-variable="theirid" value="{theirid}" />
|
||||||
|
<input type="hidden" template-variable="followersCount" value="{followersCount}" />
|
||||||
|
|
||||||
|
<script type="text/javascript" src="/src/forum/followers.js"></script>
|
48
public/templates/following.tpl
Normal file
48
public/templates/following.tpl
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
|
||||||
|
<div class="well">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="account-username-box">
|
||||||
|
<span class="account-username">
|
||||||
|
<a href="/users/{username}">{username}</a> >
|
||||||
|
<a href="/users/{username}/following">following</a>
|
||||||
|
</span>
|
||||||
|
<div class="account-sub-links inline-block pull-right">
|
||||||
|
<span id="followersLink" class="pull-right"><a href="/users/{username}/followers">followers</a></span>
|
||||||
|
<span id="followingLink" class="pull-right"><a href="/users/{username}/following">following</a></span>
|
||||||
|
<span id="editLink" class="pull-right"><a href="/users/{username}/edit">edit</a></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<!-- BEGIN following -->
|
||||||
|
|
||||||
|
<div class="users-box well">
|
||||||
|
<a href="/users/{following.username}">
|
||||||
|
<img src="{following.picture}" class="user-8080-picture"/>
|
||||||
|
</a>
|
||||||
|
<br/>
|
||||||
|
<a href="/users/{following.username}">{following.username}</a>
|
||||||
|
<br/>
|
||||||
|
<div title="reputation">
|
||||||
|
<span class='reputation'>{following.reputation}</span>
|
||||||
|
<i class='icon-star'></i>
|
||||||
|
</div>
|
||||||
|
<div title="post count">
|
||||||
|
<span class='postcount'>{following.postcount}</span>
|
||||||
|
<i class='icon-pencil'></i>
|
||||||
|
</div>
|
||||||
|
<a id="unfollow-btn" href="#" class="btn unfollow-btn" followingUid="{following.uid}">Unfollow</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- END following -->
|
||||||
|
</div>
|
||||||
|
<div id="no-following-notice" class="alert alert-warning hide">This user isn't following anyone :(</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<input type="hidden" template-variable="yourid" value="{yourid}" />
|
||||||
|
<input type="hidden" template-variable="theirid" value="{theirid}" />
|
||||||
|
<input type="hidden" template-variable="followingCount" value="{followingCount}" />
|
||||||
|
|
||||||
|
<script type="text/javascript" src="/src/forum/following.js"></script>
|
@@ -1,47 +0,0 @@
|
|||||||
|
|
||||||
<div class="well">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="account-username-box">
|
|
||||||
<span class="account-username">
|
|
||||||
<a href="/users/{username}">{username}</a> >
|
|
||||||
<a href="/users/{username}/friends">friends</a>
|
|
||||||
</span>
|
|
||||||
<div class="account-sub-links inline-block pull-right">
|
|
||||||
<span id="friendsLink" class="pull-right"><a href="/users/{username}/friends">friends</a></span>
|
|
||||||
<span id="editLink" class="pull-right"><a href="/users/{username}/edit">edit</a></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<!-- BEGIN friends -->
|
|
||||||
|
|
||||||
<div class="users-box well">
|
|
||||||
<a href="/users/{friends.username}">
|
|
||||||
<img src="{friends.picture}" class="user-8080-picture"/>
|
|
||||||
</a>
|
|
||||||
<br/>
|
|
||||||
<a href="/users/{friends.username}">{friends.username}</a>
|
|
||||||
<br/>
|
|
||||||
<div title="reputation">
|
|
||||||
<span class='reputation'>{friends.reputation}</span>
|
|
||||||
<i class='icon-star'></i>
|
|
||||||
</div>
|
|
||||||
<div title="post count">
|
|
||||||
<span class='postcount'>{friends.postcount}</span>
|
|
||||||
<i class='icon-pencil'></i>
|
|
||||||
</div>
|
|
||||||
<a id="remove-friend-btn" href="#" class="btn remove-friend-btn" friendid="{friends.uid}">Unfollow</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- END friends -->
|
|
||||||
</div>
|
|
||||||
<div id="no-friend-notice" class="alert alert-warning hide">This user doesn't have any friends :(</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<input type="hidden" template-variable="yourid" value="{yourid}" />
|
|
||||||
<input type="hidden" template-variable="theirid" value="{theirid}" />
|
|
||||||
<input type="hidden" template-variable="friendCount" value="{friendCount}" />
|
|
||||||
|
|
||||||
<script type="text/javascript" src="/src/forum/friends.js"></script>
|
|
@@ -202,36 +202,44 @@ var user = require('./../user.js'),
|
|||||||
res.send({});
|
res.send({});
|
||||||
});
|
});
|
||||||
|
|
||||||
app.post('/users/addfriend', function(req, res){
|
app.post('/users/follow', function(req, res){
|
||||||
if(!req.user)
|
if(!req.user)
|
||||||
return res.redirect('/403');
|
return res.redirect('/403');
|
||||||
|
|
||||||
if(req.user.uid == req.body.uid)
|
if(req.user.uid == req.body.uid)
|
||||||
return res.redirect('/');
|
return res.redirect('/');
|
||||||
|
|
||||||
user.addFriend(req.user.uid, req.body.uid, function(data) {
|
user.follow(req.user.uid, req.body.uid, function(data) {
|
||||||
res.send({data:data});
|
res.send({data:data});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
app.post('/users/removefriend', function(req, res){
|
app.post('/users/unfollow', function(req, res){
|
||||||
if(!req.user)
|
if(!req.user)
|
||||||
return res.redirect('/403');
|
return res.redirect('/403');
|
||||||
|
|
||||||
if(req.user.uid == req.body.uid)
|
if(req.user.uid == req.body.uid)
|
||||||
return res.redirect('/');
|
return res.redirect('/');
|
||||||
|
|
||||||
user.removeFriend(req.user.uid, req.body.uid, function(data) {
|
user.unfollow(req.user.uid, req.body.uid, function(data) {
|
||||||
res.send({data:data});
|
res.send({data:data});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/users/:username/friends', function(req, res){
|
app.get('/users/:username/following', function(req, res) {
|
||||||
|
|
||||||
if(!req.user)
|
if(!req.user)
|
||||||
return res.redirect('/403');
|
return res.redirect('/403');
|
||||||
|
|
||||||
res.send(build_header() + app.create_route('users/'+req.params.username+'/friends','friends') + templates['footer']);
|
res.send(build_header() + app.create_route('users/'+req.params.username+'/following','following') + templates['footer']);
|
||||||
|
});
|
||||||
|
|
||||||
|
app.get('/users/:username/followers', function(req, res) {
|
||||||
|
|
||||||
|
if(!req.user)
|
||||||
|
return res.redirect('/403');
|
||||||
|
|
||||||
|
res.send(build_header() + app.create_route('users/'+req.params.username+'/followers','followers') + templates['footer']);
|
||||||
});
|
});
|
||||||
|
|
||||||
function api_method(req, res) {
|
function api_method(req, res) {
|
||||||
@@ -246,13 +254,24 @@ var user = require('./../user.js'),
|
|||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if(String(req.params.section).toLowerCase() === 'friends') {
|
else if(String(req.params.section).toLowerCase() === 'following') {
|
||||||
|
|
||||||
getUserDataByUserName(req.params.username, callerUID, function(userData) {
|
getUserDataByUserName(req.params.username, callerUID, function(userData) {
|
||||||
|
|
||||||
user.getFriends(userData.uid, function(friendsData){
|
user.getFollowing(userData.uid, function(followingData){
|
||||||
userData.friends = friendsData;
|
userData.following = followingData;
|
||||||
userData.friendCount = friendsData.length;
|
userData.followingCount = followingData.length;
|
||||||
|
res.send(JSON.stringify(userData));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if(String(req.params.section).toLowerCase() === 'followers') {
|
||||||
|
|
||||||
|
getUserDataByUserName(req.params.username, callerUID, function(userData) {
|
||||||
|
|
||||||
|
user.getFollowers(userData.uid, function(followersData){
|
||||||
|
userData.followers = followersData;
|
||||||
|
userData.followersCount = followersData.length;
|
||||||
res.send(JSON.stringify(userData));
|
res.send(JSON.stringify(userData));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -264,8 +283,8 @@ var user = require('./../user.js'),
|
|||||||
} else {
|
} else {
|
||||||
getUserDataByUserName(req.params.username, callerUID, function(userData) {
|
getUserDataByUserName(req.params.username, callerUID, function(userData) {
|
||||||
|
|
||||||
user.isFriend(callerUID, userData.theirid, function(isFriend) {
|
user.isFollowing(callerUID, userData.theirid, function(isFollowing) {
|
||||||
userData.isFriend = isFriend;
|
userData.isFollowing = isFollowing;
|
||||||
|
|
||||||
userData.signature = marked(userData.signature || '');
|
userData.signature = marked(userData.signature || '');
|
||||||
|
|
||||||
|
77
src/user.js
77
src/user.js
@@ -388,54 +388,71 @@ var utils = require('./../public/src/utils.js'),
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
User.addFriend = function(uid, friendid, callback) {
|
User.follow = function(uid, followid, callback) {
|
||||||
RDB.sadd('user:'+uid+':friends', friendid, function(err, data){
|
RDB.sadd('user:'+uid+':following', followid, function(err, data) {
|
||||||
if(err === null)
|
if(err === null) {
|
||||||
|
RDB.sadd('user:'+followid+':followers', uid, function(err, data) {
|
||||||
callback(data);
|
callback(data);
|
||||||
|
});
|
||||||
|
}
|
||||||
else
|
else
|
||||||
console.log(err);
|
console.log(err);
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
User.getFriends = function(uid, callback) {
|
User.unfollow = function(uid, unfollowid, callback) {
|
||||||
RDB.smembers('user:'+uid+':friends', function(err, data){
|
RDB.srem('user:'+uid+':following', unfollowid, function(err, data){
|
||||||
if(err === null) {
|
if(err === null) {
|
||||||
|
RDB.srem('user:'+unfollowid+':followers', uid, function(err, data){
|
||||||
|
callback(data);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
var friendsData = [];
|
User.getFollowing = function(uid, callback) {
|
||||||
|
RDB.smembers('user:'+uid+':following', function(err, userIds) {
|
||||||
|
if(err === null)
|
||||||
|
User.getDataForUsers(userIds, callback);
|
||||||
|
else
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if(data.length === 0) {
|
User.getFollowers = function(uid, callback) {
|
||||||
callback(friendsData);
|
RDB.smembers('user:'+uid+':followers', function(err, userIds) {
|
||||||
|
if(err === null)
|
||||||
|
User.getDataForUsers(userIds, callback);
|
||||||
|
else
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
User.getDataForUsers = function(userIds, callback) {
|
||||||
|
var returnData = [];
|
||||||
|
|
||||||
|
if(userIds.length === 0) {
|
||||||
|
callback(returnData);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(var i=0, ii=data.length; i<ii; ++i) {
|
for(var i=0, ii=userIds.length; i<ii; ++i) {
|
||||||
User.getUserData(data[i], function(userData){
|
User.getUserData(userIds[i], function(userData) {
|
||||||
friendsData.push(userData);
|
returnData.push(userData);
|
||||||
|
|
||||||
if(friendsData.length == data.length)
|
if(returnData.length == userIds.length)
|
||||||
callback(friendsData);
|
callback(returnData);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
console.log(err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
User.removeFriend = function(uid, friendid, callback) {
|
|
||||||
RDB.srem('user:'+uid+':friends', friendid, function(err, data){
|
User.isFollowing = function(uid, theirid, callback) {
|
||||||
|
RDB.sismember('user:'+uid+':following', theirid, function(err, data) {
|
||||||
if(err === null)
|
if(err === null)
|
||||||
callback(data);
|
|
||||||
else
|
|
||||||
console.log(err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
User.isFriend = function(uid, friendid, callback) {
|
|
||||||
RDB.sismember('user:'+uid+':friends', friendid, function(err, data){
|
|
||||||
if(err === null){
|
|
||||||
callback(data === 1);
|
callback(data === 1);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
console.log(err);
|
console.log(err);
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user