Compare commits

..

No commits in common. "4da4e0687100544909c439688783502459a03890" and "4f7d095ec0a98bb14cf29674a38596098680e96d" have entirely different histories.

7 changed files with 19 additions and 98 deletions

View file

@ -15,5 +15,3 @@ export const draft: Module<DraftState, AppState> = {
//mutations,
//getters,
};
export default draft;

View file

@ -8,8 +8,8 @@ import actions from "./actions";
import mutations from "./mutations";
import getters from "./getters";
import network from "./network";
import draft from "./draft";
import { network } from "./network";
import { draft } from "./draft";
const store: StoreOptions<AppState> = {
state: {

View file

@ -1,23 +0,0 @@
import { ActionTree } from "vuex";
import { AppState } from "../types";
import { NetworkState, StartServerOptions, ConnectOptions } from "./types";
import { PeerServer, LocalClient, PeerClient } from "@/network";
const actions: ActionTree<NetworkState, AppState> = {
startServer({ commit }, options: StartServerOptions) {
const local = new LocalClient(options.playerInfo);
const server = new PeerServer(options.roomInfo, local, options._customPeer);
commit("becomeServer", { local, server });
},
connect({ commit }, options: ConnectOptions) {
const client = new PeerClient(options.playerInfo, options._customPeer);
commit("becomeClient", { peer: client });
client.once("connected", () => {
commit("connected");
});
client.connect(options.serverID);
}
};
export default actions;

View file

@ -4,17 +4,14 @@ import { NetworkState } from "./types";
const getters: GetterTree<NetworkState, AppState> = {
peerID(state): string | null {
switch (state.peerType) {
case "server":
return state.server.id;
case "client":
return state.peer.id;
if (!state.connected) {
return null;
}
if (state.peerType == "server") {
return state.server.id;
} else {
return state.peer.id;
}
return null;
},
connectionType(state): "client" | "server" | "none" {
return state.peerType;
}
};

View file

@ -2,22 +2,21 @@ import { NetworkState } from "./types";
import { AppState } from "../types";
import { Module } from "vuex";
import actions from "./actions";
import getters from "./getters";
const namespaced = true;
export const state: NetworkState = {
peerType: "none",
connecting: false,
connected: false,
name: "",
chatLog: []
};
export const network: Module<NetworkState, AppState> = {
namespaced,
state,
actions,
//actions,
//mutations,
getters
};
export default network;

View file

@ -1,29 +0,0 @@
import { MutationTree } from "vuex";
import { NetworkState, ServerNetworkState, ClientNetworkState } from "./types";
import { LocalClient, PeerServer, PeerClient } from "@/network";
const mutations: MutationTree<NetworkState> = {
becomeServer(state, payload: { local: LocalClient; server: PeerServer }) {
state = {
...state,
peerType: "server",
local: payload.local,
server: payload.server
};
},
becomeClient(state, payload: { peer: PeerClient }) {
state = {
...state,
connectionStatus: "connecting",
peerType: "client",
peer: payload.peer
};
},
connected(state) {
(state as ClientNetworkState).connectionStatus = "connected";
}
};
export default mutations;

View file

@ -1,11 +1,4 @@
import {
PeerClient,
PeerServer,
LocalClient,
RoomInfo,
PeerMetadata
} from "@/network";
import Peer from "peerjs";
import { PeerClient, PeerServer, LocalClient } from "@/network";
export interface ChatMessage {
who: string;
@ -14,21 +7,23 @@ export interface ChatMessage {
}
export interface SharedNetworkState {
name: string;
chatLog: ChatMessage[];
}
export interface NoNetworkState extends SharedNetworkState {
peerType: "none";
connecting: boolean;
connected: false;
}
export interface ClientNetworkState extends SharedNetworkState {
connected: true;
peerType: "client";
connectionStatus: "connecting" | "connected" | "error";
connectionError?: Error;
peer: PeerClient;
}
export interface ServerNetworkState extends SharedNetworkState {
connected: true;
peerType: "server";
server: PeerServer;
local: LocalClient;
@ -38,19 +33,3 @@ export type NetworkState =
| NoNetworkState
| ClientNetworkState
| ServerNetworkState;
export interface StartServerOptions {
roomInfo: RoomInfo;
playerInfo: PeerMetadata;
// Testing utils
_customPeer?: Peer;
}
export interface ConnectOptions {
serverID: string;
playerInfo: PeerMetadata;
// Testing utils
_customPeer?: Peer;
}