wip direct messages
This commit is contained in:
9
Makefile
9
Makefile
@@ -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
|
||||
|
||||
25
README.md
25
README.md
@@ -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 :
|
||||
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -5,6 +5,6 @@ export class createRoomDto extends roomDto
|
||||
{
|
||||
@IsString()
|
||||
@IsOptional()
|
||||
room_password: string;
|
||||
password?: string;
|
||||
}
|
||||
|
||||
|
||||
@@ -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[];
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user