diff options
-rw-r--r-- | package-lock.json | 221 | ||||
-rw-r--r-- | package.json | 2 | ||||
-rw-r--r-- | src/components/group/GroupSender.vue | 22 | ||||
-rw-r--r-- | src/components/group/Message.vue | 10 | ||||
-rw-r--r-- | src/store/index.js | 4 | ||||
-rw-r--r-- | src/views/Home.vue | 17 | ||||
-rw-r--r-- | vue.config.js | 10 |
7 files changed, 271 insertions, 15 deletions
diff --git a/package-lock.json b/package-lock.json index 66d32bf..59cfb94 100644 --- a/package-lock.json +++ b/package-lock.json | |||
@@ -10,6 +10,7 @@ | |||
10 | "dependencies": { | 10 | "dependencies": { |
11 | "axios": "^0.24.0", | 11 | "axios": "^0.24.0", |
12 | "core-js": "^3.6.5", | 12 | "core-js": "^3.6.5", |
13 | "socket.io-client": "^4.1.3", | ||
13 | "v-hotkey": "^0.9.0", | 14 | "v-hotkey": "^0.9.0", |
14 | "vue": "^2.6.11", | 15 | "vue": "^2.6.11", |
15 | "vue-notification": "^1.3.20", | 16 | "vue-notification": "^1.3.20", |
@@ -1749,6 +1750,11 @@ | |||
1749 | "@types/node": "*" | 1750 | "@types/node": "*" |
1750 | } | 1751 | } |
1751 | }, | 1752 | }, |
1753 | "node_modules/@types/component-emitter": { | ||
1754 | "version": "1.2.11", | ||
1755 | "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", | ||
1756 | "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==" | ||
1757 | }, | ||
1752 | "node_modules/@types/connect": { | 1758 | "node_modules/@types/connect": { |
1753 | "version": "3.4.35", | 1759 | "version": "3.4.35", |
1754 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", | 1760 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", |
@@ -3153,6 +3159,11 @@ | |||
3153 | "@babel/core": "^7.0.0-0" | 3159 | "@babel/core": "^7.0.0-0" |
3154 | } | 3160 | } |
3155 | }, | 3161 | }, |
3162 | "node_modules/backo2": { | ||
3163 | "version": "1.0.2", | ||
3164 | "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", | ||
3165 | "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" | ||
3166 | }, | ||
3156 | "node_modules/balanced-match": { | 3167 | "node_modules/balanced-match": { |
3157 | "version": "1.0.2", | 3168 | "version": "1.0.2", |
3158 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | 3169 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", |
@@ -3189,6 +3200,14 @@ | |||
3189 | "node": ">=0.10.0" | 3200 | "node": ">=0.10.0" |
3190 | } | 3201 | } |
3191 | }, | 3202 | }, |
3203 | "node_modules/base64-arraybuffer": { | ||
3204 | "version": "0.1.4", | ||
3205 | "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", | ||
3206 | "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", | ||
3207 | "engines": { | ||
3208 | "node": ">= 0.6.0" | ||
3209 | } | ||
3210 | }, | ||
3192 | "node_modules/base64-js": { | 3211 | "node_modules/base64-js": { |
3193 | "version": "1.5.1", | 3212 | "version": "1.5.1", |
3194 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", | 3213 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", |
@@ -4329,8 +4348,7 @@ | |||
4329 | "node_modules/component-emitter": { | 4348 | "node_modules/component-emitter": { |
4330 | "version": "1.3.0", | 4349 | "version": "1.3.0", |
4331 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", | 4350 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", |
4332 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", | 4351 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" |
4333 | "dev": true | ||
4334 | }, | 4352 | }, |
4335 | "node_modules/compressible": { | 4353 | "node_modules/compressible": { |
4336 | "version": "2.0.18", | 4354 | "version": "2.0.18", |
@@ -5124,7 +5142,6 @@ | |||
5124 | "version": "4.3.2", | 5142 | "version": "4.3.2", |
5125 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", | 5143 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", |
5126 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", | 5144 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", |
5127 | "dev": true, | ||
5128 | "dependencies": { | 5145 | "dependencies": { |
5129 | "ms": "2.1.2" | 5146 | "ms": "2.1.2" |
5130 | }, | 5147 | }, |
@@ -5724,6 +5741,53 @@ | |||
5724 | "once": "^1.4.0" | 5741 | "once": "^1.4.0" |
5725 | } | 5742 | } |
5726 | }, | 5743 | }, |
5744 | "node_modules/engine.io-client": { | ||
5745 | "version": "5.1.2", | ||
5746 | "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-5.1.2.tgz", | ||
5747 | "integrity": "sha512-blRrgXIE0A/eurWXRzvfCLG7uUFJqfTGFsyJzXSK71srMMGJ2VraBLg8Mdw28uUxSpVicepBN9X7asqpD1mZcQ==", | ||
5748 | "dependencies": { | ||
5749 | "base64-arraybuffer": "0.1.4", | ||
5750 | "component-emitter": "~1.3.0", | ||
5751 | "debug": "~4.3.1", | ||
5752 | "engine.io-parser": "~4.0.1", | ||
5753 | "has-cors": "1.1.0", | ||
5754 | "parseqs": "0.0.6", | ||
5755 | "parseuri": "0.0.6", | ||
5756 | "ws": "~7.4.2", | ||
5757 | "yeast": "0.1.2" | ||
5758 | } | ||
5759 | }, | ||
5760 | "node_modules/engine.io-client/node_modules/ws": { | ||
5761 | "version": "7.4.6", | ||
5762 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", | ||
5763 | "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", | ||
5764 | "engines": { | ||
5765 | "node": ">=8.3.0" | ||
5766 | }, | ||
5767 | "peerDependencies": { | ||
5768 | "bufferutil": "^4.0.1", | ||
5769 | "utf-8-validate": "^5.0.2" | ||
5770 | }, | ||
5771 | "peerDependenciesMeta": { | ||
5772 | "bufferutil": { | ||
5773 | "optional": true | ||
5774 | }, | ||
5775 | "utf-8-validate": { | ||
5776 | "optional": true | ||
5777 | } | ||
5778 | } | ||
5779 | }, | ||
5780 | "node_modules/engine.io-parser": { | ||
5781 | "version": "4.0.3", | ||
5782 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.3.tgz", | ||
5783 | "integrity": "sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA==", | ||
5784 | "dependencies": { | ||
5785 | "base64-arraybuffer": "0.1.4" | ||
5786 | }, | ||
5787 | "engines": { | ||
5788 | "node": ">=8.0.0" | ||
5789 | } | ||
5790 | }, | ||
5727 | "node_modules/enhanced-resolve": { | 5791 | "node_modules/enhanced-resolve": { |
5728 | "version": "4.5.0", | 5792 | "version": "4.5.0", |
5729 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", | 5793 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", |
@@ -7152,6 +7216,11 @@ | |||
7152 | "url": "https://github.com/sponsors/ljharb" | 7216 | "url": "https://github.com/sponsors/ljharb" |
7153 | } | 7217 | } |
7154 | }, | 7218 | }, |
7219 | "node_modules/has-cors": { | ||
7220 | "version": "1.1.0", | ||
7221 | "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", | ||
7222 | "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" | ||
7223 | }, | ||
7155 | "node_modules/has-flag": { | 7224 | "node_modules/has-flag": { |
7156 | "version": "3.0.0", | 7225 | "version": "3.0.0", |
7157 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", | 7226 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", |
@@ -9284,8 +9353,7 @@ | |||
9284 | "node_modules/ms": { | 9353 | "node_modules/ms": { |
9285 | "version": "2.1.2", | 9354 | "version": "2.1.2", |
9286 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", | 9355 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", |
9287 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", | 9356 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" |
9288 | "dev": true | ||
9289 | }, | 9357 | }, |
9290 | "node_modules/multicast-dns": { | 9358 | "node_modules/multicast-dns": { |
9291 | "version": "6.2.3", | 9359 | "version": "6.2.3", |
@@ -10126,6 +10194,16 @@ | |||
10126 | "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", | 10194 | "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", |
10127 | "dev": true | 10195 | "dev": true |
10128 | }, | 10196 | }, |
10197 | "node_modules/parseqs": { | ||
10198 | "version": "0.0.6", | ||
10199 | "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", | ||
10200 | "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" | ||
10201 | }, | ||
10202 | "node_modules/parseuri": { | ||
10203 | "version": "0.0.6", | ||
10204 | "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", | ||
10205 | "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" | ||
10206 | }, | ||
10129 | "node_modules/parseurl": { | 10207 | "node_modules/parseurl": { |
10130 | "version": "1.3.3", | 10208 | "version": "1.3.3", |
10131 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", | 10209 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", |
@@ -12264,6 +12342,36 @@ | |||
12264 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", | 12342 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", |
12265 | "dev": true | 12343 | "dev": true |
12266 | }, | 12344 | }, |
12345 | "node_modules/socket.io-client": { | ||
12346 | "version": "4.1.3", | ||
12347 | "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.1.3.tgz", | ||
12348 | "integrity": "sha512-hISFn6PDpgDifVUiNklLHVPTMv1LAk8poHArfIUdXa+gKgbr0MZbAlquDFqCqsF30yBqa+jg42wgos2FK50BHA==", | ||
12349 | "dependencies": { | ||
12350 | "@types/component-emitter": "^1.2.10", | ||
12351 | "backo2": "~1.0.2", | ||
12352 | "component-emitter": "~1.3.0", | ||
12353 | "debug": "~4.3.1", | ||
12354 | "engine.io-client": "~5.1.2", | ||
12355 | "parseuri": "0.0.6", | ||
12356 | "socket.io-parser": "~4.0.4" | ||
12357 | }, | ||
12358 | "engines": { | ||
12359 | "node": ">=10.0.0" | ||
12360 | } | ||
12361 | }, | ||
12362 | "node_modules/socket.io-parser": { | ||
12363 | "version": "4.0.4", | ||
12364 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", | ||
12365 | "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", | ||
12366 | "dependencies": { | ||
12367 | "@types/component-emitter": "^1.2.10", | ||
12368 | "component-emitter": "~1.3.0", | ||
12369 | "debug": "~4.3.1" | ||
12370 | }, | ||
12371 | "engines": { | ||
12372 | "node": ">=10.0.0" | ||
12373 | } | ||
12374 | }, | ||
12267 | "node_modules/sockjs": { | 12375 | "node_modules/sockjs": { |
12268 | "version": "0.3.21", | 12376 | "version": "0.3.21", |
12269 | "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", | 12377 | "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", |
@@ -15225,6 +15333,11 @@ | |||
15225 | "node": ">=10" | 15333 | "node": ">=10" |
15226 | } | 15334 | } |
15227 | }, | 15335 | }, |
15336 | "node_modules/yeast": { | ||
15337 | "version": "0.1.2", | ||
15338 | "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", | ||
15339 | "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" | ||
15340 | }, | ||
15228 | "node_modules/yorkie": { | 15341 | "node_modules/yorkie": { |
15229 | "version": "2.0.0", | 15342 | "version": "2.0.0", |
15230 | "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", | 15343 | "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", |
@@ -16510,6 +16623,11 @@ | |||
16510 | "@types/node": "*" | 16623 | "@types/node": "*" |
16511 | } | 16624 | } |
16512 | }, | 16625 | }, |
16626 | "@types/component-emitter": { | ||
16627 | "version": "1.2.11", | ||
16628 | "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", | ||
16629 | "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==" | ||
16630 | }, | ||
16513 | "@types/connect": { | 16631 | "@types/connect": { |
16514 | "version": "3.4.35", | 16632 | "version": "3.4.35", |
16515 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", | 16633 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", |
@@ -17683,6 +17801,11 @@ | |||
17683 | "@babel/helper-define-polyfill-provider": "^0.2.4" | 17801 | "@babel/helper-define-polyfill-provider": "^0.2.4" |
17684 | } | 17802 | } |
17685 | }, | 17803 | }, |
17804 | "backo2": { | ||
17805 | "version": "1.0.2", | ||
17806 | "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", | ||
17807 | "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" | ||
17808 | }, | ||
17686 | "balanced-match": { | 17809 | "balanced-match": { |
17687 | "version": "1.0.2", | 17810 | "version": "1.0.2", |
17688 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | 17811 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", |
@@ -17715,6 +17838,11 @@ | |||
17715 | } | 17838 | } |
17716 | } | 17839 | } |
17717 | }, | 17840 | }, |
17841 | "base64-arraybuffer": { | ||
17842 | "version": "0.1.4", | ||
17843 | "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", | ||
17844 | "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=" | ||
17845 | }, | ||
17718 | "base64-js": { | 17846 | "base64-js": { |
17719 | "version": "1.5.1", | 17847 | "version": "1.5.1", |
17720 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", | 17848 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", |
@@ -18656,8 +18784,7 @@ | |||
18656 | "component-emitter": { | 18784 | "component-emitter": { |
18657 | "version": "1.3.0", | 18785 | "version": "1.3.0", |
18658 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", | 18786 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", |
18659 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", | 18787 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" |
18660 | "dev": true | ||
18661 | }, | 18788 | }, |
18662 | "compressible": { | 18789 | "compressible": { |
18663 | "version": "2.0.18", | 18790 | "version": "2.0.18", |
@@ -19299,7 +19426,6 @@ | |||
19299 | "version": "4.3.2", | 19426 | "version": "4.3.2", |
19300 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", | 19427 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", |
19301 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", | 19428 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", |
19302 | "dev": true, | ||
19303 | "requires": { | 19429 | "requires": { |
19304 | "ms": "2.1.2" | 19430 | "ms": "2.1.2" |
19305 | } | 19431 | } |
@@ -19779,6 +19905,38 @@ | |||
19779 | "once": "^1.4.0" | 19905 | "once": "^1.4.0" |
19780 | } | 19906 | } |
19781 | }, | 19907 | }, |
19908 | "engine.io-client": { | ||
19909 | "version": "5.1.2", | ||
19910 | "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-5.1.2.tgz", | ||
19911 | "integrity": "sha512-blRrgXIE0A/eurWXRzvfCLG7uUFJqfTGFsyJzXSK71srMMGJ2VraBLg8Mdw28uUxSpVicepBN9X7asqpD1mZcQ==", | ||
19912 | "requires": { | ||
19913 | "base64-arraybuffer": "0.1.4", | ||
19914 | "component-emitter": "~1.3.0", | ||
19915 | "debug": "~4.3.1", | ||
19916 | "engine.io-parser": "~4.0.1", | ||
19917 | "has-cors": "1.1.0", | ||
19918 | "parseqs": "0.0.6", | ||
19919 | "parseuri": "0.0.6", | ||
19920 | "ws": "~7.4.2", | ||
19921 | "yeast": "0.1.2" | ||
19922 | }, | ||
19923 | "dependencies": { | ||
19924 | "ws": { | ||
19925 | "version": "7.4.6", | ||
19926 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", | ||
19927 | "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", | ||
19928 | "requires": {} | ||
19929 | } | ||
19930 | } | ||
19931 | }, | ||
19932 | "engine.io-parser": { | ||
19933 | "version": "4.0.3", | ||
19934 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.3.tgz", | ||
19935 | "integrity": "sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA==", | ||
19936 | "requires": { | ||
19937 | "base64-arraybuffer": "0.1.4" | ||
19938 | } | ||
19939 | }, | ||
19782 | "enhanced-resolve": { | 19940 | "enhanced-resolve": { |
19783 | "version": "4.5.0", | 19941 | "version": "4.5.0", |
19784 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", | 19942 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", |
@@ -20904,6 +21062,11 @@ | |||
20904 | "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", | 21062 | "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", |
20905 | "dev": true | 21063 | "dev": true |
20906 | }, | 21064 | }, |
21065 | "has-cors": { | ||
21066 | "version": "1.1.0", | ||
21067 | "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", | ||
21068 | "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" | ||
21069 | }, | ||
20907 | "has-flag": { | 21070 | "has-flag": { |
20908 | "version": "3.0.0", | 21071 | "version": "3.0.0", |
20909 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", | 21072 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", |
@@ -22563,8 +22726,7 @@ | |||
22563 | "ms": { | 22726 | "ms": { |
22564 | "version": "2.1.2", | 22727 | "version": "2.1.2", |
22565 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", | 22728 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", |
22566 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", | 22729 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" |
22567 | "dev": true | ||
22568 | }, | 22730 | }, |
22569 | "multicast-dns": { | 22731 | "multicast-dns": { |
22570 | "version": "6.2.3", | 22732 | "version": "6.2.3", |
@@ -23246,6 +23408,16 @@ | |||
23246 | } | 23408 | } |
23247 | } | 23409 | } |
23248 | }, | 23410 | }, |
23411 | "parseqs": { | ||
23412 | "version": "0.0.6", | ||
23413 | "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", | ||
23414 | "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" | ||
23415 | }, | ||
23416 | "parseuri": { | ||
23417 | "version": "0.0.6", | ||
23418 | "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", | ||
23419 | "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" | ||
23420 | }, | ||
23249 | "parseurl": { | 23421 | "parseurl": { |
23250 | "version": "1.3.3", | 23422 | "version": "1.3.3", |
23251 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", | 23423 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", |
@@ -25054,6 +25226,30 @@ | |||
25054 | } | 25226 | } |
25055 | } | 25227 | } |
25056 | }, | 25228 | }, |
25229 | "socket.io-client": { | ||
25230 | "version": "4.1.3", | ||
25231 | "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.1.3.tgz", | ||
25232 | "integrity": "sha512-hISFn6PDpgDifVUiNklLHVPTMv1LAk8poHArfIUdXa+gKgbr0MZbAlquDFqCqsF30yBqa+jg42wgos2FK50BHA==", | ||
25233 | "requires": { | ||
25234 | "@types/component-emitter": "^1.2.10", | ||
25235 | "backo2": "~1.0.2", | ||
25236 | "component-emitter": "~1.3.0", | ||
25237 | "debug": "~4.3.1", | ||
25238 | "engine.io-client": "~5.1.2", | ||
25239 | "parseuri": "0.0.6", | ||
25240 | "socket.io-parser": "~4.0.4" | ||
25241 | } | ||
25242 | }, | ||
25243 | "socket.io-parser": { | ||
25244 | "version": "4.0.4", | ||
25245 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", | ||
25246 | "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", | ||
25247 | "requires": { | ||
25248 | "@types/component-emitter": "^1.2.10", | ||
25249 | "component-emitter": "~1.3.0", | ||
25250 | "debug": "~4.3.1" | ||
25251 | } | ||
25252 | }, | ||
25057 | "sockjs": { | 25253 | "sockjs": { |
25058 | "version": "0.3.21", | 25254 | "version": "0.3.21", |
25059 | "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", | 25255 | "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", |
@@ -27462,6 +27658,11 @@ | |||
27462 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", | 27658 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", |
27463 | "dev": true | 27659 | "dev": true |
27464 | }, | 27660 | }, |
27661 | "yeast": { | ||
27662 | "version": "0.1.2", | ||
27663 | "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", | ||
27664 | "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" | ||
27665 | }, | ||
27465 | "yorkie": { | 27666 | "yorkie": { |
27466 | "version": "2.0.0", | 27667 | "version": "2.0.0", |
27467 | "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", | 27668 | "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", |
diff --git a/package.json b/package.json index d1d42e8..f5251fc 100644 --- a/package.json +++ b/package.json | |||
@@ -2,7 +2,6 @@ | |||
2 | "name": "lom_frontend", | 2 | "name": "lom_frontend", |
3 | "version": "0.1.0", | 3 | "version": "0.1.0", |
4 | "private": true, | 4 | "private": true, |
5 | "proxy": "localhost:8000", | ||
6 | "scripts": { | 5 | "scripts": { |
7 | "serve": "vue-cli-service serve", | 6 | "serve": "vue-cli-service serve", |
8 | "build": "vue-cli-service build", | 7 | "build": "vue-cli-service build", |
@@ -11,6 +10,7 @@ | |||
11 | "dependencies": { | 10 | "dependencies": { |
12 | "axios": "^0.24.0", | 11 | "axios": "^0.24.0", |
13 | "core-js": "^3.6.5", | 12 | "core-js": "^3.6.5", |
13 | "socket.io-client": "^4.1.3", | ||
14 | "v-hotkey": "^0.9.0", | 14 | "v-hotkey": "^0.9.0", |
15 | "vue": "^2.6.11", | 15 | "vue": "^2.6.11", |
16 | "vue-notification": "^1.3.20", | 16 | "vue-notification": "^1.3.20", |
diff --git a/src/components/group/GroupSender.vue b/src/components/group/GroupSender.vue index 160ca76..ba36949 100644 --- a/src/components/group/GroupSender.vue +++ b/src/components/group/GroupSender.vue | |||
@@ -19,12 +19,13 @@ export default { | |||
19 | data() { | 19 | data() { |
20 | return { | 20 | return { |
21 | message: "", | 21 | message: "", |
22 | messages: [] | 22 | messages: [], |
23 | } | 23 | } |
24 | }, | 24 | }, |
25 | 25 | ||
26 | props: { | 26 | props: { |
27 | group: Object | 27 | group: Object, |
28 | socket: Object | ||
28 | }, | 29 | }, |
29 | 30 | ||
30 | methods: { | 31 | methods: { |
@@ -35,6 +36,7 @@ export default { | |||
35 | send_message(e) { | 36 | send_message(e) { |
36 | e.preventDefault() | 37 | e.preventDefault() |
37 | console.log(this.message) | 38 | console.log(this.message) |
39 | this.socket.emit("send_group_message", {message: this.message, group: this.group}) | ||
38 | this.message = "" | 40 | this.message = "" |
39 | }, | 41 | }, |
40 | 42 | ||
@@ -45,6 +47,11 @@ export default { | |||
45 | 47 | ||
46 | if(status===200) | 48 | if(status===200) |
47 | this.messages = data.messages | 49 | this.messages = data.messages |
50 | }, | ||
51 | |||
52 | push_message(message) { | ||
53 | if(message.receiver == this.group.id) | ||
54 | this.messages.push(message) | ||
48 | } | 55 | } |
49 | }, | 56 | }, |
50 | 57 | ||
@@ -56,6 +63,10 @@ export default { | |||
56 | this.$nextTick(function () { | 63 | this.$nextTick(function () { |
57 | this.$refs.input.focus() | 64 | this.$refs.input.focus() |
58 | 65 | ||
66 | this.socket.emit("join_group", {group_id: this.group.id}) | ||
67 | this.socket.on("receive_group_message", ({message}) => { | ||
68 | this.push_message(message) | ||
69 | }) | ||
59 | this.get_messages() | 70 | this.get_messages() |
60 | }) | 71 | }) |
61 | } | 72 | } |
@@ -63,5 +74,12 @@ export default { | |||
63 | </script> | 74 | </script> |
64 | 75 | ||
65 | <style scoped> | 76 | <style scoped> |
77 | .group_view { | ||
78 | width: 25%; | ||
79 | } | ||
66 | 80 | ||
81 | .messages { | ||
82 | overflow:auto; | ||
83 | height: 300px; | ||
84 | } | ||
67 | </style> | 85 | </style> |
diff --git a/src/components/group/Message.vue b/src/components/group/Message.vue index 56e2805..eedcc6e 100644 --- a/src/components/group/Message.vue +++ b/src/components/group/Message.vue | |||
@@ -1,5 +1,5 @@ | |||
1 | <template> | 1 | <template> |
2 | <div class="message"> | 2 | <div class="message" :class="{mine: is_message_mine}"> |
3 | <div class="sender">{{ get_message_user }}</div> | 3 | <div class="sender">{{ get_message_user }}</div> |
4 | <div class="content">{{ get_message_content }}</div> | 4 | <div class="content">{{ get_message_content }}</div> |
5 | <div class="date">{{ get_message_date }}</div> | 5 | <div class="date">{{ get_message_date }}</div> |
@@ -19,6 +19,8 @@ export default { | |||
19 | let date = new Date(this.message.create_date) | 19 | let date = new Date(this.message.create_date) |
20 | return `${date.getDate()}/${date.getMonth()} ${date.getHours()}:${date.getMinutes()}` | 20 | return `${date.getDate()}/${date.getMonth()} ${date.getHours()}:${date.getMinutes()}` |
21 | }, | 21 | }, |
22 | |||
23 | is_message_mine() { return this.message.is_mine } | ||
22 | }, | 24 | }, |
23 | 25 | ||
24 | created() { | 26 | created() { |
@@ -31,5 +33,11 @@ export default { | |||
31 | <style scoped> | 33 | <style scoped> |
32 | .message { | 34 | .message { |
33 | width: 100%; | 35 | width: 100%; |
36 | margin-bottom: 10px; | ||
37 | color: white; | ||
38 | } | ||
39 | |||
40 | .mine { | ||
41 | color: red; | ||
34 | } | 42 | } |
35 | </style> | 43 | </style> |
diff --git a/src/store/index.js b/src/store/index.js index 02e3efa..c131271 100644 --- a/src/store/index.js +++ b/src/store/index.js | |||
@@ -29,6 +29,10 @@ const store = new Vuex.Store({ | |||
29 | 29 | ||
30 | get_user: (state) => { | 30 | get_user: (state) => { |
31 | return state.user | 31 | return state.user |
32 | }, | ||
33 | |||
34 | get_token: (state) => { | ||
35 | return state.token | ||
32 | } | 36 | } |
33 | }, | 37 | }, |
34 | 38 | ||
diff --git a/src/views/Home.vue b/src/views/Home.vue index 7bd99a2..d85760b 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue | |||
@@ -5,6 +5,7 @@ | |||
5 | <div v-for="group in groups" :key="group.name" > | 5 | <div v-for="group in groups" :key="group.name" > |
6 | <GroupSender | 6 | <GroupSender |
7 | :group="group" | 7 | :group="group" |
8 | :socket="socket" | ||
8 | /> | 9 | /> |
9 | </div> | 10 | </div> |
10 | 11 | ||
@@ -26,6 +27,7 @@ | |||
26 | import Searcher from '@/components/searcher/Searcher.vue' | 27 | import Searcher from '@/components/searcher/Searcher.vue' |
27 | import GroupMaker from '@/components/group/GroupMaker.vue' | 28 | import GroupMaker from '@/components/group/GroupMaker.vue' |
28 | import GroupSender from '@/components/group/GroupSender.vue' | 29 | import GroupSender from '@/components/group/GroupSender.vue' |
30 | import io from 'socket.io-client' | ||
29 | 31 | ||
30 | const popups = { | 32 | const popups = { |
31 | searcher_show: false, | 33 | searcher_show: false, |
@@ -36,7 +38,8 @@ export default { | |||
36 | data() { | 38 | data() { |
37 | return { | 39 | return { |
38 | popups, | 40 | popups, |
39 | groups: [] | 41 | groups: [], |
42 | socket: Object | ||
40 | } | 43 | } |
41 | }, | 44 | }, |
42 | 45 | ||
@@ -92,6 +95,18 @@ export default { | |||
92 | if(!this.$store.getters['is_logged_in']) { | 95 | if(!this.$store.getters['is_logged_in']) { |
93 | this.$router.push('/login') | 96 | this.$router.push('/login') |
94 | } | 97 | } |
98 | |||
99 | this.socket = io() | ||
100 | this.socket.auth = { token: this.$store.getters.get_token }; | ||
101 | this.socket.connect(); | ||
102 | |||
103 | this.socket.on("connect", () => { | ||
104 | console.log("Socket connected!") | ||
105 | }); | ||
106 | |||
107 | this.socket.on("disconnect", () => { | ||
108 | console.log("Scoket dsiconected") | ||
109 | }) | ||
95 | } | 110 | } |
96 | 111 | ||
97 | } | 112 | } |
diff --git a/vue.config.js b/vue.config.js new file mode 100644 index 0000000..8ac410f --- /dev/null +++ b/vue.config.js | |||
@@ -0,0 +1,10 @@ | |||
1 | module.exports = { | ||
2 | devServer: { | ||
3 | proxy: { | ||
4 | '/': { | ||
5 | target: 'http://localhost:8001', | ||
6 | ws: true | ||
7 | }, | ||
8 | }, | ||
9 | } | ||
10 | } | ||