new WS ControlRequest data type

This commit is contained in:
Miroslav Šedivý 2020-06-15 22:26:47 +02:00
parent c176411512
commit 70e8b215cb
5 changed files with 20 additions and 3 deletions

View File

@ -29,6 +29,7 @@ export type WebSocketPayloads =
| MemberListPayload
| Member
| ControlPayload
| ControlRequestPayload
| ControlClipboardPayload
| ChatPayload
| ChatSendPayload
@ -111,6 +112,10 @@ export interface ControlPayload {
id: string
}
export interface ControlRequestPayload {
keyboard_layout: string
}
export interface ControlTargetPayload {
id: string
target: string

View File

@ -64,7 +64,7 @@ export const actions = actionTree(
}
if (!getters.hosting) {
$client.sendMessage(EVENT.CONTROL.REQUEST)
$client.sendMessage(EVENT.CONTROL.REQUEST, { keyboard_layout: accessor.settings.keyboard_layout })
} else {
$client.sendMessage(EVENT.CONTROL.RELEASE)
}

View File

@ -51,6 +51,11 @@ type Control struct {
ID string `json:"id"`
}
type ControlRequest struct {
Event string `json:"event"`
KeyboardLayout string `json:"keyboard_layout"`
}
type ControlTarget struct {
Event string `json:"event"`
ID string `json:"id"`

View File

@ -31,9 +31,12 @@ func (h *MessageHandler) controlRelease(id string, session types.Session) error
return nil
}
func (h *MessageHandler) controlRequest(id string, session types.Session) error {
func (h *MessageHandler) controlRequest(id string, session types.Session, payload *message.ControlRequest) error {
// check for host
if !h.sessions.HasHost() {
// TODO: Keyboard Layout change.
h.logger.Warn().Msgf("should set keyboard to %s", payload.KeyboardLayout)
// set host
h.sessions.SetHost(id)

View File

@ -76,7 +76,11 @@ func (h *MessageHandler) Message(id string, raw []byte) error {
case event.CONTROL_RELEASE:
return errors.Wrapf(h.controlRelease(id, session), "%s failed", header.Event)
case event.CONTROL_REQUEST:
return errors.Wrapf(h.controlRequest(id, session), "%s failed", header.Event)
payload := &message.ControlRequest{}
return errors.Wrapf(
utils.Unmarshal(payload, raw, func() error {
return h.controlRequest(id, session, payload)
}), "%s failed", header.Event)
case event.CONTROL_GIVE:
payload := &message.Control{}
return errors.Wrapf(