You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.3 KiB
50 lines
1.3 KiB
import {ServerCommandPB} from "../proto/server";
|
|
import {
|
|
SERVER_ACT,
|
|
SERVER_FAILED,
|
|
SERVER_HELLO,
|
|
SERVER_OK,
|
|
SERVER_REFRESH,
|
|
ServerCommand
|
|
} from "../actions/ServerAction";
|
|
import {stateFromPb} from "./MapFromPb";
|
|
import {syncableActionFromPb} from "./SyncableActionFromPb";
|
|
|
|
export function serverFromPb(pb: ServerCommandPB): ServerCommand {
|
|
if (pb.hello) {
|
|
if (!pb.hello.state) {
|
|
throw Error("No state for Server Hello")
|
|
}
|
|
return {
|
|
type: SERVER_HELLO,
|
|
version:pb.hello.version,
|
|
state: stateFromPb(pb.hello.state),
|
|
}
|
|
} else if (pb.refresh) {
|
|
if (!pb.refresh.state) {
|
|
throw Error("No state for Server Refresh")
|
|
}
|
|
return {
|
|
type: SERVER_REFRESH,
|
|
state: stateFromPb(pb.refresh.state),
|
|
}
|
|
} else if (pb.ok) {
|
|
return {
|
|
type: SERVER_OK,
|
|
ids: pb.ok.ids,
|
|
}
|
|
} else if (pb.failed) {
|
|
return {
|
|
type: SERVER_FAILED,
|
|
ids: pb.failed.ids,
|
|
error: pb.failed.error,
|
|
}
|
|
} else if (pb.act) {
|
|
return {
|
|
type: SERVER_ACT,
|
|
actions: pb.act.actions.map(syncableActionFromPb)
|
|
}
|
|
} else {
|
|
throw Error("No actual commands set on command")
|
|
}
|
|
} |