diff --git a/backend/.idea/workspace.xml b/backend/.idea/workspace.xml index 9eb829d..82b392b 100644 --- a/backend/.idea/workspace.xml +++ b/backend/.idea/workspace.xml @@ -5,23 +5,14 @@ - - - - - - - - - - - - - - - - - + + + + + + + + - + + + + @@ -103,7 +97,26 @@ + + true + + + + + file://$PROJECT_DIR$/internal/ws/message.go + 69 + + + file://$PROJECT_DIR$/internal/ws/message.go + 59 + + + + \ No newline at end of file diff --git a/backend/internal/ws/handlers.go b/backend/internal/ws/handlers.go index 0446f8b..73a4b3e 100644 --- a/backend/internal/ws/handlers.go +++ b/backend/internal/ws/handlers.go @@ -1,12 +1,25 @@ package ws +//todo better data deserialization + type IdentityData struct { ClientID string `json:"client_id"` User User `json:"user"` } func handleIdentifyEvent(message *Message) { - + d := message.Data.(map[string]interface{}) + m := Message{ + MessageData: MessageData{ + Type: Identify, + Data: map[string]interface{}{ + "playlist": "", + "playHead": 0, + "user": d["user"], + }, + }, + } + message.send <- m.SerializeMessage().Data } func handlePingEvent(message *Message) { diff --git a/backend/internal/ws/message.go b/backend/internal/ws/message.go index 631ada8..8365729 100644 --- a/backend/internal/ws/message.go +++ b/backend/internal/ws/message.go @@ -20,9 +20,9 @@ const ( ) type MessageData struct { - Type MessageTypes `json:"type"` - RawData json.RawMessage `json:"data,omitempty"` - Data map[string]interface{} `json:"-"` + Type MessageTypes `json:"type"` + RawData json.RawMessage `json:"data,omitempty"` + Data interface{} `json:"-"` } type Message struct { @@ -41,13 +41,7 @@ func (rm RawMessage) UnSerializeData() Message { if err := json.Unmarshal([]byte(s), &md); err != nil { log.Errorf("error unmarshalling message, %s", err.Error()) } - if md.RawData != nil && len(md.RawData) > 0 && md.RawData[0] == '"' { - var s string - if err := json.Unmarshal(md.RawData, &s); err != nil { - // handle error - log.Errorf("error unmarshalling message, %s", err.Error()) - } - md.RawData = json.RawMessage(s) + if md.RawData != nil && len(md.RawData) > 0 { if err := json.Unmarshal(md.RawData, &md.Data); err != nil { // handle error log.Errorf("error unmarshalling message, %s", err.Error()) @@ -62,7 +56,14 @@ func (rm RawMessage) UnSerializeData() Message { } func (m Message) SerializeMessage() RawMessage { - data, err := json.Marshal(m) + var err error + if m.Data != nil { + m.RawData, err = json.Marshal(m.Data) + if err != nil { + log.Errorf("unable to marshal data, %s", err.Error()) + } + } + data, err := json.Marshal(m.MessageData) if err != nil { log.Errorf("unable to marshal message, %s", err.Error()) } diff --git a/frontend/package.json b/frontend/package.json index 4f2e9a7..44fa284 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -17,12 +17,14 @@ "react": "^17.0.2", "react-dom": "^17.0.2", "react-player": "^2.9.0", + "uuid": "^8.3.2", "websocket": "^1.0.34" }, "devDependencies": { "@types/node": "^14.6.0", "@types/react": "^17.0.3", "@types/react-dom": "^17.0.3", + "@types/uuid": "^8.3.4", "@types/websocket": "^1.0.4", "typescript": "4.3.2" } diff --git a/frontend/src/interfaces/IUser.ts b/frontend/src/interfaces/IUser.ts index cb14d08..b876c99 100644 --- a/frontend/src/interfaces/IUser.ts +++ b/frontend/src/interfaces/IUser.ts @@ -3,3 +3,5 @@ interface IUser { userID: string; admin: boolean; } + +export default IUser; diff --git a/frontend/src/interfaces/Identity.ts b/frontend/src/interfaces/Identity.ts index 7872158..a59f61c 100644 --- a/frontend/src/interfaces/Identity.ts +++ b/frontend/src/interfaces/Identity.ts @@ -1,4 +1,8 @@ +import IUser from "./IUser"; + interface IdentityData { - clientID: string; + clientID?: string; + playlist?: string; + playHead?: number; user: IUser; } diff --git a/frontend/types/environment.d.ts b/frontend/types/environment.d.ts index 1d9cd4c..16326d3 100644 --- a/frontend/types/environment.d.ts +++ b/frontend/types/environment.d.ts @@ -2,7 +2,7 @@ declare namespace NodeJS { export interface ProcessEnv { DISCORD_ID: string; DISCORD_SECRET: string; - API_PORT: string; SECRET: string; + CLIENT_ID: string; } } diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 9d0e19b..3ebb75c 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1000,6 +1000,11 @@ resolved "https://registry.yarnpkg.com/@types/tinycolor2/-/tinycolor2-1.4.2.tgz#721ca5c5d1a2988b4a886e35c2ffc5735b6afbdf" integrity sha512-PeHg/AtdW6aaIO2a+98Xj7rWY4KC1E6yOy7AFknJQ7VXUGNrMlyxDFxJo7HqLtjQms/ZhhQX52mLVW/EX3JGOw== +"@types/uuid@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== + "@types/warning@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/warning/-/warning-3.0.0.tgz#0d2501268ad8f9962b740d387c4654f5f8e23e52" diff --git a/yarn-error.log b/yarn-error.log deleted file mode 100644 index 0d9d9c4..0000000 --- a/yarn-error.log +++ /dev/null @@ -1,36 +0,0 @@ -Arguments: - /home/pixel/.volta/tools/image/node/16.13.2/bin/node /home/pixel/.volta/tools/image/yarn/1.22.17/bin/yarn.js add -D @types/zib - -PATH: - /home/pixel/.volta/tools/image/yarn/1.22.17/bin:/home/pixel/.volta/tools/image/node/16.13.2/bin:/home/pixel/.volta/bin:/home/pixel/.volta/bin:/home/pixel/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl - -Yarn version: - 1.22.17 - -Node version: - 16.13.2 - -Platform: - linux x64 - -Trace: - Error: https://registry.yarnpkg.com/@types%2fzib: Not found - at Request.params.callback [as _callback] (/home/pixel/.volta/tools/image/yarn/1.22.17/lib/cli.js:67029:18) - at Request.self.callback (/home/pixel/.volta/tools/image/yarn/1.22.17/lib/cli.js:140883:22) - at Request.emit (node:events:390:28) - at Request. (/home/pixel/.volta/tools/image/yarn/1.22.17/lib/cli.js:141855:10) - at Request.emit (node:events:390:28) - at IncomingMessage. (/home/pixel/.volta/tools/image/yarn/1.22.17/lib/cli.js:141777:12) - at Object.onceWrapper (node:events:509:28) - at IncomingMessage.emit (node:events:402:35) - at endReadableNT (node:internal/streams/readable:1343:12) - at processTicksAndRejections (node:internal/process/task_queues:83:21) - -npm manifest: - No manifest - -yarn manifest: - No manifest - -Lockfile: - No lockfile