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 | MemberListPayload
| Member | Member
| ControlPayload | ControlPayload
| ControlRequestPayload
| ControlClipboardPayload | ControlClipboardPayload
| ChatPayload | ChatPayload
| ChatSendPayload | ChatSendPayload
@ -111,6 +112,10 @@ export interface ControlPayload {
id: string id: string
} }
export interface ControlRequestPayload {
keyboard_layout: string
}
export interface ControlTargetPayload { export interface ControlTargetPayload {
id: string id: string
target: string target: string

View File

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

View File

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

View File

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

View File

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