room Info
This commit is contained in:
parent
3684c69b8a
commit
7acac390aa
1 changed files with 52 additions and 1 deletions
|
@ -66,6 +66,58 @@ export const listRooms: Act = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const getRoomInfo: Act = {
|
||||||
|
state: STATE.client | STATE.remote,
|
||||||
|
right: 0,
|
||||||
|
data: {
|
||||||
|
room: "name",
|
||||||
|
server: "string",
|
||||||
|
},
|
||||||
|
func: async (client: Client, data: any, aws: (code: string, data: any) => void) => {
|
||||||
|
if (!checkSelfTag(data.server)) {
|
||||||
|
if (client.state != STATE.client) return void aws("error", "right");
|
||||||
|
let resp = await client.pass(data.server, "getRoomInfo", data);
|
||||||
|
aws(resp.state, resp.data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let ownerAlias = alias(
|
||||||
|
select([accounts.name], accounts)
|
||||||
|
.where(eq(accounts.accID, rooms.owner)),
|
||||||
|
"owner") as any;
|
||||||
|
let req = await select([
|
||||||
|
rooms.name,
|
||||||
|
ownerAlias,
|
||||||
|
rooms.rights,
|
||||||
|
rooms.visibility,
|
||||||
|
rooms.title,
|
||||||
|
rooms.description,
|
||||||
|
rooms.icon,
|
||||||
|
roomMembers.admin
|
||||||
|
], innerJoinUsing(rooms, roomMembers, rooms.roomID, roomMembers.roomID))
|
||||||
|
.where(and(
|
||||||
|
eq(roomMembers.name, client.name),
|
||||||
|
eq(roomMembers.server, client.state == STATE.client ? "local" : client.server.tag),
|
||||||
|
eq(rooms.name, data.room)
|
||||||
|
))
|
||||||
|
.query(db);
|
||||||
|
if (req.length == 0) return void aws("error", "existence");
|
||||||
|
aws("ok", {
|
||||||
|
name: req[0][rooms.name],
|
||||||
|
server: selfTag.tag,
|
||||||
|
owner: req[0][ownerAlias],
|
||||||
|
rights: req[0][rooms.rights],
|
||||||
|
visibility: req[0][rooms.visibility],
|
||||||
|
title: req[0][rooms.title],
|
||||||
|
description: req[0][rooms.description],
|
||||||
|
icon: req[0][rooms.icon],
|
||||||
|
|
||||||
|
isAdmin: req[0][roomMembers.admin] ? true : false,
|
||||||
|
isOwner: client.state == STATE.client && req[0][ownerAlias] == client.name,
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
export const getRoomMembers: Act = {
|
export const getRoomMembers: Act = {
|
||||||
state: STATE.client | STATE.remote,
|
state: STATE.client | STATE.remote,
|
||||||
right: 0,
|
right: 0,
|
||||||
|
@ -82,7 +134,6 @@ export const getRoomMembers: Act = {
|
||||||
}
|
}
|
||||||
|
|
||||||
let roomID = await client.isInRoom(data.room);
|
let roomID = await client.isInRoom(data.room);
|
||||||
console.log(data, client.server.tag, client.name, roomID);
|
|
||||||
if (roomID == -1) {
|
if (roomID == -1) {
|
||||||
aws("error", "existence");
|
aws("error", "existence");
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in a new issue