wip direct messages

This commit is contained in:
simplonco
2023-01-11 18:20:48 +01:00
parent 8e7efbb65a
commit aa86299e73
10 changed files with 187 additions and 214 deletions

View File

@@ -24,5 +24,14 @@ destroy:
- docker images -aq | xargs --no-run-if-empty docker rmi -f
- docker volume ls -q | xargs --no-run-if-empty docker volume rm
# temp for hugo
db:
- docker compose -f postgresql -v down
- docker rm -f postgresql
- docker volume rm -f srcs_data_nest_postgresql
docker compose -f ${DOCKERCOMPOSEPATH} up -d --build
@make start
@docker ps
stop:
docker compose -f ${DOCKERCOMPOSEPATH} stop

View File

@@ -68,15 +68,22 @@
#### chat :
- [ ] can create chat-rooms (public/private, password protected)
- [ ] send direct messages
- [ ] block other users
- [ ] creators of chat-room are owners, untill they leave
- [ ] chat-room owner can set, change, remove password
- [ ] chat-room owner is administrator and can set other administrators
- [ ] administrators can ban or mute for a time other users
- [ ] send game invitation in chat
- [ ] view user profiles from chat
- [/] create public room
- [ ] create private room
- [/] create direct room
- [/] chat in room
- [/] join rooms
- [/] see all joignable rooms
- [/] see all my rooms
- [/] leave room
- [ ] invite someone in room
- [ ] make admin
- [ ] ban
- [ ] mute
- [ ] protect room with password
- [ ] bock users
- [ ] send game invitation
- [ ] view user profiles
#### game :

View File

@@ -18,52 +18,13 @@ export class ChatController {
private chatGateway: ChatGateway,
) {}
// don't allow '+' because it's used in direct rooms name
private allowed_chars = '-#!?_';
private escape_chars(str)
{
return str.split("").join("\\");
}
/*
The requested user found.
AuthenticateGuard : Is User authenticated : true
- in createRoom controller
-- in addUserToNewRoom service
-- in getRoomByName service
-- out getRoomByName service
-- out addUserToNewRoom service
- out createRoom controller
The requested user found.
AuthenticateGuard : Is User authenticated : true
The requested user found.
AuthenticateGuard : Is User authenticated : true
- in getMessages controller
-- in getMessagesFromCurrentRoom service
-- in getUserByName service
-- out getUserByName service
--- currentUser:
User {
id: 1,
fortyTwoId: '42522',
username: 'hulamy',
email: 'hulamy@student.42.fr',
image_url: 'default.png',
phone: null,
status: 'Connected',
isEnabledTwoFactorAuth: false,
isTwoFactorAuthenticated: false,
secretTwoFactorAuth: null,
currentRoom: null
}
-- in getRoomByName service
-- out getRoomByName service
--- currentRoom:
null
-- out getMessagesFromCurrentRoom service
- out getMessages controller
*/
@UseGuards(AuthenticateGuard)
@UseGuards(TwoFactorGuard)
@@ -83,6 +44,7 @@ null
{
console.log("- in getAllRooms controller");
const rooms = await this.chatService.getAllOtherRoomsAndUsers(req.user.username)
console.log("--- rooms:", rooms);
res.status(HttpStatus.OK).json({ rooms: rooms });
console.log("- out getAllRooms controller");
@@ -119,14 +81,14 @@ null
let chars = this.escape_chars(this.allowed_chars);
let regex_base = `[a-zA-Z0-9\\s${chars}]`;
let test_regex = new RegExp(`^${regex_base}+$`);
if (test_regex.test(createRoomDto.room_name) === false)
if (test_regex.test(createRoomDto.name) === false)
{
let forbidden_chars = createRoomDto.room_name.replace(new RegExp(regex_base, "g"), "");
let forbidden_chars = createRoomDto.name.replace(new RegExp(regex_base, "g"), "");
throw new HttpException(`Your room name can not contains these characters : ${forbidden_chars}`, HttpStatus.UNPROCESSABLE_ENTITY);
}
const response = await this.chatService.addUserToNewRoom(req.user.username, createRoomDto);
res.status(HttpStatus.OK).json({ room_name: createRoomDto.room_name, message: response });
res.status(HttpStatus.OK).json({ room_name: createRoomDto.name, message: response });
console.log("- out createRoom controller");
}
@@ -136,12 +98,23 @@ null
async joinRoom(@Body() room: roomDto, @Req() req, @Res() res): Promise<void>
{
console.log("- in joinRoom controller");
const response = await this.chatService.addUserToRoom(req.user.username, room.room_name);
let response = "";
if (room.type === 'direct')
throw new HttpException(`cannot join a direct messages room`, HttpStatus.CONFLICT);
else if (room.type === 'user')
{
room.type = 'direct';
room.users = [room.name, req.user.username];
room.name += ` + ${req.user.username}`;
await this.chatService.addUserToNewRoom(req.user.username, room);
}
else
await this.chatService.addUserToRoom(req.user.username, room.name);
let socket: socketDto = this.chatGateway.sockets.get(req.user.username);
await this.chatService.socketJoinRoom(socket, room.room_name);
await this.chatService.socketJoinRoom(socket, room.name);
res.status(HttpStatus.OK).json({ room_name: room.room_name, message: response });
res.status(HttpStatus.OK).json({ room: room });
console.log("- out joinRoom controller");
}
@@ -151,12 +124,12 @@ null
async changeRoom(@Body() room: roomDto, @Req() req, @Res() res): Promise<void>
{
console.log("- in changeRoom controller");
const response = await this.chatService.setCurrentRoom(req.user.username, room.room_name);
const response = await this.chatService.setCurrentRoom(req.user.username, room.name);
let socket: socketDto = this.chatGateway.sockets.get(req.user.username);
await this.chatService.socketChangeRoom(socket, room.room_name);
await this.chatService.socketChangeRoom(socket, room.name);
res.status(HttpStatus.OK).json({ room_name: room.room_name, message: response });
res.status(HttpStatus.OK).json({ room: room });
console.log("- out changeRoom controller");
}

View File

@@ -78,31 +78,28 @@ export class ChatService {
return rooms;
}
//async getAllOtherRoomsAndUsers(username: string): Promise<roomDto[]>
async getAllOtherRoomsAndUsers(username: string): Promise<roomDto>
async getAllOtherRoomsAndUsers(username: string): Promise<roomDto[]>
{
console.log("-- in getAllOtherRoomsAndUsers service");
const all_rooms = await this.getAllNotMyRooms(username);
const all_users = await this.getAllUsersNotMyRooms(username);
// let row_rooms = all_rooms.map(room => {
// return {
// room_name: room.name,
// room_type: "",
// };
// });
// let users = all_users.map(user => {
// return {
// room_name: user.username,
// room_type: "",
// };
// });
// let rooms = row_rooms.concat(users);
let rooms: roomDto = {
room_name: "room.name",
room_type: "",
};
console.log("--- all_rooms:", all_rooms)
console.log("--- all_users:", all_users)
let row_rooms = all_rooms.map(room => {
return {
name: room.name,
type: room.type,
};
});
let users = all_users.map(user => {
return {
name: user.username,
type: "user",
};
});
let rooms = row_rooms.concat(users);
console.log("--- rooms:", rooms)
console.log("-- in getAllOtherRoomsAndUsers service");
return rooms;
@@ -112,11 +109,7 @@ export class ChatService {
{
console.log("-- in getMessagesFromCurrentRoom service");
const user_db = await this.getUserByName(username);
console.log("--- currentUser:");
console.log(user_db);
const currentRoom = await this.getRoomByName(user_db.currentRoom);
console.log("--- currentRoom:");
console.log(currentRoom);
let messages = null;
if (currentRoom)
messages = currentRoom.messages;
@@ -140,7 +133,7 @@ export class ChatService {
console.log("-- in getRoomByName service");
const room = await this.chatroomRepository
.createQueryBuilder('chatroom')
.where('chatroom.name = :name', { name: room_name })
.where('chatroom.name = :name', { name: room_name.replace("+", "\\+") })
.getOne();
console.log("-- out getRoomByName service");
@@ -178,27 +171,28 @@ export class ChatService {
/* ADDERS *************************************************
*/
async addUserToNewRoom(username: string, createRoomDto: createRoomDto): Promise<string>
async addUserToNewRoom(username: string, createRoomDto: createRoomDto): Promise<void>
{
console.log("-- in addUserToNewRoom service");
const room = await this.getRoomByName(createRoomDto.room_name);
const room = await this.getRoomByName(createRoomDto.name);
if (room)
throw new HttpException(`This room name already exist`, HttpStatus.CONFLICT);
// create chatroom
const newChatroom = new Chatroom();
newChatroom.name = createRoomDto.room_name;
newChatroom.type = createRoomDto.room_type;
newChatroom.name = createRoomDto.name;
newChatroom.type = createRoomDto.type;
newChatroom.owner = username;
newChatroom.users = [username];
newChatroom.messages = [{ name: "SERVER", message: `creation of room ${createRoomDto.room_name}` }];
if (createRoomDto.type === 'direct')
newChatroom.users = createRoomDto.users;
newChatroom.messages = [{ name: "SERVER", message: `creation of room ${createRoomDto.name}` }];
this.chatroomRepository.save(newChatroom);
console.log("-- out addUserToNewRoom service");
return "successfull room creation";
}
async addUserToRoom(username: string, room_name: string): Promise<string>
async addUserToRoom(username: string, room_name: string): Promise<void>
{
console.log("-- in addUserToRoom service");
const room = await this.getRoomByName(room_name);
@@ -212,19 +206,20 @@ export class ChatService {
await this.setCurrentRoom(username, room_name);
console.log("-- out addUserToRoom service");
return "successfully joining room";
}
async addMessageToRoom(room_name: string, username: string, message: string): Promise<void>
{
console.log("-- in addMessageToRoom service");
const currentRoom = await this.getRoomByName(room_name);
console.log("--- room_name:", room_name);
const my_room = await this.getRoomByName(room_name);
console.log("--- my_room:", my_room);
let chat_message = {
name: username,
message: message,
};
currentRoom.messages.push(chat_message);
this.chatroomRepository.save(currentRoom);
my_room.messages.push(chat_message);
this.chatroomRepository.save(my_room);
console.log("-- out addMessageToRoom service");
}
@@ -272,7 +267,15 @@ export class ChatService {
console.log("-- in getAllUsersNotMyRooms service");
const directs = await this.getMyDirects(username);
let usernames = directs.map(room => room.users[0]);
console.log("--- directs:", directs);
// get all users from directs
let usernames = directs.map(room => {
let user = room.users[0];
if (user === username)
user = room.users[1];
return user;
});
usernames.push(username);
console.log("usernames:", usernames);

View File

@@ -5,6 +5,6 @@ export class createRoomDto extends roomDto
{
@IsString()
@IsOptional()
room_password: string;
password?: string;
}

View File

@@ -6,12 +6,17 @@ export class roomDto
@Expose()
@IsString()
@IsNotEmpty()
room_name: string;
name: string;
@Expose()
//@IsString()
@IsString()
@IsNotEmpty()
//@IsIn(["public", "protected", "private", "direct", "user"])
room_type: string;
@IsIn(["public", "protected", "private", "direct", "user"])
type: string;
@Expose()
@IsString()
@IsOptional()
users?: string[];
}

View File

@@ -3890,33 +3890,31 @@ var app = (function () {
message: response_message
};
}
async function join_room(room_name) {
async function join_room(room) {
console.log("in join_room");
console.log(room_name);
let name = {
room_name: room_name,
};
const response = await fetch('/api/v2/chat/join', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(name),
body: JSON.stringify(room),
});
let data = await response.json();
console.log(data.message);
return data.room;
}
async function change_room(room_name) {
async function change_room(room) {
console.log("in change_room");
let room_name_request = {
room_name: room_name,
};
const response = await fetch('/api/v2/chat/change', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(room_name_request),
body: JSON.stringify(room),
});
let data = await response.json();
console.log(data.message);
await get_room_messages();
let room_name = data.room.name;
if (room.type === 'direct') {
room_name === room.users[0];
if (room_name === user.username)
room_name === room.users[1];
}
current_room_name.set(room_name);
layout.set("room");
}
@@ -3924,38 +3922,25 @@ var app = (function () {
console.log("in get_my_rooms");
const response = await fetch('/api/v2/chat/myrooms');
const data = await response.json();
console.log("data.rooms:", data.rooms);
for (let room of data.rooms)
console.log(room.name);
let rooms = data.rooms;
return rooms;
return data.rooms;
}
async function get_all_rooms() {
console.log("in get_all_rooms");
const response = await fetch('/api/v2/chat/allrooms');
const data = await response.json();
console.log("data.rooms:", data.rooms);
for (let room of data.rooms)
console.log(room.name);
return rooms;
return data.rooms;
}
async function get_room_users() {
console.log("in get_room_users");
const response = await fetch('/api/v2/chat/roomusers');
const data = await response.json();
console.log("data.users:", data.users);
for (let user of data.users)
console.log(user.username);
let users = data.users;
return users;
return data.users;
}
async function user_leave_room() {
console.log("in leave_room");
const response = await fetch('/api/v2/chat/removeuser', {
await fetch('/api/v2/chat/removeuser', {
method: 'DELETE',
});
const data = await response.json();
console.log("data", data);
}
/* src/pieces/chat/Layout_home.svelte generated by Svelte v3.53.1 */
@@ -5280,11 +5265,11 @@ var app = (function () {
function get_each_context$6(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[3] = list[i];
child_ctx[4] = list[i];
return child_ctx;
}
// (26:1) <Button new_layout={back} my_class="back icon" my_title="go back {back}">
// (20:1) <Button new_layout={back} my_class="back icon" my_title="go back {back}">
function create_default_slot_4$3(ctx) {
let t;
@@ -5304,14 +5289,14 @@ var app = (function () {
block,
id: create_default_slot_4$3.name,
type: "slot",
source: "(26:1) <Button new_layout={back} my_class=\\\"back icon\\\" my_title=\\\"go back {back}\\\">",
source: "(20:1) <Button new_layout={back} my_class=\\\"back icon\\\" my_title=\\\"go back {back}\\\">",
ctx
});
return block;
}
// (31:1) <Button my_class="new deactivate">
// (25:1) <Button my_class="new deactivate">
function create_default_slot_3$4(ctx) {
let t;
@@ -5331,14 +5316,14 @@ var app = (function () {
block,
id: create_default_slot_3$4.name,
type: "slot",
source: "(31:1) <Button my_class=\\\"new deactivate\\\">",
source: "(25:1) <Button my_class=\\\"new deactivate\\\">",
ctx
});
return block;
}
// (36:1) <Button new_layout="close" my_class="close icon">
// (30:1) <Button new_layout="close" my_class="close icon">
function create_default_slot_2$8(ctx) {
let t;
@@ -5358,14 +5343,14 @@ var app = (function () {
block,
id: create_default_slot_2$8.name,
type: "slot",
source: "(36:1) <Button new_layout=\\\"close\\\" my_class=\\\"close icon\\\">",
source: "(30:1) <Button new_layout=\\\"close\\\" my_class=\\\"close icon\\\">",
ctx
});
return block;
}
// (42:2) <Button new_layout="create" my_class="create">
// (36:2) <Button new_layout="create" my_class="create">
function create_default_slot_1$8(ctx) {
let t;
@@ -5385,14 +5370,14 @@ var app = (function () {
block,
id: create_default_slot_1$8.name,
type: "slot",
source: "(42:2) <Button new_layout=\\\"create\\\" my_class=\\\"create\\\">",
source: "(36:2) <Button new_layout=\\\"create\\\" my_class=\\\"create\\\">",
ctx
});
return block;
}
// (1:0) <script> import { layout, msgs, user, socket }
// (1:0) <script lang="ts">import './Store_chat'; import { join_room, change_room, get_all_rooms }
function create_catch_block$2(ctx) {
const block = {
c: noop,
@@ -5407,14 +5392,14 @@ var app = (function () {
block,
id: create_catch_block$2.name,
type: "catch",
source: "(1:0) <script> import { layout, msgs, user, socket }",
source: "(1:0) <script lang=\\\"ts\\\">import './Store_chat'; import { join_room, change_room, get_all_rooms }",
ctx
});
return block;
}
// (52:3) {:then rooms}
// (46:3) {:then rooms}
function create_then_block$2(ctx) {
let each_1_anchor;
let current;
@@ -5503,16 +5488,16 @@ var app = (function () {
block,
id: create_then_block$2.name,
type: "then",
source: "(52:3) {:then rooms}",
source: "(46:3) {:then rooms}",
ctx
});
return block;
}
// (54:5) <Button my_class="list" on_click={join_rooms}>
// (48:5) <Button my_class="list" on_click={function() {join_rooms(room)}}>
function create_default_slot$9(ctx) {
let t0_value = /*room*/ ctx[3].name + "";
let t0_value = /*room*/ ctx[4].name + "";
let t0;
let t1;
@@ -5536,22 +5521,26 @@ var app = (function () {
block,
id: create_default_slot$9.name,
type: "slot",
source: "(54:5) <Button my_class=\\\"list\\\" on_click={join_rooms}>",
source: "(48:5) <Button my_class=\\\"list\\\" on_click={function() {join_rooms(room)}}>",
ctx
});
return block;
}
// (53:4) {#each rooms as room}
// (47:4) {#each rooms as room}
function create_each_block$6(ctx) {
let button;
let current;
function func() {
return /*func*/ ctx[3](/*room*/ ctx[4]);
}
button = new Element_button({
props: {
my_class: "list",
on_click: /*join_rooms*/ ctx[1],
on_click: func,
$$slots: { default: [create_default_slot$9] },
$$scope: { ctx }
},
@@ -5566,10 +5555,11 @@ var app = (function () {
mount_component(button, target, anchor);
current = true;
},
p: function update(ctx, dirty) {
p: function update(new_ctx, dirty) {
ctx = new_ctx;
const button_changes = {};
if (dirty & /*$$scope*/ 64) {
if (dirty & /*$$scope*/ 128) {
button_changes.$$scope = { dirty, ctx };
}
@@ -5593,14 +5583,14 @@ var app = (function () {
block,
id: create_each_block$6.name,
type: "each",
source: "(53:4) {#each rooms as room}",
source: "(47:4) {#each rooms as room}",
ctx
});
return block;
}
// (50:17) <p>rooms are loading...</p> {:then rooms}
// (44:17) <p>rooms are loading...</p> {:then rooms}
function create_pending_block$2(ctx) {
let p;
@@ -5608,7 +5598,7 @@ var app = (function () {
c: function create() {
p = element("p");
p.textContent = "rooms are loading...";
add_location(p, file$n, 50, 4, 1077);
add_location(p, file$n, 44, 4, 1114);
},
m: function mount(target, anchor) {
insert_dev(target, p, anchor);
@@ -5625,7 +5615,7 @@ var app = (function () {
block,
id: create_pending_block$2.name,
type: "pending",
source: "(50:17) <p>rooms are loading...</p> {:then rooms}",
source: "(44:17) <p>rooms are loading...</p> {:then rooms}",
ctx
});
@@ -5726,17 +5716,17 @@ var app = (function () {
p1.textContent = "/ there are no public rooms yet /";
t7 = space();
info.block.c();
add_location(p0, file$n, 44, 2, 897);
add_location(p0, file$n, 38, 2, 934);
attr_dev(p1, "class", "__center");
add_location(p1, file$n, 47, 4, 987);
add_location(p1, file$n, 41, 4, 1024);
attr_dev(div0, "class", "__show_if_only_child");
add_location(div0, file$n, 46, 3, 948);
add_location(div0, file$n, 40, 3, 985);
attr_dev(div1, "class", "public_rooms");
add_location(div1, file$n, 45, 2, 918);
add_location(div1, file$n, 39, 2, 955);
attr_dev(div2, "class", "panel panel_new __border_top");
add_location(div2, file$n, 40, 1, 781);
add_location(div2, file$n, 34, 1, 818);
attr_dev(div3, "class", "grid_box svelte-1b4c0qx");
add_location(div3, file$n, 22, 0, 472);
add_location(div3, file$n, 16, 0, 509);
},
l: function claim(nodes) {
throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
@@ -5769,28 +5759,28 @@ var app = (function () {
if (dirty & /*back*/ 1) button0_changes.new_layout = /*back*/ ctx[0];
if (dirty & /*back*/ 1) button0_changes.my_title = "go back " + /*back*/ ctx[0];
if (dirty & /*$$scope*/ 64) {
if (dirty & /*$$scope*/ 128) {
button0_changes.$$scope = { dirty, ctx };
}
button0.$set(button0_changes);
const button1_changes = {};
if (dirty & /*$$scope*/ 64) {
if (dirty & /*$$scope*/ 128) {
button1_changes.$$scope = { dirty, ctx };
}
button1.$set(button1_changes);
const button2_changes = {};
if (dirty & /*$$scope*/ 64) {
if (dirty & /*$$scope*/ 128) {
button2_changes.$$scope = { dirty, ctx };
}
button2.$set(button2_changes);
const button3_changes = {};
if (dirty & /*$$scope*/ 64) {
if (dirty & /*$$scope*/ 128) {
button3_changes.$$scope = { dirty, ctx };
}
@@ -5849,11 +5839,13 @@ var app = (function () {
let rooms = get_all_rooms();
// join the room
async function join_rooms(evt) {
async function join_rooms(room) {
console.log("inside join_room");
let room_name = evt.target.innerText;
await join_room(room_name);
await change_room(room_name);
console.log("room:", room);
console.log("room:", room);
const updated_room = await join_room(room);
console.log("updated room:", updated_room);
await change_room(updated_room);
}
const writable_props = ['back'];
@@ -5862,18 +5854,17 @@ var app = (function () {
if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console_1$b.warn(`<Layout_new> was created with unknown prop '${key}'`);
});
const func = function (room) {
join_rooms(room);
};
$$self.$$set = $$props => {
if ('back' in $$props) $$invalidate(0, back = $$props.back);
};
$$self.$capture_state = () => ({
layout,
msgs,
user,
socket: socket$1,
join_room,
change_room,
get_room_messages,
get_all_rooms,
Button: Element_button,
back,
@@ -5890,7 +5881,7 @@ var app = (function () {
$$self.$inject_state($$props.$$inject);
}
return [back, join_rooms, rooms];
return [back, join_rooms, rooms, func];
}
class Layout_new extends SvelteComponentDev {

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
<script>
<script lang="ts">
import { layout, msgs, user, socket } from './Store_chat';
import { join_room, change_room, get_room_messages, get_all_rooms } from './Request_rooms';
@@ -9,13 +9,15 @@
let rooms = get_all_rooms();
// join the room
async function join_rooms(evt)
async function join_rooms(room: object)
{
console.log("inside join_room");
let room_name = evt.target.innerText;
console.log("room:", room);
await join_room(room_name);
await change_room(room_name);
console.log("room:", room);
const updated_room = await join_room(room);
console.log("updated room:", updated_room);
await change_room(updated_room);
}
</script>
@@ -51,7 +53,7 @@
<p>rooms are loading...</p>
{:then rooms}
{#each rooms as room}
<Button my_class="list" on_click={join_rooms}>
<Button my_class="list" on_click={function() {join_rooms(room)}}>
{room.name}
</Button>
{/each}

View File

@@ -48,40 +48,40 @@ export async function create_room(room_name, room_type)
};
}
export async function join_room(room_name)
export async function join_room(room)
{
console.log("in join_room");
console.log(room_name);
let name = {
room_name: room_name,
}
const response = await fetch('/api/v2/chat/join', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(name),
body: JSON.stringify(room),
});
let data = await response.json();
console.log(data.message);
return data.room;
}
export async function change_room(room_name)
export async function change_room(room)
{
console.log("in change_room");
let room_name_request = {
room_name: room_name,
}
const response = await fetch('/api/v2/chat/change', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(room_name_request),
body: JSON.stringify(room),
});
let data = await response.json();
console.log(data.message);
await get_room_messages();
let room_name = data.room.name;
if (room.type === 'direct')
{
room_name === room.users[0];
if (room_name === user.username)
room_name === room.users[1];
}
current_room_name.set(room_name);
layout.set("room");
}
@@ -93,12 +93,7 @@ export async function get_my_rooms()
const response = await fetch('/api/v2/chat/myrooms');
const data = await response.json();
console.log("data.rooms:", data.rooms);
for (let room of data.rooms)
console.log(room.name);
let rooms = data.rooms;
return rooms;
return data.rooms;
}
export async function get_all_rooms()
@@ -108,11 +103,7 @@ export async function get_all_rooms()
const response = await fetch('/api/v2/chat/allrooms');
const data = await response.json();
console.log("data.rooms:", data.rooms);
for (let room of data.rooms)
console.log(room.name);
return rooms;
return data.rooms;
}
export async function get_room_users()
@@ -122,12 +113,7 @@ export async function get_room_users()
const response = await fetch('/api/v2/chat/roomusers');
const data = await response.json();
console.log("data.users:", data.users);
for (let user of data.users)
console.log(user.username);
let users = data.users;
return users;
return data.users;
}
export async function user_leave_room()
@@ -137,9 +123,6 @@ export async function user_leave_room()
const response = await fetch('/api/v2/chat/removeuser', {
method: 'DELETE',
});
const data = await response.json();
console.log("data", data);
}