list of room users

This commit is contained in:
hugogogo
2023-01-09 20:52:59 +01:00
parent 5184097765
commit eea631b18a
11 changed files with 587 additions and 234 deletions

View File

@@ -102,5 +102,18 @@ export class ChatController {
return res.status(HttpStatus.OK).json({ messages: messages });
}
@UseGuards(AuthenticateGuard)
@UseGuards(TwoFactorGuard)
@Get('roomusers')
async getRoomUsers(@Req() req, @Res() res): Promise<object>
{
console.log("- in getRoomUsers controller");
const current_room = await this.chatService.getCurrentRoom(req.user.username);
const room = await this.chatService.getRoomByName(current_room);
const users = room.users;
console.log("- out getRoomUsers controller");
return res.status(HttpStatus.OK).json({ users: users });
}
}

View File

@@ -83,6 +83,7 @@ export class ChatService {
async getCurrentRoom(username: string)
{
console.log("-- in getCurrentRoom service");
console.log('username:', username);
const user_db = await this.getUserByName(username);
//const user_db = await this.usersService.findOne(username);

View File

@@ -27,10 +27,10 @@ export class Chatroom {
// users: User[];
@Column()
owner: string; // name
owner: string; // username
@Column("simple-array")
users: string[]; // names
users: string[]; // usernames
@Column("json")
messages: { name: string, message: string }[];

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -1,11 +1,11 @@
<script>
import { layout, msgs, user } from './Store_chat';
import { change_room, get_room_messages, get_all_rooms } from './Request_rooms';
import { change_room, get_room_messages, get_my_rooms } from './Request_rooms';
import { onMount } from 'svelte';
import Button from './Element_button.svelte';
let rooms = get_all_rooms();
let rooms = get_my_rooms();
// go to clicked room
async function go_to_room(evt)
@@ -42,8 +42,7 @@
<p class="__center">/ you have no chat room yet /</p>
</div>
{#await rooms}
<!-- promise is pending -->
<p>rooms are loaded...</p>
<p>rooms are loading...</p>
{:then rooms}
{#each rooms as room}
<Button my_class="list" on_click={go_to_room}>

View File

@@ -1,23 +1,12 @@
<script>
import { layout, msgs, user, socket } from './Store_chat';
import { join_room, change_room, get_room_messages } from './Request_rooms';
import { join_room, change_room, get_room_messages, get_all_rooms } from './Request_rooms';
import Button from './Element_button.svelte';
export let back = "";
let rooms = [];
// ask api for the rooms
const get_rooms = fetch('/api/v2/chat/allrooms')
.then(resp => resp.json())
.then(data =>
{
console.log("data.rooms:", data.rooms);
for (let room of data.rooms)
console.log(room.name);
rooms = data.rooms;
});
let rooms = get_all_rooms();
// join the room
async function join_rooms(evt)
@@ -58,10 +47,9 @@
<div class="__show_if_only_child">
<p class="__center">/ there are no public rooms yet /</p>
</div>
{#await get_rooms}
<!-- promise is pending -->
<p>rooms are loaded...</p>
{:then}
{#await rooms}
<p>rooms are loading...</p>
{:then rooms}
{#each rooms as room}
<Button my_class="list" on_click={join_rooms}>
{room.name}

View File

@@ -1,6 +1,6 @@
<script>
import { layout, socket, msgs, add_msg, room_name } from './Store_chat';
import { layout, socket, msgs, add_msg, current_room_name } from './Store_chat';
import Button from './Element_button.svelte';
import Msg from './Element_msg.svelte';
@@ -42,7 +42,7 @@
<!-- room_name -->
<Button new_layout="room_set" my_class="room_name transparent">
{$room_name}
{$current_room_name}
</Button>
<!-- close -->

View File

@@ -1,10 +1,18 @@
<script>
import { layout } from './Store_chat';
import { layout, current_room_name } from './Store_chat';
import { get_room_users } from './Request_rooms';
import Button from './Element_button.svelte';
export let back = "";
let users = get_room_users($current_room_name);
function user_profile()
{
console/log("got to user profile");
}
</script>
<div class="grid_box">
@@ -16,7 +24,7 @@
<!-- room_name -->
<Button my_class="room_name deactivate">
&lt;room_name&gt;
{$current_room_name}
</Button>
<!-- close -->
@@ -34,21 +42,15 @@
<div class="__show_if_only_child">
<p class="__center">/ there are no public rooms yet /</p>
</div>
<!-- placeholders
<Button new_layout="user" my_class="list">
user 1
</Button>
<Button new_layout="user" my_class="list blocked">
user 2
</Button>
<Button new_layout="user" my_class="list">
user 3
</Button>
<Button new_layout="user" my_class="list">
user 4
</Button>
------------- -->
<!-- END placeholders -->
{#await users}
<p>list of users is loading...</p>
{:then users}
{#each users as user}
<Button new_layout="user" my_class="list" on_click={user_profile}>
{user}
</Button>
{/each}
{/await}
</div>
</div>

View File

@@ -1,4 +1,4 @@
import { msgs, user, layout, socket, room_name } from './Store_chat';
import { msgs, user, layout, socket, current_room_name } from './Store_chat';
export async function get_room_messages()
{
@@ -64,31 +64,31 @@ export async function join_room(room_name)
socket.emit('join', room_name);
}
export async function change_room(name)
export async function change_room(room_name)
{
console.log("in change_room");
let r_name = {
room_name: name,
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(r_name),
body: JSON.stringify(room_name_request),
});
let data = await response.json();
console.log(data.message);
await get_room_messages();
socket.emit('change', name);
socket.emit('change', room_name);
room_name.set(name);
current_room_name.set(room_name);
layout.set("room");
}
export async function get_all_rooms()
export async function get_my_rooms()
{
console.log("in get_all_rooms");
console.log("in get_my_rooms");
// ask api for the rooms
const response = await fetch('/api/v2/chat/myrooms');
@@ -102,3 +102,36 @@ export async function get_all_rooms()
return rooms;
}
export async function get_all_rooms()
{
console.log("in get_all_rooms");
// ask api for the 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);
let rooms = data.rooms;
return rooms;
}
export async function get_room_users()
{
console.log("in get_room_users");
// ask api for the rooms
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;
}

View File

@@ -2,7 +2,7 @@ import { writable } from 'svelte/store';
export let msgs = writable([]);
export let layout = writable("close");
export let room_name = writable("");
export let current_room_name = writable("");
export let user;
export let socket;