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 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -54,12 +45,15 @@
-
+
+
+
+
@@ -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