306 lines
10 KiB
TypeScript
Executable File
306 lines
10 KiB
TypeScript
Executable File
// project imports
|
|
import mock from '../../mockAdapter';
|
|
import { Chance } from 'chance';
|
|
|
|
// types
|
|
import type { Post } from '@/types/apps/PostType';
|
|
|
|
// assets
|
|
import image1 from '@/assets/images/products/s1.jpg';
|
|
import image2 from '@/assets/images/products/s2.jpg';
|
|
import image4 from '@/assets/images/products/s4.jpg';
|
|
import user1 from '@/assets/images/profile/user-1.jpg';
|
|
import user2 from '@/assets/images/profile/user-2.jpg';
|
|
import user3 from '@/assets/images/profile/user-3.jpg';
|
|
import user4 from '@/assets/images/profile/user-4.jpg';
|
|
import user5 from '@/assets/images/profile/user-5.jpg';
|
|
|
|
const chance = new Chance();
|
|
|
|
// social profile
|
|
let posts: Post[] = [
|
|
{
|
|
id: '#1POST_MATHEW',
|
|
profile: {
|
|
id: '#52MATHEW',
|
|
avatar: user1,
|
|
name: 'David McMichael',
|
|
time: '15 min ago'
|
|
},
|
|
data: {
|
|
content: chance.paragraph({ sentences: 2 }),
|
|
images: [
|
|
{
|
|
img: image1,
|
|
featured: true
|
|
}
|
|
],
|
|
likes: {
|
|
like: true,
|
|
value: 102
|
|
},
|
|
comments: [
|
|
{
|
|
id: '#3COMMENTMATHEWE',
|
|
profile: {
|
|
id: '#52MATHEW',
|
|
avatar: user3,
|
|
name: 'Deran Mac',
|
|
time: '8 mins ago '
|
|
},
|
|
data: {
|
|
comment: chance.paragraph({ sentences: 1 }),
|
|
likes: {
|
|
like: true,
|
|
value: 55
|
|
}
|
|
}
|
|
},
|
|
{
|
|
id: '#2COMMENT_MATHEW',
|
|
profile: {
|
|
id: '#52MATHEW',
|
|
avatar: user4,
|
|
name: 'Jonathan Bg',
|
|
time: '5 mins ago '
|
|
},
|
|
data: {
|
|
comment:
|
|
chance.paragraph({ sentences: 1 }),
|
|
likes: {
|
|
like: false,
|
|
value: 68
|
|
},
|
|
replies: [
|
|
{
|
|
id: '#1REPLY_MATHEW',
|
|
profile: {
|
|
id: '#52MATHEW',
|
|
avatar: user5,
|
|
name: 'Carry minati',
|
|
time: 'just now '
|
|
},
|
|
data: {
|
|
comment: chance.paragraph({ sentences: 1 }),
|
|
likes: {
|
|
like: true,
|
|
value: 10
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
id: '#4POST_CARRY',
|
|
profile: {
|
|
id: '#52CARRY',
|
|
avatar: user1,
|
|
name: 'Carry Minati',
|
|
time: 'now'
|
|
},
|
|
data: {
|
|
content: chance.paragraph({ sentences: 2 }),
|
|
images: [],
|
|
likes: {
|
|
like: false,
|
|
value: 67
|
|
},
|
|
comments: []
|
|
}
|
|
},
|
|
{
|
|
id: '#2POST_GENELIA',
|
|
profile: {
|
|
id: '#52GENELIA',
|
|
avatar: user2,
|
|
name: 'Genelia Desouza',
|
|
time: '15 min ago '
|
|
},
|
|
data: {
|
|
content: chance.paragraph({ sentences: 1 }),
|
|
images: [
|
|
{
|
|
img: image2,
|
|
title: 'Image Title'
|
|
},
|
|
{
|
|
img: image4,
|
|
title: 'Painter'
|
|
}
|
|
],
|
|
likes: {
|
|
like: false,
|
|
value: 320
|
|
},
|
|
comments: [
|
|
{
|
|
id: '#2COMMENT_GENELIA',
|
|
profile: {
|
|
id: '#52GENELIA',
|
|
avatar: user3,
|
|
name: 'Ritesh Deshmukh',
|
|
time: '15 min ago '
|
|
},
|
|
data: {
|
|
comment:
|
|
chance.paragraph({ sentences: 1 }),
|
|
likes: {
|
|
like: true,
|
|
value: 65
|
|
},
|
|
replies: []
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
id: '#3POST_Mathew',
|
|
profile: {
|
|
id: '#52Mathew',
|
|
avatar: user1,
|
|
name: 'David McMichael',
|
|
time: '15 min ago '
|
|
},
|
|
data: {
|
|
content: chance.paragraph({ sentences: 1 }),
|
|
images: [],
|
|
video: 'd1-FRj20WBE',
|
|
likes: {
|
|
like: true,
|
|
value: 130
|
|
}
|
|
}
|
|
}
|
|
];
|
|
|
|
// ==============================|| MOCK SERVICES ||============================== //
|
|
|
|
//mock.onGet('/api/posts/list').reply(200, { posts });
|
|
mock.onGet('/api/posts/list').reply(() => {
|
|
return [200, posts];
|
|
});
|
|
|
|
mock.onPost('/api/posts/editComment').reply((config) => {
|
|
try {
|
|
const { key, id } = JSON.parse(config.data);
|
|
|
|
posts = posts.filter((post, index) => {
|
|
if (post.id === key) {
|
|
const cComments = post.data.comments || [];
|
|
post.data.comments = [id, ...cComments];
|
|
return post;
|
|
}
|
|
return post;
|
|
});
|
|
|
|
return [200, { posts }];
|
|
} catch (err) {
|
|
console.error(err);
|
|
return [500, { message: 'Internal server error' }];
|
|
}
|
|
});
|
|
|
|
mock.onPost('/api/comments/add').reply((config) => {
|
|
try {
|
|
const { postId, comment } = JSON.parse(config.data);
|
|
|
|
const postIndex = posts.findIndex((x) => x.id === postId);
|
|
const post = posts[postIndex];
|
|
const cComments = post.data.comments || [];
|
|
post.data.comments = [comment, ...cComments];
|
|
|
|
return [200, { posts: [...posts] }];
|
|
} catch (err) {
|
|
console.error(err);
|
|
return [500, { message: 'Internal server error' }];
|
|
}
|
|
});
|
|
|
|
mock.onPost('/api/replies/add').reply((config) => {
|
|
try {
|
|
const { postId, commentId, reply } = JSON.parse(config.data);
|
|
const postIndex = posts.findIndex((x: any) => x.id === postId);
|
|
const post = posts[postIndex];
|
|
const cComments = post.data.comments || [];
|
|
const commentIndex = cComments.findIndex((x: any) => x.id === commentId);
|
|
const comment = cComments[commentIndex];
|
|
/** comment.data.replies has to be defined */
|
|
if (comment && comment.data && comment.data.replies) comment.data.replies = [...comment.data.replies, reply];
|
|
return [200, { posts: [...posts] }];
|
|
} catch (err) {
|
|
console.error(err);
|
|
return [500, { message: 'Internal server error' }];
|
|
}
|
|
});
|
|
|
|
mock.onPost('/api/posts/list/like').reply((config) => {
|
|
try {
|
|
const { postId } = JSON.parse(config.data);
|
|
const postIndex = posts.findIndex((x: any) => x.id === postId);
|
|
|
|
const post = { ...posts[postIndex] };
|
|
post.data = { ...post.data };
|
|
|
|
post.data.likes = { ...post.data.likes };
|
|
post.data.likes.like = !post.data.likes.like;
|
|
post.data.likes.value = post.data.likes.like ? post.data.likes.value + 1 : post.data.likes.value - 1;
|
|
posts[postIndex] = post;
|
|
return [200, { posts: [...posts] }];
|
|
} catch (err) {
|
|
console.error(err);
|
|
return [500, { message: 'Internal server error' }];
|
|
}
|
|
});
|
|
|
|
mock.onPost('/api/comments/list/like').reply((config) => {
|
|
try {
|
|
const { postId, commentId } = JSON.parse(config.data);
|
|
const postIndex = posts.findIndex((x: any) => x.id === postId);
|
|
const post = posts[postIndex];
|
|
const cComments = post.data.comments || [];
|
|
const commentIndex = cComments.findIndex((x: any) => x.id === commentId);
|
|
const comment = { ...cComments[commentIndex] };
|
|
/** comment.data.likes has to be defined */
|
|
if (comment && comment.data && comment.data.likes) comment.data.likes.like = !comment.data.likes.like;
|
|
if (comment && comment.data && comment.data.likes)
|
|
comment.data.likes.value = comment.data.likes.like ? comment.data.likes.value + 1 : comment.data.likes.value - 1;
|
|
if (post && post.data && post.data.comments) post.data.comments[commentIndex] = comment;
|
|
return [200, { posts: [...posts] }];
|
|
} catch (err) {
|
|
console.error(err);
|
|
return [500, { message: 'Internal server error' }];
|
|
}
|
|
});
|
|
|
|
mock.onPost('/api/replies/list/like').reply((config) => {
|
|
try {
|
|
const { postId, commentId, replayId } = JSON.parse(config.data);
|
|
const postIndex = posts.findIndex((x: any) => x.id === postId);
|
|
const post = posts[postIndex];
|
|
const cComments = post.data.comments || [];
|
|
const commentIndex = cComments.findIndex((x: any) => x.id === commentId);
|
|
const comment = { ...cComments[commentIndex] };
|
|
const replayIndex = comment?.data?.replies?.findIndex((x: any) => x.id === replayId);
|
|
if (replayIndex !== undefined) {
|
|
if (comment && comment.data && comment.data.replies) {
|
|
const reply = { ...comment.data.replies[replayIndex] };
|
|
if (reply && reply.data && reply.data.likes) {
|
|
reply.data.likes.like = !reply.data.likes.like;
|
|
reply.data.likes.value = reply.data.likes.like ? reply.data.likes.value + 1 : reply.data.likes.value - 1;
|
|
}
|
|
comment.data.replies[replayIndex] = reply;
|
|
if (post && post.data && post.data.comments) post.data.comments[commentIndex] = comment;
|
|
}
|
|
}
|
|
return [200, { posts: [...posts] }];
|
|
} catch (err) {
|
|
console.error(err);
|
|
return [500, { message: 'Internal server error' }];
|
|
}
|
|
});
|