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") } }