mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-09 10:34:17 +00:00
48 lines
1.1 KiB
JavaScript
Executable File
48 lines
1.1 KiB
JavaScript
Executable File
import { User, UserFollow } from "@db_models"
|
|
|
|
export default async (payload) => {
|
|
if (typeof payload.user_id === "undefined") {
|
|
throw new Error("No user_id provided")
|
|
}
|
|
if (typeof payload.to === "undefined") {
|
|
throw new Error("No to provided")
|
|
}
|
|
|
|
const user = await User.findById(payload.user_id)
|
|
|
|
if (!user) {
|
|
throw new Error("User not found")
|
|
}
|
|
|
|
const follow = await UserFollow.findOne({
|
|
user_id: payload.user_id,
|
|
to: payload.to,
|
|
})
|
|
|
|
if (follow) {
|
|
throw new Error("Already following")
|
|
}
|
|
|
|
const newFollow = await UserFollow.create({
|
|
user_id: payload.user_id,
|
|
to: payload.to,
|
|
})
|
|
|
|
await newFollow.save()
|
|
|
|
global.engine.ws.io.of("/").emit(`user.follow`, {
|
|
...user.toObject(),
|
|
})
|
|
global.engine.ws.io.of("/").emit(`user.follow.${payload.user_id}`, {
|
|
...user.toObject(),
|
|
})
|
|
|
|
const followers = await UserFollow.find({
|
|
to: payload.to,
|
|
})
|
|
|
|
return {
|
|
following: true,
|
|
followers: followers,
|
|
}
|
|
} |