79 lines
1.6 KiB
TypeScript
79 lines
1.6 KiB
TypeScript
import {
|
|
Router,
|
|
Request,
|
|
Response
|
|
} from "express";
|
|
import {
|
|
ChannelModel,
|
|
ChannelCreateEvent,
|
|
DMChannel,
|
|
UserModel,
|
|
toObject,
|
|
ChannelType,
|
|
Snowflake
|
|
} from "@fosscord/server-util";
|
|
import {
|
|
HTTPError
|
|
} from "lambert-server";
|
|
import {
|
|
emitEvent
|
|
} from "../../../util/Event";
|
|
import {
|
|
getPublicUser
|
|
} from "../../../util/User";
|
|
import {
|
|
DmChannelCreateSchema
|
|
} from "../../../schema/Channel";
|
|
import {
|
|
check
|
|
} from "../../../util/instanceOf";
|
|
|
|
const router: Router = Router();
|
|
|
|
router.get("/", async (req: Request, res: Response) => {
|
|
const user = await UserModel.findOne({
|
|
id: req.user_id
|
|
}, {
|
|
guilds: true
|
|
}).exec();
|
|
if (!user) throw new HTTPError("User not found", 404);
|
|
|
|
var testID = "829044530203328513"; //FOR TEST
|
|
|
|
var channels = await ChannelModel.find({
|
|
recipients: req.user_id,
|
|
type: 1
|
|
}).exec();
|
|
|
|
res.json(toObject(channels));
|
|
});
|
|
|
|
router.post("/", check(DmChannelCreateSchema), async (req, res) => {
|
|
const body = req.body as DmChannelCreateSchema;
|
|
switch (body.type) {
|
|
case ChannelType.GUILD_CATEGORY:
|
|
case ChannelType.GUILD_TEXT:
|
|
case ChannelType.GUILD_VOICE:
|
|
throw new HTTPError("You can't create a dm channel in a guild");
|
|
// TODO:
|
|
case ChannelType.GUILD_STORE:
|
|
throw new HTTPError("Not yet supported");
|
|
case ChannelType.GUILD_NEWS:
|
|
// TODO: check if guild is community server
|
|
}
|
|
|
|
const channel = {
|
|
...body,
|
|
owner_id: req.user_id,
|
|
id: Snowflake.generate(),
|
|
created_at: new Date(),
|
|
};
|
|
await new ChannelModel(channel).save();
|
|
|
|
/*Event({ event: "CHANNEL_CREATE", data: channel } as ChannelCreateEvent);*/
|
|
|
|
|
|
res.json(channel);
|
|
});
|
|
|
|
export default router; |