Remove types, and only use single source of truth
This commit is contained in:
10
src/app.d.ts
vendored
10
src/app.d.ts
vendored
@@ -17,12 +17,6 @@ export interface User {
|
|||||||
email: string;
|
email: string;
|
||||||
username: string;
|
username: string;
|
||||||
}
|
}
|
||||||
//
|
|
||||||
// export interface Player {
|
|
||||||
// id: number;
|
|
||||||
// name: string;
|
|
||||||
// isHost: boolean;
|
|
||||||
// }
|
|
||||||
|
|
||||||
export interface GameMode {
|
export interface GameMode {
|
||||||
id: string;
|
id: string;
|
||||||
@@ -36,10 +30,10 @@ export interface Playlist {
|
|||||||
songCount: number;
|
songCount: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GameSettings {
|
export interface Settings {
|
||||||
maxPlayers: number;
|
maxPlayers: number;
|
||||||
gameMode: string;
|
gameMode: string;
|
||||||
selectedPlaylist: number;
|
selectedPlaylistId: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type WebSocketMessage = {
|
export type WebSocketMessage = {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { GameMode, Playlist, Settings } from '$lib/types';
|
import type { GameMode, Playlist, Settings } from '../../app';
|
||||||
import PlaylistSelector from './PlaylistSelector.svelte';
|
import PlaylistSelector from './PlaylistSelector.svelte';
|
||||||
|
|
||||||
let {
|
let {
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
onUpdate(localSettings);
|
onUpdate(localSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
function updatePlaylist(playlistId: number) {
|
function updatePlaylist(playlistId: string) {
|
||||||
localSettings.selectedPlaylistId = playlistId;
|
localSettings.selectedPlaylistId = playlistId;
|
||||||
onUpdate(localSettings);
|
onUpdate(localSettings);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { Playlist } from '$lib/types';
|
import type { Playlist } from '../../app';
|
||||||
|
|
||||||
const props = $props<{
|
const props = $props<{
|
||||||
playlists: Playlist[];
|
playlists: Playlist[];
|
||||||
selectedPlaylistId: number;
|
selectedPlaylistId: string;
|
||||||
onSelect: (id: number) => void;
|
onSelect: (id: string) => void;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
let searchQuery = $state('');
|
let searchQuery = $state('');
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
export interface Player {
|
|
||||||
id: string;
|
|
||||||
name: string;
|
|
||||||
isHost: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface GameMode {
|
|
||||||
id: string;
|
|
||||||
name: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Playlist {
|
|
||||||
id: number;
|
|
||||||
name: string;
|
|
||||||
imageUrl: string;
|
|
||||||
songCount: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Settings {
|
|
||||||
maxPlayers: number;
|
|
||||||
gameMode: string;
|
|
||||||
selectedPlaylistId: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface WebSocketMessage {
|
|
||||||
type: string;
|
|
||||||
[key: string]: any;
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
import type { User } from '../app';
|
import type { Settings, User, WebSocketMessage } from '../app';
|
||||||
import type { Player, Settings, WebSocketMessage } from './types';
|
|
||||||
|
|
||||||
export class WebsocketClient {
|
export class WebsocketClient {
|
||||||
connected = $state(false);
|
connected = $state(false);
|
||||||
@@ -7,7 +6,7 @@ export class WebsocketClient {
|
|||||||
gameSettings: Settings = $state({
|
gameSettings: Settings = $state({
|
||||||
maxPlayers: 8,
|
maxPlayers: 8,
|
||||||
gameMode: 'classic',
|
gameMode: 'classic',
|
||||||
selectedPlaylistId: 1
|
selectedPlaylistId: ''
|
||||||
});
|
});
|
||||||
socket: WebSocket | null = null;
|
socket: WebSocket | null = null;
|
||||||
|
|
||||||
@@ -77,89 +76,3 @@ export class WebsocketClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const wsClient = new WebsocketClient();
|
export const wsClient = new WebsocketClient();
|
||||||
|
|
||||||
//
|
|
||||||
// export function createWebSocketClient() {
|
|
||||||
// let socket: WebSocket | null = null;
|
|
||||||
//
|
|
||||||
// let connected = false;
|
|
||||||
// let players: Player[] = [];
|
|
||||||
// let gameSettings: Settings = {
|
|
||||||
// maxPlayers: 8,
|
|
||||||
// gameMode: 'classic',
|
|
||||||
// selectedPlaylistId: 1
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// function connect(url: string): void {
|
|
||||||
// if (socket) socket.close();
|
|
||||||
//
|
|
||||||
// socket = new WebSocket(url);
|
|
||||||
//
|
|
||||||
// socket.onopen = () => {
|
|
||||||
// console.log('Connected to websocket');
|
|
||||||
// connected = true;
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// socket.onclose = () => {
|
|
||||||
// connected = false;
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// socket.onerror = (error) => {
|
|
||||||
// console.error('WebSocket error:', error);
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// socket.onmessage = (event: MessageEvent) => {
|
|
||||||
// try {
|
|
||||||
// const message = JSON.parse(event.data) as WebSocketMessage;
|
|
||||||
//
|
|
||||||
// console.log(`Received message ${JSON.stringify(message)}`);
|
|
||||||
//
|
|
||||||
// switch (message.type) {
|
|
||||||
// case 'playerJoin':
|
|
||||||
// players = [...players, message.player];
|
|
||||||
// break;
|
|
||||||
//
|
|
||||||
// case 'playerLeave':
|
|
||||||
// players = players.filter((p) => p.id !== message.playerId);
|
|
||||||
// break;
|
|
||||||
//
|
|
||||||
// case 'playerList':
|
|
||||||
// players = message.players;
|
|
||||||
// break;
|
|
||||||
//
|
|
||||||
// case 'settingsUpdate':
|
|
||||||
// gameSettings = message.settings;
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// } catch (error) {
|
|
||||||
// console.error('Failed to parse WebSocket message:', error);
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// function sendMessage(message: WebSocketMessage): void {
|
|
||||||
// if (socket && socket.readyState === WebSocket.OPEN) {
|
|
||||||
// socket.send(JSON.stringify(message));
|
|
||||||
// } else {
|
|
||||||
// console.warn('Cannot send message, WebSocket is not connected');
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// function disconnect(): void {
|
|
||||||
// if (socket) {
|
|
||||||
// socket.close();
|
|
||||||
// socket = null;
|
|
||||||
// }
|
|
||||||
// connected = false;
|
|
||||||
// players = [];
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// return {
|
|
||||||
// connected: connected,
|
|
||||||
// players: players,
|
|
||||||
// gameSettings: gameSettings,
|
|
||||||
// connect: connect,
|
|
||||||
// sendMessage: sendMessage,
|
|
||||||
// disconnect: disconnect
|
|
||||||
// };
|
|
||||||
// }
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { onMount, onDestroy } from 'svelte';
|
import { onMount, onDestroy } from 'svelte';
|
||||||
import { wsClient } from '$lib/websocketClient.svelte';
|
import { wsClient } from '$lib/websocketClient.svelte';
|
||||||
import type { Settings, GameMode } from '$lib/types';
|
|
||||||
import PlayerList from '$lib/components/PlayerList.svelte';
|
import PlayerList from '$lib/components/PlayerList.svelte';
|
||||||
import GameSettings from '$lib/components/GameSettings.svelte';
|
import GameSettings from '$lib/components/GameSettings.svelte';
|
||||||
import type { PageProps } from './$types';
|
import type { PageProps } from './$types';
|
||||||
import { env } from '$env/dynamic/public';
|
import { env } from '$env/dynamic/public';
|
||||||
import { goto } from '$app/navigation';
|
import { goto } from '$app/navigation';
|
||||||
|
import type { GameMode, Settings } from '../../../app';
|
||||||
|
|
||||||
// Create WebSocket client
|
// Create WebSocket client
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user