payloads.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package page
  2. import (
  3. "encoding/json"
  4. "github.com/flet-dev/flet/server/model"
  5. )
  6. type Message struct {
  7. ID string `json:"id"`
  8. Action string `json:"action"`
  9. Payload json.RawMessage `json:"payload"`
  10. }
  11. func NewMessageData(id string, action string, payload interface{}) []byte {
  12. msg := NewMessage(id, action, payload)
  13. result, _ := json.Marshal(msg)
  14. return result
  15. }
  16. func NewMessage(id string, action string, payload interface{}) *Message {
  17. msg := &Message{
  18. ID: id,
  19. Action: action,
  20. }
  21. // serialize payload
  22. serializedPayload, _ := json.Marshal(payload)
  23. msg.Payload = serializedPayload
  24. return msg
  25. }
  26. type RegisterHostClientRequestPayload struct {
  27. HostClientID string `json:"hostClientID"`
  28. PageName string `json:"pageName"`
  29. AssetsDir string `json:"assetsDir"`
  30. AuthToken string `json:"authToken"`
  31. Permissions string `json:"permissions"`
  32. }
  33. type RegisterHostClientResponsePayload struct {
  34. HostClientID string `json:"hostClientID"`
  35. SessionID string `json:"sessionID"`
  36. PageName string `json:"pageName"`
  37. Error string `json:"error"`
  38. }
  39. type RegisterWebClientRequestPayload struct {
  40. PageName string `json:"pageName"`
  41. PageRoute string `json:"pageRoute"`
  42. PageWidth string `json:"pageWidth"`
  43. PageHeight string `json:"pageHeight"`
  44. WindowWidth string `json:"windowWidth"`
  45. WindowHeight string `json:"windowHeight"`
  46. WindowTop string `json:"windowTop"`
  47. WindowLeft string `json:"windowLeft"`
  48. IsPWA string `json:"isPWA"`
  49. IsWeb string `json:"isWeb"`
  50. IsDebug string `json:"isDebug"`
  51. Platform string `json:"platform"`
  52. PlatformBrightness string `json:"platformBrightness"`
  53. Media string `json:"media"`
  54. SessionID string `json:"sessionID"`
  55. }
  56. type RegisterWebClientResponsePayload struct {
  57. Session *SessionPayload `json:"session"`
  58. AppInactive bool `json:"appInactive"`
  59. Error string `json:"error"`
  60. }
  61. type SessionPayload struct {
  62. ID string `json:"id"`
  63. Controls map[string]*model.Control `json:"controls"`
  64. }
  65. type SessionCreatedPayload struct {
  66. PageName string `json:"pageName"`
  67. SessionID string `json:"sessionID"`
  68. }
  69. type PageCommandRequestPayload struct {
  70. PageName string `json:"pageName"`
  71. SessionID string `json:"sessionID"`
  72. Command *model.Command `json:"command"`
  73. }
  74. type PageCommandResponsePayload struct {
  75. Result string `json:"result"`
  76. Error string `json:"error"`
  77. }
  78. type PageCommandsBatchRequestPayload struct {
  79. PageName string `json:"pageName"`
  80. SessionID string `json:"sessionID"`
  81. Commands []*model.Command `json:"commands"`
  82. }
  83. type PageCommandsBatchResponsePayload struct {
  84. Results []string `json:"results"`
  85. Error string `json:"error"`
  86. }
  87. type InactiveAppRequestPayload struct {
  88. PageName string `json:"pageName"`
  89. }
  90. type PageEventPayload struct {
  91. PageName string `json:"pageName"`
  92. SessionID string `json:"sessionID"`
  93. EventTarget string `json:"eventTarget"`
  94. EventName string `json:"eventName"`
  95. EventData string `json:"eventData"`
  96. }
  97. type AddPageControlsPayload struct {
  98. Controls []*model.Control `json:"controls"`
  99. TrimIDs []string `json:"trimIDs"`
  100. }
  101. type ReplacePageControlsPayload struct {
  102. IDs []string `json:"ids"`
  103. Remove bool `json:"remove"`
  104. Controls []*model.Control `json:"controls"`
  105. }
  106. type UpdateControlPropsPayload struct {
  107. Props []map[string]string `json:"props"`
  108. }
  109. type AppendControlPropsPayload struct {
  110. Props []map[string]string `json:"props"`
  111. }
  112. type RemoveControlPayload struct {
  113. IDs []string `json:"ids"`
  114. }
  115. type CleanControlPayload struct {
  116. IDs []string `json:"ids"`
  117. }
  118. type AppBecomeActivePayload struct {
  119. }
  120. type AppBecomeInactivePayload struct {
  121. Message string `json:"message"`
  122. }
  123. type SessionCrashedPayload struct {
  124. Message string `json:"message"`
  125. }
  126. type InvokeMethodPayload struct {
  127. MethodID string `json:"methodId"`
  128. MethodName string `json:"methodName"`
  129. ControlID string `json:"controlId"`
  130. Arguments map[string]string `json:"arguments"`
  131. }