wip protected, already solved error http handling for createroom
This commit is contained in:
@@ -3,4 +3,15 @@ export interface Room
|
||||
name: string;
|
||||
type: "public" | "protected" | "private" | "direct" | "user";
|
||||
users?: string[];
|
||||
client_name?: string;
|
||||
protection?: boolean;
|
||||
}
|
||||
|
||||
export interface FetchResponse
|
||||
{
|
||||
status: number;
|
||||
code?: string;
|
||||
display?: boolean;
|
||||
message?: string;
|
||||
room?: any;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
import { msgs, layout, allowed_chars } from './Store_chat';
|
||||
import { change_room, create_room } from './Request_rooms';
|
||||
import { onMount } from 'svelte';
|
||||
import type { FetchResponse } from './Interface_chat';
|
||||
import Button from './Element_button.svelte';
|
||||
import Warning from './Element_warning.svelte';
|
||||
|
||||
@@ -22,10 +23,8 @@
|
||||
let room_type: string;
|
||||
let is_protected = false;
|
||||
let room_password: string;
|
||||
let response = {
|
||||
status: 0,
|
||||
message: "",
|
||||
}
|
||||
let response: FetchResponse;
|
||||
let show_error = false;
|
||||
|
||||
async function handleSubmit(evt)
|
||||
{
|
||||
@@ -37,12 +36,14 @@
|
||||
let room = {
|
||||
name: room_name,
|
||||
type: room_type,
|
||||
protection: is_protected,
|
||||
};
|
||||
if (is_protected === true)
|
||||
room.password = room_password;
|
||||
// send the new room
|
||||
response = await create_room(room);
|
||||
|
||||
show_error = response.display;
|
||||
// go to room
|
||||
if (response.status === 200)
|
||||
await change_room(response.room);
|
||||
@@ -70,7 +71,7 @@
|
||||
<!-- panel_create -->
|
||||
<div class="panel panel_create __border_top">
|
||||
<form on:submit|preventDefault={handleSubmit}>
|
||||
{#if response.status >= 300}
|
||||
{#if show_error}
|
||||
<Warning content={response.message}/>
|
||||
{/if}
|
||||
<!-- name: -->
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
<script lang="ts">
|
||||
|
||||
import { layout, current_room_name, current_room_type } from './Store_chat';
|
||||
import { change_room } from './Request_rooms';
|
||||
import { change_room, send_password } from './Request_rooms';
|
||||
import type { FetchResponse } from './Interface_chat';
|
||||
import Button from './Element_button.svelte';
|
||||
import Warning from './Element_warning.svelte';
|
||||
|
||||
export let back = "";
|
||||
|
||||
let room_password: string;
|
||||
let response = {
|
||||
status: 0,
|
||||
message: "",
|
||||
};
|
||||
let response: FetchResponse;
|
||||
let show_error = false;
|
||||
|
||||
async function handleSubmit(evt)
|
||||
{
|
||||
@@ -26,8 +25,13 @@
|
||||
password: room_password,
|
||||
};
|
||||
|
||||
// send password
|
||||
response = await send_password(room);
|
||||
|
||||
show_error = response.display;
|
||||
// go to room
|
||||
response = await change_room(room);
|
||||
if (response.status === 200)
|
||||
await change_room(response.room);
|
||||
}
|
||||
|
||||
</script>
|
||||
@@ -59,7 +63,7 @@
|
||||
</form>
|
||||
|
||||
<form on:submit|preventDefault={handleSubmit}>
|
||||
{#if response.status >= 300}
|
||||
{#if show_error}
|
||||
<Warning content={response.message}/>
|
||||
{/if}
|
||||
<label for="chat_pswd"><p>enter password :</p></label>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { msgs, user, layout, socket, current_room_name, current_room_type } from './Store_chat';
|
||||
import type { Room } from './Interface_chat';
|
||||
import type { Room, FetchResponse } from './Interface_chat';
|
||||
import { set_client_name_on_room, fill_fetch_response } from './Request_utils';
|
||||
|
||||
export async function get_room_messages()
|
||||
{
|
||||
@@ -24,23 +25,31 @@ export async function create_room(room: Room)
|
||||
{
|
||||
console.log("in create_room");
|
||||
|
||||
let response: FetchResponse = { status: 0 };
|
||||
|
||||
// send the new room
|
||||
const response = await fetch('/api/v2/chat/create', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(room),
|
||||
});
|
||||
try {
|
||||
const resp = await fetch('/api/v2/chat/create', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(room),
|
||||
});
|
||||
console.log("resp.status:");
|
||||
console.log(resp.status);
|
||||
response.status = resp.status;
|
||||
if (!resp.ok)
|
||||
throw new Error(resp.statusText);
|
||||
|
||||
// get response status and message
|
||||
let response_status = response.status;
|
||||
let data = await response.json();
|
||||
let response_message = "";
|
||||
// get response message
|
||||
let data = await resp.json();
|
||||
fill_fetch_response(response, data);
|
||||
}
|
||||
catch (error)
|
||||
{
|
||||
console.error('Error', error);
|
||||
}
|
||||
|
||||
return {
|
||||
status: response_status,
|
||||
message: data.message,
|
||||
room: data.room,
|
||||
};
|
||||
return response;
|
||||
}
|
||||
|
||||
export async function join_room(room: Room)
|
||||
@@ -57,21 +66,6 @@ export async function join_room(room: Room)
|
||||
return data.room;
|
||||
}
|
||||
|
||||
function set_client_name_on_room(room: Room)
|
||||
{
|
||||
console.log("in set_client_name_on_room, for room:", room);
|
||||
if (room.type === 'direct')
|
||||
{
|
||||
console.log("in direct room");
|
||||
room.client_name = room.users[0];
|
||||
if (room.client_name === user.username)
|
||||
room.client_name = room.users[1];
|
||||
}
|
||||
else
|
||||
room.client_name = room.name;
|
||||
return room;
|
||||
}
|
||||
|
||||
export async function change_room(room: Room)
|
||||
{
|
||||
console.log("in change_room");
|
||||
@@ -92,6 +86,37 @@ export async function change_room(room: Room)
|
||||
layout.set("room");
|
||||
}
|
||||
|
||||
export async function send_password(room: Room)
|
||||
{
|
||||
console.log("in create_room");
|
||||
|
||||
let response: FetchResponse = { status: 0 };
|
||||
|
||||
// send the new room
|
||||
try {
|
||||
const resp = await fetch('/api/v2/chat/create', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(room),
|
||||
});
|
||||
console.log("resp.status:");
|
||||
console.log(resp.status);
|
||||
response.status = resp.status;
|
||||
if (!resp.ok)
|
||||
throw new Error(resp.statusText);
|
||||
|
||||
// get response message
|
||||
let data = await resp.json();
|
||||
fill_fetch_response(response, data);
|
||||
}
|
||||
catch (error)
|
||||
{
|
||||
console.error('Error', error);
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
export async function invite_user(user_name: string)
|
||||
{
|
||||
console.log("in invite_user");
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
import { user } from './Store_chat';
|
||||
import type { Room, FetchResponse } from './Interface_chat';
|
||||
|
||||
export function set_client_name_on_room(room: Room)
|
||||
{
|
||||
console.log("in set_client_name_on_room, for room:", room);
|
||||
if (room.type === 'direct')
|
||||
{
|
||||
console.log("in direct room");
|
||||
room.client_name = room.users[0];
|
||||
if (room.client_name === user.username)
|
||||
room.client_name = room.users[1];
|
||||
}
|
||||
else
|
||||
room.client_name = room.name;
|
||||
return room;
|
||||
}
|
||||
|
||||
export function fill_fetch_response(response: FetchResponse, data: any)
|
||||
{
|
||||
if (data.display)
|
||||
response.display = data.display;
|
||||
if (data.code)
|
||||
response.code = data.code;
|
||||
if (data.message)
|
||||
response.message = data.message;
|
||||
if (data.room)
|
||||
response.room = data.room;
|
||||
}
|
||||
Reference in New Issue
Block a user