summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package-lock.json221
-rw-r--r--package.json2
-rw-r--r--src/components/group/GroupSender.vue22
-rw-r--r--src/components/group/Message.vue10
-rw-r--r--src/store/index.js4
-rw-r--r--src/views/Home.vue17
-rw-r--r--vue.config.js10
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 @@
26import Searcher from '@/components/searcher/Searcher.vue' 27import Searcher from '@/components/searcher/Searcher.vue'
27import GroupMaker from '@/components/group/GroupMaker.vue' 28import GroupMaker from '@/components/group/GroupMaker.vue'
28import GroupSender from '@/components/group/GroupSender.vue' 29import GroupSender from '@/components/group/GroupSender.vue'
30import io from 'socket.io-client'
29 31
30const popups = { 32const 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 @@
1module.exports = {
2 devServer: {
3 proxy: {
4 '/': {
5 target: 'http://localhost:8001',
6 ws: true
7 },
8 },
9 }
10}