From cb8dbecb1a0c33d304297593504eedf3b537ef6a Mon Sep 17 00:00:00 2001
From: xsx <825657193@qq.com>
Date: Sat, 3 Aug 2024 00:42:32 +0800
Subject: [PATCH] =?UTF-8?q?im-ui=E6=9B=B4=E5=90=8D=E4=B8=BAim-web?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 8 +-
im-ui/.gitignore | 26 -
{im-ui => im-web}/.env.development | 0
{im-ui => im-web}/.env.production | 0
{im-ui => im-web}/README.md | 48 +-
{im-ui => im-web}/babel.config.js | 10 +-
{im-ui => im-web}/package.json | 126 +--
{im-ui => im-web}/public/index.html | 26 +-
{im-ui => im-web}/public/logo.png | Bin
{im-ui => im-web}/src/App.vue | 226 ++---
{im-ui => im-web}/src/api/camera.js | 0
{im-ui => im-web}/src/api/date.js | 0
{im-ui => im-web}/src/api/element.js | 0
{im-ui => im-web}/src/api/emotion.js | 0
{im-ui => im-web}/src/api/enums.js | 0
{im-ui => im-web}/src/api/eventBus.js | 0
{im-ui => im-web}/src/api/httpRequest.js | 0
{im-ui => im-web}/src/api/messageType.js | 0
{im-ui => im-web}/src/api/rtcGroupApi.js | 0
{im-ui => im-web}/src/api/rtcPrivateApi.js | 0
{im-ui => im-web}/src/api/webrtc.js | 0
{im-ui => im-web}/src/api/wssocket.js | 290 +++---
{im-ui => im-web}/src/assets/audio/call.wav | Bin
{im-ui => im-web}/src/assets/audio/tip.wav | Bin
{im-ui => im-web}/src/assets/emoji/0.gif | Bin
{im-ui => im-web}/src/assets/emoji/1.gif | Bin
{im-ui => im-web}/src/assets/emoji/10.gif | Bin
{im-ui => im-web}/src/assets/emoji/11.gif | Bin
{im-ui => im-web}/src/assets/emoji/12.gif | Bin
{im-ui => im-web}/src/assets/emoji/13.gif | Bin
{im-ui => im-web}/src/assets/emoji/14.gif | Bin
{im-ui => im-web}/src/assets/emoji/15.gif | Bin
{im-ui => im-web}/src/assets/emoji/16.gif | Bin
{im-ui => im-web}/src/assets/emoji/17.gif | Bin
{im-ui => im-web}/src/assets/emoji/18.gif | Bin
{im-ui => im-web}/src/assets/emoji/19.gif | Bin
{im-ui => im-web}/src/assets/emoji/2.gif | Bin
{im-ui => im-web}/src/assets/emoji/20.gif | Bin
{im-ui => im-web}/src/assets/emoji/21.gif | Bin
{im-ui => im-web}/src/assets/emoji/22.gif | Bin
{im-ui => im-web}/src/assets/emoji/23.gif | Bin
{im-ui => im-web}/src/assets/emoji/24.gif | Bin
{im-ui => im-web}/src/assets/emoji/25.gif | Bin
{im-ui => im-web}/src/assets/emoji/26.gif | Bin
{im-ui => im-web}/src/assets/emoji/27.gif | Bin
{im-ui => im-web}/src/assets/emoji/28.gif | Bin
{im-ui => im-web}/src/assets/emoji/29.gif | Bin
{im-ui => im-web}/src/assets/emoji/3.gif | Bin
{im-ui => im-web}/src/assets/emoji/30.gif | Bin
{im-ui => im-web}/src/assets/emoji/31.gif | Bin
{im-ui => im-web}/src/assets/emoji/32.gif | Bin
{im-ui => im-web}/src/assets/emoji/33.gif | Bin
{im-ui => im-web}/src/assets/emoji/34.gif | Bin
{im-ui => im-web}/src/assets/emoji/35.gif | Bin
{im-ui => im-web}/src/assets/emoji/36.gif | Bin
{im-ui => im-web}/src/assets/emoji/37.gif | Bin
{im-ui => im-web}/src/assets/emoji/38.gif | Bin
{im-ui => im-web}/src/assets/emoji/39.gif | Bin
{im-ui => im-web}/src/assets/emoji/4.gif | Bin
{im-ui => im-web}/src/assets/emoji/40.gif | Bin
{im-ui => im-web}/src/assets/emoji/41.gif | Bin
{im-ui => im-web}/src/assets/emoji/42.gif | Bin
{im-ui => im-web}/src/assets/emoji/43.gif | Bin
{im-ui => im-web}/src/assets/emoji/44.gif | Bin
{im-ui => im-web}/src/assets/emoji/45.gif | Bin
{im-ui => im-web}/src/assets/emoji/46.gif | Bin
{im-ui => im-web}/src/assets/emoji/47.gif | Bin
{im-ui => im-web}/src/assets/emoji/48.gif | Bin
{im-ui => im-web}/src/assets/emoji/49.gif | Bin
{im-ui => im-web}/src/assets/emoji/5.gif | Bin
{im-ui => im-web}/src/assets/emoji/50.gif | Bin
{im-ui => im-web}/src/assets/emoji/51.gif | Bin
{im-ui => im-web}/src/assets/emoji/52.gif | Bin
{im-ui => im-web}/src/assets/emoji/53.gif | Bin
{im-ui => im-web}/src/assets/emoji/54.gif | Bin
{im-ui => im-web}/src/assets/emoji/55.gif | Bin
{im-ui => im-web}/src/assets/emoji/56.gif | Bin
{im-ui => im-web}/src/assets/emoji/6.gif | Bin
{im-ui => im-web}/src/assets/emoji/7.gif | Bin
{im-ui => im-web}/src/assets/emoji/8.gif | Bin
{im-ui => im-web}/src/assets/emoji/9.gif | Bin
.../src/assets/iconfont/iconfont.css | 0
.../src/assets/iconfont/iconfont.ttf | Bin
.../src/assets/image/icp_logo.png | Bin
.../src/assets/image/online_app.png | Bin
.../src/assets/image/online_web.png | Bin
{im-ui => im-web}/src/assets/style/global.css | 86 +-
.../src/components/chat/ChatAtBox.vue | 0
.../src/components/chat/ChatBox.vue | 0
.../src/components/chat/ChatGroupMember.vue | 0
.../src/components/chat/ChatGroupReaded.vue | 0
.../src/components/chat/ChatGroupSide.vue | 0
.../src/components/chat/ChatHistory.vue | 0
.../src/components/chat/ChatItem.vue | 0
.../src/components/chat/ChatMessageItem.vue | 0
.../src/components/chat/ChatRecord.vue | 0
.../src/components/common/Emotion.vue | 0
.../src/components/common/FileUpload.vue | 0
.../src/components/common/FullImage.vue | 0
.../src/components/common/HeadImage.vue | 0
.../src/components/common/Icp.vue | 0
.../src/components/common/RightMenu.vue | 0
.../src/components/common/UserInfo.vue | 0
.../src/components/friend/AddFriend.vue | 0
.../src/components/friend/FriendItem.vue | 0
.../src/components/group/AddGroupMember.vue | 0
.../src/components/group/GroupItem.vue | 0
.../src/components/group/GroupMember.vue | 0
.../src/components/group/GroupMemberItem.vue | 0
.../components/group/GroupMemberSelector.vue | 0
.../src/components/rtc/RtcGroupJoin.vue | 0
.../src/components/rtc/RtcGroupVideo.vue | 0
.../src/components/rtc/RtcPrivateAcceptor.vue | 0
.../src/components/rtc/RtcPrivateVideo.vue | 0
.../src/components/setting/Setting.vue | 0
{im-ui => im-web}/src/main.js | 70 +-
{im-ui => im-web}/src/router/index.js | 98 +-
{im-ui => im-web}/src/ssl/cert.crt | 0
{im-ui => im-web}/src/ssl/cert.key | 0
{im-ui => im-web}/src/store/chatStore.js | 736 +++++++--------
{im-ui => im-web}/src/store/configStore.js | 0
{im-ui => im-web}/src/store/friendStore.js | 0
{im-ui => im-web}/src/store/groupStore.js | 0
{im-ui => im-web}/src/store/index.js | 66 +-
{im-ui => im-web}/src/store/uiStore.js | 0
{im-ui => im-web}/src/store/userStore.js | 98 +-
.../src/utils/directive/dialogDrag.js | 0
{im-ui => im-web}/src/view/Chat.vue | 206 ++---
{im-ui => im-web}/src/view/Friend.vue | 0
{im-ui => im-web}/src/view/Group.vue | 0
{im-ui => im-web}/src/view/Home.vue | 842 +++++++++---------
{im-ui => im-web}/src/view/Login.vue | 484 +++++-----
{im-ui => im-web}/src/view/Register.vue | 324 +++----
{im-ui => im-web}/vue.config.js | 42 +-
134 files changed, 1893 insertions(+), 1919 deletions(-)
delete mode 100644 im-ui/.gitignore
rename {im-ui => im-web}/.env.development (100%)
rename {im-ui => im-web}/.env.production (100%)
rename {im-ui => im-web}/README.md (92%)
rename {im-ui => im-web}/babel.config.js (93%)
rename {im-ui => im-web}/package.json (96%)
rename {im-ui => im-web}/public/index.html (96%)
rename {im-ui => im-web}/public/logo.png (100%)
rename {im-ui => im-web}/src/App.vue (93%)
rename {im-ui => im-web}/src/api/camera.js (100%)
rename {im-ui => im-web}/src/api/date.js (100%)
rename {im-ui => im-web}/src/api/element.js (100%)
rename {im-ui => im-web}/src/api/emotion.js (100%)
rename {im-ui => im-web}/src/api/enums.js (100%)
rename {im-ui => im-web}/src/api/eventBus.js (100%)
rename {im-ui => im-web}/src/api/httpRequest.js (100%)
rename {im-ui => im-web}/src/api/messageType.js (100%)
rename {im-ui => im-web}/src/api/rtcGroupApi.js (100%)
rename {im-ui => im-web}/src/api/rtcPrivateApi.js (100%)
rename {im-ui => im-web}/src/api/webrtc.js (100%)
rename {im-ui => im-web}/src/api/wssocket.js (96%)
rename {im-ui => im-web}/src/assets/audio/call.wav (100%)
rename {im-ui => im-web}/src/assets/audio/tip.wav (100%)
rename {im-ui => im-web}/src/assets/emoji/0.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/1.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/10.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/11.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/12.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/13.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/14.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/15.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/16.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/17.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/18.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/19.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/2.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/20.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/21.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/22.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/23.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/24.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/25.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/26.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/27.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/28.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/29.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/3.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/30.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/31.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/32.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/33.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/34.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/35.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/36.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/37.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/38.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/39.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/4.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/40.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/41.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/42.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/43.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/44.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/45.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/46.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/47.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/48.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/49.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/5.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/50.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/51.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/52.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/53.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/54.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/55.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/56.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/6.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/7.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/8.gif (100%)
rename {im-ui => im-web}/src/assets/emoji/9.gif (100%)
rename {im-ui => im-web}/src/assets/iconfont/iconfont.css (100%)
rename {im-ui => im-web}/src/assets/iconfont/iconfont.ttf (100%)
rename {im-ui => im-web}/src/assets/image/icp_logo.png (100%)
rename {im-ui => im-web}/src/assets/image/online_app.png (100%)
rename {im-ui => im-web}/src/assets/image/online_web.png (100%)
rename {im-ui => im-web}/src/assets/style/global.css (93%)
rename {im-ui => im-web}/src/components/chat/ChatAtBox.vue (100%)
rename {im-ui => im-web}/src/components/chat/ChatBox.vue (100%)
rename {im-ui => im-web}/src/components/chat/ChatGroupMember.vue (100%)
rename {im-ui => im-web}/src/components/chat/ChatGroupReaded.vue (100%)
rename {im-ui => im-web}/src/components/chat/ChatGroupSide.vue (100%)
rename {im-ui => im-web}/src/components/chat/ChatHistory.vue (100%)
rename {im-ui => im-web}/src/components/chat/ChatItem.vue (100%)
rename {im-ui => im-web}/src/components/chat/ChatMessageItem.vue (100%)
rename {im-ui => im-web}/src/components/chat/ChatRecord.vue (100%)
rename {im-ui => im-web}/src/components/common/Emotion.vue (100%)
rename {im-ui => im-web}/src/components/common/FileUpload.vue (100%)
rename {im-ui => im-web}/src/components/common/FullImage.vue (100%)
rename {im-ui => im-web}/src/components/common/HeadImage.vue (100%)
rename {im-ui => im-web}/src/components/common/Icp.vue (100%)
rename {im-ui => im-web}/src/components/common/RightMenu.vue (100%)
rename {im-ui => im-web}/src/components/common/UserInfo.vue (100%)
rename {im-ui => im-web}/src/components/friend/AddFriend.vue (100%)
rename {im-ui => im-web}/src/components/friend/FriendItem.vue (100%)
rename {im-ui => im-web}/src/components/group/AddGroupMember.vue (100%)
rename {im-ui => im-web}/src/components/group/GroupItem.vue (100%)
rename {im-ui => im-web}/src/components/group/GroupMember.vue (100%)
rename {im-ui => im-web}/src/components/group/GroupMemberItem.vue (100%)
rename {im-ui => im-web}/src/components/group/GroupMemberSelector.vue (100%)
rename {im-ui => im-web}/src/components/rtc/RtcGroupJoin.vue (100%)
rename {im-ui => im-web}/src/components/rtc/RtcGroupVideo.vue (100%)
rename {im-ui => im-web}/src/components/rtc/RtcPrivateAcceptor.vue (100%)
rename {im-ui => im-web}/src/components/rtc/RtcPrivateVideo.vue (100%)
rename {im-ui => im-web}/src/components/setting/Setting.vue (100%)
rename {im-ui => im-web}/src/main.js (96%)
rename {im-ui => im-web}/src/router/index.js (94%)
rename {im-ui => im-web}/src/ssl/cert.crt (100%)
rename {im-ui => im-web}/src/ssl/cert.key (100%)
rename {im-ui => im-web}/src/store/chatStore.js (96%)
rename {im-ui => im-web}/src/store/configStore.js (100%)
rename {im-ui => im-web}/src/store/friendStore.js (100%)
rename {im-ui => im-web}/src/store/groupStore.js (100%)
rename {im-ui => im-web}/src/store/index.js (96%)
rename {im-ui => im-web}/src/store/uiStore.js (100%)
rename {im-ui => im-web}/src/store/userStore.js (95%)
rename {im-ui => im-web}/src/utils/directive/dialogDrag.js (100%)
rename {im-ui => im-web}/src/view/Chat.vue (95%)
rename {im-ui => im-web}/src/view/Friend.vue (100%)
rename {im-ui => im-web}/src/view/Group.vue (100%)
rename {im-ui => im-web}/src/view/Home.vue (96%)
rename {im-ui => im-web}/src/view/Login.vue (96%)
rename {im-ui => im-web}/src/view/Register.vue (96%)
rename {im-ui => im-web}/vue.config.js (95%)
diff --git a/.gitignore b/.gitignore
index 6e07688..083aa4a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,10 +9,10 @@
/im-server/src/main/resources/logback-prod.xml
/im-commom/im-commom.iml
/im-uniapp/node_modules/
-/im-ui/package-lock.json
+/im-web/package-lock.json
/im-uniapp/unpackage/
/im-uniapp/hybrid/
/im-uniapp/package-lock.json
-/im-ui/src/components/rtc/LocalVideo.vue
-/im-ui/src/components/rtc/RemoteVideo.vue
-/im-ui/src/components/rtc/RtcGroupAcceptor.vue
+/im-web/src/components/rtc/LocalVideo.vue
+/im-web/src/components/rtc/RemoteVideo.vue
+/im-web/src/components/rtc/RtcGroupAcceptor.vue
diff --git a/im-ui/.gitignore b/im-ui/.gitignore
deleted file mode 100644
index 0b0371a..0000000
--- a/im-ui/.gitignore
+++ /dev/null
@@ -1,26 +0,0 @@
-.DS_Store
-node_modules
-/dist
-
-
-# local env files
-.env.local
-.env.*.local
-
-# Log files
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-
-# Editor directories and files
-.idea
-.vscode
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
-
-#
-package-lock.json
diff --git a/im-ui/.env.development b/im-web/.env.development
similarity index 100%
rename from im-ui/.env.development
rename to im-web/.env.development
diff --git a/im-ui/.env.production b/im-web/.env.production
similarity index 100%
rename from im-ui/.env.production
rename to im-web/.env.production
diff --git a/im-ui/README.md b/im-web/README.md
similarity index 92%
rename from im-ui/README.md
rename to im-web/README.md
index b29f472..ae73f2f 100644
--- a/im-ui/README.md
+++ b/im-web/README.md
@@ -1,24 +1,24 @@
-# web
-
-## Project setup
-```
-npm install
-```
-
-### Compiles and hot-reloads for development
-```
-npm run serve
-```
-
-### Compiles and minifies for production
-```
-npm run build
-```
-
-### Lints and fixes files
-```
-npm run lint
-```
-
-### Customize configuration
-See [Configuration Reference](https://cli.vuejs.org/config/).
+# web
+
+## Project setup
+```
+npm install
+```
+
+### Compiles and hot-reloads for development
+```
+npm run serve
+```
+
+### Compiles and minifies for production
+```
+npm run build
+```
+
+### Lints and fixes files
+```
+npm run lint
+```
+
+### Customize configuration
+See [Configuration Reference](https://cli.vuejs.org/config/).
diff --git a/im-ui/babel.config.js b/im-web/babel.config.js
similarity index 93%
rename from im-ui/babel.config.js
rename to im-web/babel.config.js
index a673655..e955840 100644
--- a/im-ui/babel.config.js
+++ b/im-web/babel.config.js
@@ -1,5 +1,5 @@
-module.exports = {
- presets: [
- '@vue/cli-plugin-babel/preset'
- ]
-}
+module.exports = {
+ presets: [
+ '@vue/cli-plugin-babel/preset'
+ ]
+}
diff --git a/im-ui/package.json b/im-web/package.json
similarity index 96%
rename from im-ui/package.json
rename to im-web/package.json
index 4b43975..f37338f 100644
--- a/im-ui/package.json
+++ b/im-web/package.json
@@ -1,63 +1,63 @@
-{
- "name": "boxim",
- "version": "0.1.0",
- "private": true,
- "scripts": {
- "serve": "vue-cli-service serve",
- "build": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service build",
- "lint": "vue-cli-service lint"
- },
- "dependencies": {
- "axios": "^1.1.3",
- "core-js": "^3.6.5",
- "element-ui": "^2.15.10",
- "js-audio-recorder": "^1.0.7",
- "localforage": "^1.10.0",
- "sass": "^1.47.0",
- "sass-loader": "^10.1.1",
- "vue": "^2.6.11",
- "vue-axios": "^3.5.0",
- "vue-router": "^3.3.3",
- "vuex": "^3.6.2",
- "vuex-persist": "^3.1.3"
- },
- "devDependencies": {
- "@vue/cli-plugin-babel": "~4.5.12",
- "@vue/cli-plugin-eslint": "~4.5.12",
- "@vue/cli-service": "~4.5.12",
- "babel-eslint": "^10.1.0",
- "eslint": "^6.7.2",
- "eslint-plugin-vue": "^6.2.2",
- "vue-template-compiler": "^2.6.11"
- },
- "eslintConfig": {
- "root": true,
- "env": {
- "node": true
- },
- "extends": [
- "plugin:vue/essential",
- "eslint:recommended"
- ],
- "parserOptions": {
- "parser": "babel-eslint"
- },
- "rules": {
- "no-mixed-spaces-and-tabs": 0,
- "generator-star-spacing": "off",
- "no-tabs": "off",
- "no-unused-vars": "off",
- "no-unused-labels": "off",
- "no-console": "off",
- "vue/no-unused-components": "off",
- "no-irregular-whitespace": "off",
- "no-debugger": "off",
- "no-useless-escape": "off"
- }
- },
- "browserslist": [
- "> 1%",
- "last 2 versions",
- "not dead"
- ]
-}
+{
+ "name": "boxim",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "serve": "vue-cli-service serve",
+ "build": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service build",
+ "lint": "vue-cli-service lint"
+ },
+ "dependencies": {
+ "axios": "^1.1.3",
+ "core-js": "^3.6.5",
+ "element-ui": "^2.15.10",
+ "js-audio-recorder": "^1.0.7",
+ "localforage": "^1.10.0",
+ "sass": "^1.47.0",
+ "sass-loader": "^10.1.1",
+ "vue": "^2.6.11",
+ "vue-axios": "^3.5.0",
+ "vue-router": "^3.3.3",
+ "vuex": "^3.6.2",
+ "vuex-persist": "^3.1.3"
+ },
+ "devDependencies": {
+ "@vue/cli-plugin-babel": "~4.5.12",
+ "@vue/cli-plugin-eslint": "~4.5.12",
+ "@vue/cli-service": "~4.5.12",
+ "babel-eslint": "^10.1.0",
+ "eslint": "^6.7.2",
+ "eslint-plugin-vue": "^6.2.2",
+ "vue-template-compiler": "^2.6.11"
+ },
+ "eslintConfig": {
+ "root": true,
+ "env": {
+ "node": true
+ },
+ "extends": [
+ "plugin:vue/essential",
+ "eslint:recommended"
+ ],
+ "parserOptions": {
+ "parser": "babel-eslint"
+ },
+ "rules": {
+ "no-mixed-spaces-and-tabs": 0,
+ "generator-star-spacing": "off",
+ "no-tabs": "off",
+ "no-unused-vars": "off",
+ "no-unused-labels": "off",
+ "no-console": "off",
+ "vue/no-unused-components": "off",
+ "no-irregular-whitespace": "off",
+ "no-debugger": "off",
+ "no-useless-escape": "off"
+ }
+ },
+ "browserslist": [
+ "> 1%",
+ "last 2 versions",
+ "not dead"
+ ]
+}
diff --git a/im-ui/public/index.html b/im-web/public/index.html
similarity index 96%
rename from im-ui/public/index.html
rename to im-web/public/index.html
index 724a362..36eb88e 100644
--- a/im-ui/public/index.html
+++ b/im-web/public/index.html
@@ -1,13 +1,13 @@
-
-
-
-
-
-
-
- 盒子IM
-
-
-
-
-
+
+
+
+
+
+
+
+ 盒子IM
+
+
+
+
+
diff --git a/im-ui/public/logo.png b/im-web/public/logo.png
similarity index 100%
rename from im-ui/public/logo.png
rename to im-web/public/logo.png
diff --git a/im-ui/src/App.vue b/im-web/src/App.vue
similarity index 93%
rename from im-ui/src/App.vue
rename to im-web/src/App.vue
index 60aa2b0..6e991bb 100644
--- a/im-ui/src/App.vue
+++ b/im-web/src/App.vue
@@ -1,115 +1,115 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/im-ui/src/api/camera.js b/im-web/src/api/camera.js
similarity index 100%
rename from im-ui/src/api/camera.js
rename to im-web/src/api/camera.js
diff --git a/im-ui/src/api/date.js b/im-web/src/api/date.js
similarity index 100%
rename from im-ui/src/api/date.js
rename to im-web/src/api/date.js
diff --git a/im-ui/src/api/element.js b/im-web/src/api/element.js
similarity index 100%
rename from im-ui/src/api/element.js
rename to im-web/src/api/element.js
diff --git a/im-ui/src/api/emotion.js b/im-web/src/api/emotion.js
similarity index 100%
rename from im-ui/src/api/emotion.js
rename to im-web/src/api/emotion.js
diff --git a/im-ui/src/api/enums.js b/im-web/src/api/enums.js
similarity index 100%
rename from im-ui/src/api/enums.js
rename to im-web/src/api/enums.js
diff --git a/im-ui/src/api/eventBus.js b/im-web/src/api/eventBus.js
similarity index 100%
rename from im-ui/src/api/eventBus.js
rename to im-web/src/api/eventBus.js
diff --git a/im-ui/src/api/httpRequest.js b/im-web/src/api/httpRequest.js
similarity index 100%
rename from im-ui/src/api/httpRequest.js
rename to im-web/src/api/httpRequest.js
diff --git a/im-ui/src/api/messageType.js b/im-web/src/api/messageType.js
similarity index 100%
rename from im-ui/src/api/messageType.js
rename to im-web/src/api/messageType.js
diff --git a/im-ui/src/api/rtcGroupApi.js b/im-web/src/api/rtcGroupApi.js
similarity index 100%
rename from im-ui/src/api/rtcGroupApi.js
rename to im-web/src/api/rtcGroupApi.js
diff --git a/im-ui/src/api/rtcPrivateApi.js b/im-web/src/api/rtcPrivateApi.js
similarity index 100%
rename from im-ui/src/api/rtcPrivateApi.js
rename to im-web/src/api/rtcPrivateApi.js
diff --git a/im-ui/src/api/webrtc.js b/im-web/src/api/webrtc.js
similarity index 100%
rename from im-ui/src/api/webrtc.js
rename to im-web/src/api/webrtc.js
diff --git a/im-ui/src/api/wssocket.js b/im-web/src/api/wssocket.js
similarity index 96%
rename from im-ui/src/api/wssocket.js
rename to im-web/src/api/wssocket.js
index 9842697..de000ef 100644
--- a/im-ui/src/api/wssocket.js
+++ b/im-web/src/api/wssocket.js
@@ -1,145 +1,145 @@
-var websock = null;
-let rec; //断线重连后,延迟5秒重新创建WebSocket连接 rec用来存储延迟请求的代码
-let isConnect = false; //连接标识 避免重复连接
-let connectCallBack= null;
-let messageCallBack = null;
-let closeCallBack = null
-
-
-let connect = (wsurl,accessToken) => {
- try {
- if (isConnect) {
- return;
- }
- console.log("连接WebSocket");
- websock = new WebSocket(wsurl);
- websock.onmessage = function(e) {
- let sendInfo = JSON.parse(e.data)
- if (sendInfo.cmd == 0) {
- heartCheck.start()
- // 登录成功才算真正完成连接
- connectCallBack && connectCallBack();
- console.log('WebSocket登录成功')
- } else if (sendInfo.cmd == 1) {
- // 重新开启心跳定时
- heartCheck.reset();
- } else {
- // 其他消息转发出去
- console.log("收到消息:",sendInfo);
- messageCallBack && messageCallBack(sendInfo.cmd, sendInfo.data)
- }
- }
- websock.onclose = function(e) {
- console.log('WebSocket连接关闭')
- isConnect = false; //断开后修改标识
- closeCallBack && closeCallBack(e);
- }
- websock.onopen = function() {
- console.log("WebSocket连接成功");
- isConnect = true;
- // 发送登录命令
- let loginInfo = {
- cmd: 0,
- data: {
- accessToken: accessToken
- }
- };
- websock.send(JSON.stringify(loginInfo));
- }
-
- // 连接发生错误的回调方法
- websock.onerror = function() {
- console.log('WebSocket连接发生错误')
- isConnect = false; //连接断开修改标识
- reconnect(wsurl,accessToken);
- }
- } catch (e) {
- console.log("尝试创建连接失败");
- reconnect(wsurl,accessToken); //如果无法连接上webSocket 那么重新连接!可能会因为服务器重新部署,或者短暂断网等导致无法创建连接
- }
-};
-
-//定义重连函数
-let reconnect = (wsurl,accessToken) => {
- console.log("尝试重新连接");
- if (isConnect){
- //如果已经连上就不在重连了
- return;
- }
- rec && clearTimeout(rec);
- rec = setTimeout(function() { // 延迟5秒重连 避免过多次过频繁请求重连
- connect(wsurl,accessToken);
- }, 15000);
-};
-//设置关闭连接
-let close = (code) => {
- websock && websock.close(code);
-};
-
-
-//心跳设置
-let heartCheck = {
- timeout: 5000, //每段时间发送一次心跳包 这里设置为20s
- timeoutObj: null, //延时发送消息对象(启动心跳新建这个对象,收到消息后重置对象)
- start: function() {
- if (isConnect) {
- console.log('发送WebSocket心跳')
- let heartBeat = {
- cmd: 1,
- data: {}
- };
- websock.send(JSON.stringify(heartBeat))
- }
- },
-
- reset: function() {
- clearTimeout(this.timeoutObj);
- this.timeoutObj = setTimeout(function() {
- heartCheck.start();
- }, this.timeout);
-
- }
-};
-
-
-
-// 实际调用的方法
-let sendMessage = (agentData) => {
- if (websock.readyState === websock.OPEN) {
- // 若是ws开启状态
- websock.send(JSON.stringify(agentData))
- } else if (websock.readyState === websock.CONNECTING) {
- // 若是 正在开启状态,则等待1s后重新调用
- setTimeout(function() {
- sendMessage(agentData)
- }, 1000)
- } else {
- // 若未开启 ,则等待1s后重新调用
- setTimeout(function() {
- sendMessage(agentData)
- }, 1000)
- }
-}
-
-let onConnect = (callback) => {
- connectCallBack = callback;
-}
-
-let onMessage = (callback) => {
- messageCallBack = callback;
-}
-
-
-let onClose = (callback) => {
- closeCallBack = callback;
-}
-// 将方法暴露出去
-export {
- connect,
- reconnect,
- close,
- sendMessage,
- onConnect,
- onMessage,
- onClose,
-}
+var websock = null;
+let rec; //断线重连后,延迟5秒重新创建WebSocket连接 rec用来存储延迟请求的代码
+let isConnect = false; //连接标识 避免重复连接
+let connectCallBack= null;
+let messageCallBack = null;
+let closeCallBack = null
+
+
+let connect = (wsurl,accessToken) => {
+ try {
+ if (isConnect) {
+ return;
+ }
+ console.log("连接WebSocket");
+ websock = new WebSocket(wsurl);
+ websock.onmessage = function(e) {
+ let sendInfo = JSON.parse(e.data)
+ if (sendInfo.cmd == 0) {
+ heartCheck.start()
+ // 登录成功才算真正完成连接
+ connectCallBack && connectCallBack();
+ console.log('WebSocket登录成功')
+ } else if (sendInfo.cmd == 1) {
+ // 重新开启心跳定时
+ heartCheck.reset();
+ } else {
+ // 其他消息转发出去
+ console.log("收到消息:",sendInfo);
+ messageCallBack && messageCallBack(sendInfo.cmd, sendInfo.data)
+ }
+ }
+ websock.onclose = function(e) {
+ console.log('WebSocket连接关闭')
+ isConnect = false; //断开后修改标识
+ closeCallBack && closeCallBack(e);
+ }
+ websock.onopen = function() {
+ console.log("WebSocket连接成功");
+ isConnect = true;
+ // 发送登录命令
+ let loginInfo = {
+ cmd: 0,
+ data: {
+ accessToken: accessToken
+ }
+ };
+ websock.send(JSON.stringify(loginInfo));
+ }
+
+ // 连接发生错误的回调方法
+ websock.onerror = function() {
+ console.log('WebSocket连接发生错误')
+ isConnect = false; //连接断开修改标识
+ reconnect(wsurl,accessToken);
+ }
+ } catch (e) {
+ console.log("尝试创建连接失败");
+ reconnect(wsurl,accessToken); //如果无法连接上webSocket 那么重新连接!可能会因为服务器重新部署,或者短暂断网等导致无法创建连接
+ }
+};
+
+//定义重连函数
+let reconnect = (wsurl,accessToken) => {
+ console.log("尝试重新连接");
+ if (isConnect){
+ //如果已经连上就不在重连了
+ return;
+ }
+ rec && clearTimeout(rec);
+ rec = setTimeout(function() { // 延迟5秒重连 避免过多次过频繁请求重连
+ connect(wsurl,accessToken);
+ }, 15000);
+};
+//设置关闭连接
+let close = (code) => {
+ websock && websock.close(code);
+};
+
+
+//心跳设置
+let heartCheck = {
+ timeout: 5000, //每段时间发送一次心跳包 这里设置为20s
+ timeoutObj: null, //延时发送消息对象(启动心跳新建这个对象,收到消息后重置对象)
+ start: function() {
+ if (isConnect) {
+ console.log('发送WebSocket心跳')
+ let heartBeat = {
+ cmd: 1,
+ data: {}
+ };
+ websock.send(JSON.stringify(heartBeat))
+ }
+ },
+
+ reset: function() {
+ clearTimeout(this.timeoutObj);
+ this.timeoutObj = setTimeout(function() {
+ heartCheck.start();
+ }, this.timeout);
+
+ }
+};
+
+
+
+// 实际调用的方法
+let sendMessage = (agentData) => {
+ if (websock.readyState === websock.OPEN) {
+ // 若是ws开启状态
+ websock.send(JSON.stringify(agentData))
+ } else if (websock.readyState === websock.CONNECTING) {
+ // 若是 正在开启状态,则等待1s后重新调用
+ setTimeout(function() {
+ sendMessage(agentData)
+ }, 1000)
+ } else {
+ // 若未开启 ,则等待1s后重新调用
+ setTimeout(function() {
+ sendMessage(agentData)
+ }, 1000)
+ }
+}
+
+let onConnect = (callback) => {
+ connectCallBack = callback;
+}
+
+let onMessage = (callback) => {
+ messageCallBack = callback;
+}
+
+
+let onClose = (callback) => {
+ closeCallBack = callback;
+}
+// 将方法暴露出去
+export {
+ connect,
+ reconnect,
+ close,
+ sendMessage,
+ onConnect,
+ onMessage,
+ onClose,
+}
diff --git a/im-ui/src/assets/audio/call.wav b/im-web/src/assets/audio/call.wav
similarity index 100%
rename from im-ui/src/assets/audio/call.wav
rename to im-web/src/assets/audio/call.wav
diff --git a/im-ui/src/assets/audio/tip.wav b/im-web/src/assets/audio/tip.wav
similarity index 100%
rename from im-ui/src/assets/audio/tip.wav
rename to im-web/src/assets/audio/tip.wav
diff --git a/im-ui/src/assets/emoji/0.gif b/im-web/src/assets/emoji/0.gif
similarity index 100%
rename from im-ui/src/assets/emoji/0.gif
rename to im-web/src/assets/emoji/0.gif
diff --git a/im-ui/src/assets/emoji/1.gif b/im-web/src/assets/emoji/1.gif
similarity index 100%
rename from im-ui/src/assets/emoji/1.gif
rename to im-web/src/assets/emoji/1.gif
diff --git a/im-ui/src/assets/emoji/10.gif b/im-web/src/assets/emoji/10.gif
similarity index 100%
rename from im-ui/src/assets/emoji/10.gif
rename to im-web/src/assets/emoji/10.gif
diff --git a/im-ui/src/assets/emoji/11.gif b/im-web/src/assets/emoji/11.gif
similarity index 100%
rename from im-ui/src/assets/emoji/11.gif
rename to im-web/src/assets/emoji/11.gif
diff --git a/im-ui/src/assets/emoji/12.gif b/im-web/src/assets/emoji/12.gif
similarity index 100%
rename from im-ui/src/assets/emoji/12.gif
rename to im-web/src/assets/emoji/12.gif
diff --git a/im-ui/src/assets/emoji/13.gif b/im-web/src/assets/emoji/13.gif
similarity index 100%
rename from im-ui/src/assets/emoji/13.gif
rename to im-web/src/assets/emoji/13.gif
diff --git a/im-ui/src/assets/emoji/14.gif b/im-web/src/assets/emoji/14.gif
similarity index 100%
rename from im-ui/src/assets/emoji/14.gif
rename to im-web/src/assets/emoji/14.gif
diff --git a/im-ui/src/assets/emoji/15.gif b/im-web/src/assets/emoji/15.gif
similarity index 100%
rename from im-ui/src/assets/emoji/15.gif
rename to im-web/src/assets/emoji/15.gif
diff --git a/im-ui/src/assets/emoji/16.gif b/im-web/src/assets/emoji/16.gif
similarity index 100%
rename from im-ui/src/assets/emoji/16.gif
rename to im-web/src/assets/emoji/16.gif
diff --git a/im-ui/src/assets/emoji/17.gif b/im-web/src/assets/emoji/17.gif
similarity index 100%
rename from im-ui/src/assets/emoji/17.gif
rename to im-web/src/assets/emoji/17.gif
diff --git a/im-ui/src/assets/emoji/18.gif b/im-web/src/assets/emoji/18.gif
similarity index 100%
rename from im-ui/src/assets/emoji/18.gif
rename to im-web/src/assets/emoji/18.gif
diff --git a/im-ui/src/assets/emoji/19.gif b/im-web/src/assets/emoji/19.gif
similarity index 100%
rename from im-ui/src/assets/emoji/19.gif
rename to im-web/src/assets/emoji/19.gif
diff --git a/im-ui/src/assets/emoji/2.gif b/im-web/src/assets/emoji/2.gif
similarity index 100%
rename from im-ui/src/assets/emoji/2.gif
rename to im-web/src/assets/emoji/2.gif
diff --git a/im-ui/src/assets/emoji/20.gif b/im-web/src/assets/emoji/20.gif
similarity index 100%
rename from im-ui/src/assets/emoji/20.gif
rename to im-web/src/assets/emoji/20.gif
diff --git a/im-ui/src/assets/emoji/21.gif b/im-web/src/assets/emoji/21.gif
similarity index 100%
rename from im-ui/src/assets/emoji/21.gif
rename to im-web/src/assets/emoji/21.gif
diff --git a/im-ui/src/assets/emoji/22.gif b/im-web/src/assets/emoji/22.gif
similarity index 100%
rename from im-ui/src/assets/emoji/22.gif
rename to im-web/src/assets/emoji/22.gif
diff --git a/im-ui/src/assets/emoji/23.gif b/im-web/src/assets/emoji/23.gif
similarity index 100%
rename from im-ui/src/assets/emoji/23.gif
rename to im-web/src/assets/emoji/23.gif
diff --git a/im-ui/src/assets/emoji/24.gif b/im-web/src/assets/emoji/24.gif
similarity index 100%
rename from im-ui/src/assets/emoji/24.gif
rename to im-web/src/assets/emoji/24.gif
diff --git a/im-ui/src/assets/emoji/25.gif b/im-web/src/assets/emoji/25.gif
similarity index 100%
rename from im-ui/src/assets/emoji/25.gif
rename to im-web/src/assets/emoji/25.gif
diff --git a/im-ui/src/assets/emoji/26.gif b/im-web/src/assets/emoji/26.gif
similarity index 100%
rename from im-ui/src/assets/emoji/26.gif
rename to im-web/src/assets/emoji/26.gif
diff --git a/im-ui/src/assets/emoji/27.gif b/im-web/src/assets/emoji/27.gif
similarity index 100%
rename from im-ui/src/assets/emoji/27.gif
rename to im-web/src/assets/emoji/27.gif
diff --git a/im-ui/src/assets/emoji/28.gif b/im-web/src/assets/emoji/28.gif
similarity index 100%
rename from im-ui/src/assets/emoji/28.gif
rename to im-web/src/assets/emoji/28.gif
diff --git a/im-ui/src/assets/emoji/29.gif b/im-web/src/assets/emoji/29.gif
similarity index 100%
rename from im-ui/src/assets/emoji/29.gif
rename to im-web/src/assets/emoji/29.gif
diff --git a/im-ui/src/assets/emoji/3.gif b/im-web/src/assets/emoji/3.gif
similarity index 100%
rename from im-ui/src/assets/emoji/3.gif
rename to im-web/src/assets/emoji/3.gif
diff --git a/im-ui/src/assets/emoji/30.gif b/im-web/src/assets/emoji/30.gif
similarity index 100%
rename from im-ui/src/assets/emoji/30.gif
rename to im-web/src/assets/emoji/30.gif
diff --git a/im-ui/src/assets/emoji/31.gif b/im-web/src/assets/emoji/31.gif
similarity index 100%
rename from im-ui/src/assets/emoji/31.gif
rename to im-web/src/assets/emoji/31.gif
diff --git a/im-ui/src/assets/emoji/32.gif b/im-web/src/assets/emoji/32.gif
similarity index 100%
rename from im-ui/src/assets/emoji/32.gif
rename to im-web/src/assets/emoji/32.gif
diff --git a/im-ui/src/assets/emoji/33.gif b/im-web/src/assets/emoji/33.gif
similarity index 100%
rename from im-ui/src/assets/emoji/33.gif
rename to im-web/src/assets/emoji/33.gif
diff --git a/im-ui/src/assets/emoji/34.gif b/im-web/src/assets/emoji/34.gif
similarity index 100%
rename from im-ui/src/assets/emoji/34.gif
rename to im-web/src/assets/emoji/34.gif
diff --git a/im-ui/src/assets/emoji/35.gif b/im-web/src/assets/emoji/35.gif
similarity index 100%
rename from im-ui/src/assets/emoji/35.gif
rename to im-web/src/assets/emoji/35.gif
diff --git a/im-ui/src/assets/emoji/36.gif b/im-web/src/assets/emoji/36.gif
similarity index 100%
rename from im-ui/src/assets/emoji/36.gif
rename to im-web/src/assets/emoji/36.gif
diff --git a/im-ui/src/assets/emoji/37.gif b/im-web/src/assets/emoji/37.gif
similarity index 100%
rename from im-ui/src/assets/emoji/37.gif
rename to im-web/src/assets/emoji/37.gif
diff --git a/im-ui/src/assets/emoji/38.gif b/im-web/src/assets/emoji/38.gif
similarity index 100%
rename from im-ui/src/assets/emoji/38.gif
rename to im-web/src/assets/emoji/38.gif
diff --git a/im-ui/src/assets/emoji/39.gif b/im-web/src/assets/emoji/39.gif
similarity index 100%
rename from im-ui/src/assets/emoji/39.gif
rename to im-web/src/assets/emoji/39.gif
diff --git a/im-ui/src/assets/emoji/4.gif b/im-web/src/assets/emoji/4.gif
similarity index 100%
rename from im-ui/src/assets/emoji/4.gif
rename to im-web/src/assets/emoji/4.gif
diff --git a/im-ui/src/assets/emoji/40.gif b/im-web/src/assets/emoji/40.gif
similarity index 100%
rename from im-ui/src/assets/emoji/40.gif
rename to im-web/src/assets/emoji/40.gif
diff --git a/im-ui/src/assets/emoji/41.gif b/im-web/src/assets/emoji/41.gif
similarity index 100%
rename from im-ui/src/assets/emoji/41.gif
rename to im-web/src/assets/emoji/41.gif
diff --git a/im-ui/src/assets/emoji/42.gif b/im-web/src/assets/emoji/42.gif
similarity index 100%
rename from im-ui/src/assets/emoji/42.gif
rename to im-web/src/assets/emoji/42.gif
diff --git a/im-ui/src/assets/emoji/43.gif b/im-web/src/assets/emoji/43.gif
similarity index 100%
rename from im-ui/src/assets/emoji/43.gif
rename to im-web/src/assets/emoji/43.gif
diff --git a/im-ui/src/assets/emoji/44.gif b/im-web/src/assets/emoji/44.gif
similarity index 100%
rename from im-ui/src/assets/emoji/44.gif
rename to im-web/src/assets/emoji/44.gif
diff --git a/im-ui/src/assets/emoji/45.gif b/im-web/src/assets/emoji/45.gif
similarity index 100%
rename from im-ui/src/assets/emoji/45.gif
rename to im-web/src/assets/emoji/45.gif
diff --git a/im-ui/src/assets/emoji/46.gif b/im-web/src/assets/emoji/46.gif
similarity index 100%
rename from im-ui/src/assets/emoji/46.gif
rename to im-web/src/assets/emoji/46.gif
diff --git a/im-ui/src/assets/emoji/47.gif b/im-web/src/assets/emoji/47.gif
similarity index 100%
rename from im-ui/src/assets/emoji/47.gif
rename to im-web/src/assets/emoji/47.gif
diff --git a/im-ui/src/assets/emoji/48.gif b/im-web/src/assets/emoji/48.gif
similarity index 100%
rename from im-ui/src/assets/emoji/48.gif
rename to im-web/src/assets/emoji/48.gif
diff --git a/im-ui/src/assets/emoji/49.gif b/im-web/src/assets/emoji/49.gif
similarity index 100%
rename from im-ui/src/assets/emoji/49.gif
rename to im-web/src/assets/emoji/49.gif
diff --git a/im-ui/src/assets/emoji/5.gif b/im-web/src/assets/emoji/5.gif
similarity index 100%
rename from im-ui/src/assets/emoji/5.gif
rename to im-web/src/assets/emoji/5.gif
diff --git a/im-ui/src/assets/emoji/50.gif b/im-web/src/assets/emoji/50.gif
similarity index 100%
rename from im-ui/src/assets/emoji/50.gif
rename to im-web/src/assets/emoji/50.gif
diff --git a/im-ui/src/assets/emoji/51.gif b/im-web/src/assets/emoji/51.gif
similarity index 100%
rename from im-ui/src/assets/emoji/51.gif
rename to im-web/src/assets/emoji/51.gif
diff --git a/im-ui/src/assets/emoji/52.gif b/im-web/src/assets/emoji/52.gif
similarity index 100%
rename from im-ui/src/assets/emoji/52.gif
rename to im-web/src/assets/emoji/52.gif
diff --git a/im-ui/src/assets/emoji/53.gif b/im-web/src/assets/emoji/53.gif
similarity index 100%
rename from im-ui/src/assets/emoji/53.gif
rename to im-web/src/assets/emoji/53.gif
diff --git a/im-ui/src/assets/emoji/54.gif b/im-web/src/assets/emoji/54.gif
similarity index 100%
rename from im-ui/src/assets/emoji/54.gif
rename to im-web/src/assets/emoji/54.gif
diff --git a/im-ui/src/assets/emoji/55.gif b/im-web/src/assets/emoji/55.gif
similarity index 100%
rename from im-ui/src/assets/emoji/55.gif
rename to im-web/src/assets/emoji/55.gif
diff --git a/im-ui/src/assets/emoji/56.gif b/im-web/src/assets/emoji/56.gif
similarity index 100%
rename from im-ui/src/assets/emoji/56.gif
rename to im-web/src/assets/emoji/56.gif
diff --git a/im-ui/src/assets/emoji/6.gif b/im-web/src/assets/emoji/6.gif
similarity index 100%
rename from im-ui/src/assets/emoji/6.gif
rename to im-web/src/assets/emoji/6.gif
diff --git a/im-ui/src/assets/emoji/7.gif b/im-web/src/assets/emoji/7.gif
similarity index 100%
rename from im-ui/src/assets/emoji/7.gif
rename to im-web/src/assets/emoji/7.gif
diff --git a/im-ui/src/assets/emoji/8.gif b/im-web/src/assets/emoji/8.gif
similarity index 100%
rename from im-ui/src/assets/emoji/8.gif
rename to im-web/src/assets/emoji/8.gif
diff --git a/im-ui/src/assets/emoji/9.gif b/im-web/src/assets/emoji/9.gif
similarity index 100%
rename from im-ui/src/assets/emoji/9.gif
rename to im-web/src/assets/emoji/9.gif
diff --git a/im-ui/src/assets/iconfont/iconfont.css b/im-web/src/assets/iconfont/iconfont.css
similarity index 100%
rename from im-ui/src/assets/iconfont/iconfont.css
rename to im-web/src/assets/iconfont/iconfont.css
diff --git a/im-ui/src/assets/iconfont/iconfont.ttf b/im-web/src/assets/iconfont/iconfont.ttf
similarity index 100%
rename from im-ui/src/assets/iconfont/iconfont.ttf
rename to im-web/src/assets/iconfont/iconfont.ttf
diff --git a/im-ui/src/assets/image/icp_logo.png b/im-web/src/assets/image/icp_logo.png
similarity index 100%
rename from im-ui/src/assets/image/icp_logo.png
rename to im-web/src/assets/image/icp_logo.png
diff --git a/im-ui/src/assets/image/online_app.png b/im-web/src/assets/image/online_app.png
similarity index 100%
rename from im-ui/src/assets/image/online_app.png
rename to im-web/src/assets/image/online_app.png
diff --git a/im-ui/src/assets/image/online_web.png b/im-web/src/assets/image/online_web.png
similarity index 100%
rename from im-ui/src/assets/image/online_web.png
rename to im-web/src/assets/image/online_web.png
diff --git a/im-ui/src/assets/style/global.css b/im-web/src/assets/style/global.css
similarity index 93%
rename from im-ui/src/assets/style/global.css
rename to im-web/src/assets/style/global.css
index fc63060..ce8be83 100644
--- a/im-ui/src/assets/style/global.css
+++ b/im-web/src/assets/style/global.css
@@ -1,43 +1,43 @@
-@charset "UTF-8";
-
-html {
- height: 100%;
- overflow: hidden;
-
-}
-
-body {
- height: 100%;
- margin: 0;
- overflow: hidden;
-
-}
-
-section {
- height: 100%;
-}
-
-.el-dialog__body{
- padding: 10px 15px !important;
-}
-
-::-webkit-scrollbar {
- width: 6px;
- height: 1px;
-}
-
-::-webkit-scrollbar-thumb {
- /*滚动条里面小方块*/
- border-radius: 2px;
- -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
- background: #535353;
-}
-
-::-webkit-scrollbar-track {
- /*滚动条里面轨道*/
- -webkit-box-shadow: inset 0 0 5px transparent;
- border-radius: 2px;
- background: #ededed;
-}
-
-/*# sourceMappingURL=v-im.cssss.map */
+@charset "UTF-8";
+
+html {
+ height: 100%;
+ overflow: hidden;
+
+}
+
+body {
+ height: 100%;
+ margin: 0;
+ overflow: hidden;
+
+}
+
+section {
+ height: 100%;
+}
+
+.el-dialog__body{
+ padding: 10px 15px !important;
+}
+
+::-webkit-scrollbar {
+ width: 6px;
+ height: 1px;
+}
+
+::-webkit-scrollbar-thumb {
+ /*滚动条里面小方块*/
+ border-radius: 2px;
+ -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+ background: #535353;
+}
+
+::-webkit-scrollbar-track {
+ /*滚动条里面轨道*/
+ -webkit-box-shadow: inset 0 0 5px transparent;
+ border-radius: 2px;
+ background: #ededed;
+}
+
+/*# sourceMappingURL=v-im.cssss.map */
diff --git a/im-ui/src/components/chat/ChatAtBox.vue b/im-web/src/components/chat/ChatAtBox.vue
similarity index 100%
rename from im-ui/src/components/chat/ChatAtBox.vue
rename to im-web/src/components/chat/ChatAtBox.vue
diff --git a/im-ui/src/components/chat/ChatBox.vue b/im-web/src/components/chat/ChatBox.vue
similarity index 100%
rename from im-ui/src/components/chat/ChatBox.vue
rename to im-web/src/components/chat/ChatBox.vue
diff --git a/im-ui/src/components/chat/ChatGroupMember.vue b/im-web/src/components/chat/ChatGroupMember.vue
similarity index 100%
rename from im-ui/src/components/chat/ChatGroupMember.vue
rename to im-web/src/components/chat/ChatGroupMember.vue
diff --git a/im-ui/src/components/chat/ChatGroupReaded.vue b/im-web/src/components/chat/ChatGroupReaded.vue
similarity index 100%
rename from im-ui/src/components/chat/ChatGroupReaded.vue
rename to im-web/src/components/chat/ChatGroupReaded.vue
diff --git a/im-ui/src/components/chat/ChatGroupSide.vue b/im-web/src/components/chat/ChatGroupSide.vue
similarity index 100%
rename from im-ui/src/components/chat/ChatGroupSide.vue
rename to im-web/src/components/chat/ChatGroupSide.vue
diff --git a/im-ui/src/components/chat/ChatHistory.vue b/im-web/src/components/chat/ChatHistory.vue
similarity index 100%
rename from im-ui/src/components/chat/ChatHistory.vue
rename to im-web/src/components/chat/ChatHistory.vue
diff --git a/im-ui/src/components/chat/ChatItem.vue b/im-web/src/components/chat/ChatItem.vue
similarity index 100%
rename from im-ui/src/components/chat/ChatItem.vue
rename to im-web/src/components/chat/ChatItem.vue
diff --git a/im-ui/src/components/chat/ChatMessageItem.vue b/im-web/src/components/chat/ChatMessageItem.vue
similarity index 100%
rename from im-ui/src/components/chat/ChatMessageItem.vue
rename to im-web/src/components/chat/ChatMessageItem.vue
diff --git a/im-ui/src/components/chat/ChatRecord.vue b/im-web/src/components/chat/ChatRecord.vue
similarity index 100%
rename from im-ui/src/components/chat/ChatRecord.vue
rename to im-web/src/components/chat/ChatRecord.vue
diff --git a/im-ui/src/components/common/Emotion.vue b/im-web/src/components/common/Emotion.vue
similarity index 100%
rename from im-ui/src/components/common/Emotion.vue
rename to im-web/src/components/common/Emotion.vue
diff --git a/im-ui/src/components/common/FileUpload.vue b/im-web/src/components/common/FileUpload.vue
similarity index 100%
rename from im-ui/src/components/common/FileUpload.vue
rename to im-web/src/components/common/FileUpload.vue
diff --git a/im-ui/src/components/common/FullImage.vue b/im-web/src/components/common/FullImage.vue
similarity index 100%
rename from im-ui/src/components/common/FullImage.vue
rename to im-web/src/components/common/FullImage.vue
diff --git a/im-ui/src/components/common/HeadImage.vue b/im-web/src/components/common/HeadImage.vue
similarity index 100%
rename from im-ui/src/components/common/HeadImage.vue
rename to im-web/src/components/common/HeadImage.vue
diff --git a/im-ui/src/components/common/Icp.vue b/im-web/src/components/common/Icp.vue
similarity index 100%
rename from im-ui/src/components/common/Icp.vue
rename to im-web/src/components/common/Icp.vue
diff --git a/im-ui/src/components/common/RightMenu.vue b/im-web/src/components/common/RightMenu.vue
similarity index 100%
rename from im-ui/src/components/common/RightMenu.vue
rename to im-web/src/components/common/RightMenu.vue
diff --git a/im-ui/src/components/common/UserInfo.vue b/im-web/src/components/common/UserInfo.vue
similarity index 100%
rename from im-ui/src/components/common/UserInfo.vue
rename to im-web/src/components/common/UserInfo.vue
diff --git a/im-ui/src/components/friend/AddFriend.vue b/im-web/src/components/friend/AddFriend.vue
similarity index 100%
rename from im-ui/src/components/friend/AddFriend.vue
rename to im-web/src/components/friend/AddFriend.vue
diff --git a/im-ui/src/components/friend/FriendItem.vue b/im-web/src/components/friend/FriendItem.vue
similarity index 100%
rename from im-ui/src/components/friend/FriendItem.vue
rename to im-web/src/components/friend/FriendItem.vue
diff --git a/im-ui/src/components/group/AddGroupMember.vue b/im-web/src/components/group/AddGroupMember.vue
similarity index 100%
rename from im-ui/src/components/group/AddGroupMember.vue
rename to im-web/src/components/group/AddGroupMember.vue
diff --git a/im-ui/src/components/group/GroupItem.vue b/im-web/src/components/group/GroupItem.vue
similarity index 100%
rename from im-ui/src/components/group/GroupItem.vue
rename to im-web/src/components/group/GroupItem.vue
diff --git a/im-ui/src/components/group/GroupMember.vue b/im-web/src/components/group/GroupMember.vue
similarity index 100%
rename from im-ui/src/components/group/GroupMember.vue
rename to im-web/src/components/group/GroupMember.vue
diff --git a/im-ui/src/components/group/GroupMemberItem.vue b/im-web/src/components/group/GroupMemberItem.vue
similarity index 100%
rename from im-ui/src/components/group/GroupMemberItem.vue
rename to im-web/src/components/group/GroupMemberItem.vue
diff --git a/im-ui/src/components/group/GroupMemberSelector.vue b/im-web/src/components/group/GroupMemberSelector.vue
similarity index 100%
rename from im-ui/src/components/group/GroupMemberSelector.vue
rename to im-web/src/components/group/GroupMemberSelector.vue
diff --git a/im-ui/src/components/rtc/RtcGroupJoin.vue b/im-web/src/components/rtc/RtcGroupJoin.vue
similarity index 100%
rename from im-ui/src/components/rtc/RtcGroupJoin.vue
rename to im-web/src/components/rtc/RtcGroupJoin.vue
diff --git a/im-ui/src/components/rtc/RtcGroupVideo.vue b/im-web/src/components/rtc/RtcGroupVideo.vue
similarity index 100%
rename from im-ui/src/components/rtc/RtcGroupVideo.vue
rename to im-web/src/components/rtc/RtcGroupVideo.vue
diff --git a/im-ui/src/components/rtc/RtcPrivateAcceptor.vue b/im-web/src/components/rtc/RtcPrivateAcceptor.vue
similarity index 100%
rename from im-ui/src/components/rtc/RtcPrivateAcceptor.vue
rename to im-web/src/components/rtc/RtcPrivateAcceptor.vue
diff --git a/im-ui/src/components/rtc/RtcPrivateVideo.vue b/im-web/src/components/rtc/RtcPrivateVideo.vue
similarity index 100%
rename from im-ui/src/components/rtc/RtcPrivateVideo.vue
rename to im-web/src/components/rtc/RtcPrivateVideo.vue
diff --git a/im-ui/src/components/setting/Setting.vue b/im-web/src/components/setting/Setting.vue
similarity index 100%
rename from im-ui/src/components/setting/Setting.vue
rename to im-web/src/components/setting/Setting.vue
diff --git a/im-ui/src/main.js b/im-web/src/main.js
similarity index 96%
rename from im-ui/src/main.js
rename to im-web/src/main.js
index cf6411c..f10f109 100644
--- a/im-ui/src/main.js
+++ b/im-web/src/main.js
@@ -1,35 +1,35 @@
-import Vue from 'vue'
-import App from './App'
-import router from './router'
-import ElementUI from 'element-ui';
-import 'element-ui/lib/theme-chalk/index.css';
-import './assets/iconfont/iconfont.css';
-import httpRequest from './api/httpRequest';
-import * as socketApi from './api/wssocket';
-import * as messageType from './api/messageType';
-import emotion from './api/emotion.js';
-import element from './api/element.js';
-import store from './store';
-import * as enums from './api/enums.js';
-import * as date from './api/date.js';
-import './utils/directive/dialogDrag';
-
-Vue.use(ElementUI);
-// 挂载全局
-Vue.prototype.$wsApi = socketApi;
-Vue.prototype.$msgType = messageType
-Vue.prototype.$date = date;
-Vue.prototype.$http = httpRequest // http请求方法
-Vue.prototype.$emo = emotion; // emo表情
-Vue.prototype.$elm = element; // 元素操作
-Vue.prototype.$enums = enums; // 枚举
-Vue.prototype.$eventBus = new Vue(); // 全局事件
-Vue.config.productionTip = false;
-
-new Vue({
- el: '#app',
- // 配置路由
- router,
- store,
- render: h=>h(App)
-})
+import Vue from 'vue'
+import App from './App'
+import router from './router'
+import ElementUI from 'element-ui';
+import 'element-ui/lib/theme-chalk/index.css';
+import './assets/iconfont/iconfont.css';
+import httpRequest from './api/httpRequest';
+import * as socketApi from './api/wssocket';
+import * as messageType from './api/messageType';
+import emotion from './api/emotion.js';
+import element from './api/element.js';
+import store from './store';
+import * as enums from './api/enums.js';
+import * as date from './api/date.js';
+import './utils/directive/dialogDrag';
+
+Vue.use(ElementUI);
+// 挂载全局
+Vue.prototype.$wsApi = socketApi;
+Vue.prototype.$msgType = messageType
+Vue.prototype.$date = date;
+Vue.prototype.$http = httpRequest // http请求方法
+Vue.prototype.$emo = emotion; // emo表情
+Vue.prototype.$elm = element; // 元素操作
+Vue.prototype.$enums = enums; // 枚举
+Vue.prototype.$eventBus = new Vue(); // 全局事件
+Vue.config.productionTip = false;
+
+new Vue({
+ el: '#app',
+ // 配置路由
+ router,
+ store,
+ render: h=>h(App)
+})
diff --git a/im-ui/src/router/index.js b/im-web/src/router/index.js
similarity index 94%
rename from im-ui/src/router/index.js
rename to im-web/src/router/index.js
index 0925f66..632d307 100644
--- a/im-ui/src/router/index.js
+++ b/im-web/src/router/index.js
@@ -1,49 +1,49 @@
-import Vue from 'vue'
-import VueRouter from 'vue-router'
-import Login from '../view/Login'
-import Register from '../view/Register'
-import Home from '../view/Home'
-// 安装路由
-Vue.use(VueRouter);
-
-// 配置导出路由
-export default new VueRouter({
- routes: [{
- path: "/",
- redirect: "/login"
- },
- {
- name: "Login",
- path: '/login',
- component: Login
- },
- {
- name: "Register",
- path: '/register',
- component: Register
- },
- {
- name: "Home",
- path: '/home',
- component: Home,
- children:[
- {
- name: "Chat",
- path: "/home/chat",
- component: () => import("../view/Chat"),
- },
- {
- name: "Friends",
- path: "/home/friend",
- component: () => import("../view/Friend"),
- },
- {
- name: "Friends",
- path: "/home/group",
- component: () => import("../view/Group"),
- }
- ]
- }
- ]
-
-});
+import Vue from 'vue'
+import VueRouter from 'vue-router'
+import Login from '../view/Login'
+import Register from '../view/Register'
+import Home from '../view/Home'
+// 安装路由
+Vue.use(VueRouter);
+
+// 配置导出路由
+export default new VueRouter({
+ routes: [{
+ path: "/",
+ redirect: "/login"
+ },
+ {
+ name: "Login",
+ path: '/login',
+ component: Login
+ },
+ {
+ name: "Register",
+ path: '/register',
+ component: Register
+ },
+ {
+ name: "Home",
+ path: '/home',
+ component: Home,
+ children:[
+ {
+ name: "Chat",
+ path: "/home/chat",
+ component: () => import("../view/Chat"),
+ },
+ {
+ name: "Friends",
+ path: "/home/friend",
+ component: () => import("../view/Friend"),
+ },
+ {
+ name: "Friends",
+ path: "/home/group",
+ component: () => import("../view/Group"),
+ }
+ ]
+ }
+ ]
+
+});
diff --git a/im-ui/src/ssl/cert.crt b/im-web/src/ssl/cert.crt
similarity index 100%
rename from im-ui/src/ssl/cert.crt
rename to im-web/src/ssl/cert.crt
diff --git a/im-ui/src/ssl/cert.key b/im-web/src/ssl/cert.key
similarity index 100%
rename from im-ui/src/ssl/cert.key
rename to im-web/src/ssl/cert.key
diff --git a/im-ui/src/store/chatStore.js b/im-web/src/store/chatStore.js
similarity index 96%
rename from im-ui/src/store/chatStore.js
rename to im-web/src/store/chatStore.js
index 5fbdccf..826c2db 100644
--- a/im-ui/src/store/chatStore.js
+++ b/im-web/src/store/chatStore.js
@@ -1,369 +1,369 @@
-import { MESSAGE_TYPE, MESSAGE_STATUS } from "../api/enums.js"
-import userStore from './userStore';
-import localForage from 'localforage';
-
-/* 为了加速拉取离线消息效率,拉取时消息暂时存储到cacheChats,等
-待所有离线消息拉取完成后,再统一放至vuex中进行渲染*/
-let cacheChats = [];
-
-export default {
- state: {
- activeChat: null,
- privateMsgMaxId: 0,
- groupMsgMaxId: 0,
- loadingPrivateMsg: false,
- loadingGroupMsg: false,
- chats: []
- },
-
- mutations: {
- initChats(state, chatsData) {
- state.chats = [];
- state.privateMsgMaxId = chatsData.privateMsgMaxId || 0;
- state.groupMsgMaxId = chatsData.groupMsgMaxId || 0;
- cacheChats = chatsData.chats||[];
- // 防止图片一直处在加载中状态
- cacheChats.forEach((chat) => {
- chat.messages.forEach((msg) => {
- if (msg.loadStatus == "loading") {
- msg.loadStatus = "fail"
- }
- })
- })
- },
- openChat(state, chatInfo) {
- let chats = this.getters.findChats()
- let chat = null;
- for (let idx in chats) {
- if (chats[idx].type == chatInfo.type &&
- chats[idx].targetId === chatInfo.targetId) {
- chat = chats[idx];
- // 放置头部
- this.commit("moveTop", idx)
- break;
- }
- }
- // 创建会话
- if (chat == null) {
- chat = {
- targetId: chatInfo.targetId,
- type: chatInfo.type,
- showName: chatInfo.showName,
- headImage: chatInfo.headImage,
- lastContent: "",
- lastSendTime: new Date().getTime(),
- unreadCount: 0,
- messages: [],
- atMe: false,
- atAll: false
- };
- chats.unshift(chat);
- }
- },
- activeChat(state, idx) {
- let chats = this.getters.findChats();
- state.activeChat = chats[idx];
- },
- resetUnreadCount(state, chatInfo) {
- let chats = this.getters.findChats();
- for (let idx in chats) {
- if (chats[idx].type == chatInfo.type &&
- chats[idx].targetId == chatInfo.targetId) {
- chats[idx].unreadCount = 0;
- chats[idx].atMe = false;
- chats[idx].atAll = false;
- }
- }
- this.commit("saveToStorage");
- },
- readedMessage(state, pos) {
- let chats = this.getters.findChats();
- for (let idx in chats) {
- if (chats[idx].type == 'PRIVATE' &&
- chats[idx].targetId == pos.friendId) {
- chats[idx].messages.forEach((m) => {
- if (m.selfSend && m.status != MESSAGE_STATUS.RECALL) {
- // pos.maxId为空表示整个会话已读
- if (!pos.maxId || m.id <= pos.maxId) {
- m.status = MESSAGE_STATUS.READED
- }
-
- }
- })
- }
- }
- this.commit("saveToStorage");
- },
- removeChat(state, idx) {
- let chats = this.getters.findChats();
- if (chats[idx] == state.activeChat) {
- state.activeChat = null;
- }
- chats.splice(idx, 1);
- this.commit("saveToStorage");
- },
- moveTop(state, idx) {
- // 加载中不移动,很耗性能
- if (this.getters.isLoading()) {
- return;
- }
- if (idx > 0) {
- let chats = this.getters.findChats();
- let chat = chats[idx];
- chats.splice(idx, 1);
- chats.unshift(chat);
- this.commit("saveToStorage");
- }
- },
- removePrivateChat(state, friendId) {
- let chats = this.getters.findChats();
- for (let idx in chats) {
- if (chats[idx].type == 'PRIVATE' &&
- chats[idx].targetId == friendId) {
- this.commit("removeChat", idx);
- }
- }
- },
- insertMessage(state, msgInfo) {
- let type = msgInfo.groupId ? 'GROUP' : 'PRIVATE';
- // 记录消息的最大id
- if (msgInfo.id && type == "PRIVATE" && msgInfo.id > state.privateMsgMaxId) {
- state.privateMsgMaxId = msgInfo.id;
- }
- if (msgInfo.id && type == "GROUP" && msgInfo.id > state.groupMsgMaxId) {
- state.groupMsgMaxId = msgInfo.id;
- }
- // 如果是已存在消息,则覆盖旧的消息数据
- let chat = this.getters.findChat(msgInfo);
- let message = this.getters.findMessage(chat, msgInfo);
- if (message) {
- Object.assign(message, msgInfo);
- // 撤回消息需要显示
- if (msgInfo.type == MESSAGE_TYPE.RECALL) {
- chat.lastContent = msgInfo.content;
- }
- this.commit("saveToStorage");
- return;
- }
- // 插入新的数据
- if (msgInfo.type == MESSAGE_TYPE.IMAGE) {
- chat.lastContent = "[图片]";
- } else if (msgInfo.type == MESSAGE_TYPE.FILE) {
- chat.lastContent = "[文件]";
- } else if (msgInfo.type == MESSAGE_TYPE.AUDIO) {
- chat.lastContent = "[语音]";
- } else if (msgInfo.type == MESSAGE_TYPE.TEXT ||
- msgInfo.type == MESSAGE_TYPE.RECALL ||
- msgInfo.type == MESSAGE_TYPE.TIP_TEXT) {
- chat.lastContent = msgInfo.content;
- } else if (msgInfo.type == MESSAGE_TYPE.ACT_RT_VOICE) {
- chat.lastContent = "[语音通话]";
- } else if (msgInfo.type == MESSAGE_TYPE.ACT_RT_VIDEO) {
- chat.lastContent = "[视频通话]";
- }
- chat.lastSendTime = msgInfo.sendTime;
- chat.sendNickName = msgInfo.sendNickName;
- // 未读加1
- if (!msgInfo.selfSend && msgInfo.status != MESSAGE_STATUS.READED && msgInfo.type != MESSAGE_TYPE.TIP_TEXT) {
- chat.unreadCount++;
- }
- // 是否有人@我
- if (!msgInfo.selfSend && chat.type == "GROUP" && msgInfo.atUserIds &&
- msgInfo.status != MESSAGE_STATUS.READED) {
- let userId = userStore.state.userInfo.id;
- if (msgInfo.atUserIds.indexOf(userId) >= 0) {
- chat.atMe = true;
- }
- if (msgInfo.atUserIds.indexOf(-1) >= 0) {
- chat.atAll = true;
- }
- }
- // 间隔大于10分钟插入时间显示
- if (!chat.lastTimeTip || (chat.lastTimeTip < msgInfo.sendTime - 600 * 1000)) {
- chat.messages.push({
- sendTime: msgInfo.sendTime,
- type: MESSAGE_TYPE.TIP_TIME,
- });
- chat.lastTimeTip = msgInfo.sendTime;
- }
- // 根据id顺序插入,防止消息乱序
- let insertPos = chat.messages.length;
- // 防止 图片、文件 在发送方 显示 在顶端 因为还没存库,id=0
- if (msgInfo.id && msgInfo.id > 0) {
- for (let idx in chat.messages) {
- if (chat.messages[idx].id && msgInfo.id < chat.messages[idx].id) {
- insertPos = idx;
- console.log(`消息出现乱序,位置:${chat.messages.length},修正至:${insertPos}`);
- break;
- }
- }
- }
- chat.messages.splice(insertPos, 0, msgInfo);
- this.commit("saveToStorage");
- },
- updateMessage(state, msgInfo) {
- // 获取对方id或群id
- let chat = this.getters.findChat(msgInfo);
- let message = this.getters.findMessage(chat, msgInfo);
- if (message) {
- // 属性拷贝
- Object.assign(message, msgInfo);
- this.commit("saveToStorage");
- }
- },
- deleteMessage(state, msgInfo) {
- let chat = this.getters.findChat(msgInfo);
- for (let idx in chat.messages) {
- // 已经发送成功的,根据id删除
- if (chat.messages[idx].id && chat.messages[idx].id == msgInfo.id) {
- chat.messages.splice(idx, 1);
- break;
- }
- // 正在发送中的消息可能没有id,根据发送时间删除
- if (msgInfo.selfSend && chat.messages[idx].selfSend &&
- chat.messages[idx].sendTime == msgInfo.sendTime) {
- chat.messages.splice(idx, 1);
- break;
- }
- }
- this.commit("saveToStorage");
- },
- updateChatFromFriend(state, friend) {
- let chats = this.getters.findChats();
- for (let i in chats) {
- let chat = chats[i];
- if (chat.type == 'PRIVATE' && chat.targetId == friend.id) {
- chat.headImage = friend.headImageThumb;
- chat.showName = friend.nickName;
- break;
- }
- }
- this.commit("saveToStorage");
- },
- updateChatFromGroup(state, group) {
- let chats = this.getters.findChats();
- for (let i in chats) {
- let chat = chats[i];
- if (chat.type == 'GROUP' && chat.targetId == group.id) {
- chat.headImage = group.headImageThumb;
- chat.showName = group.showGroupName;
- break;
- }
- }
- this.commit("saveToStorage");
- },
- loadingPrivateMsg(state, loading) {
- state.loadingPrivateMsg = loading;
- if (!this.getters.isLoading()) {
- this.commit("refreshChats")
- }
- },
- loadingGroupMsg(state, loading) {
- state.loadingGroupMsg = loading;
- if (!this.getters.isLoading()) {
- this.commit("refreshChats")
- }
- },
- refreshChats(state) {
- // 排序
- cacheChats.sort((chat1, chat2) => {
- return chat2.lastSendTime - chat1.lastSendTime;
- });
- // 将消息一次性装载回来
- state.chats = cacheChats;
- // 断线重连后不能使用缓存模式,否则会导致聊天窗口的消息不刷新
- cacheChats = state.chats;
- this.commit("saveToStorage");
- },
- saveToStorage(state) {
- // 加载中不保存,防止卡顿
- if (this.getters.isLoading()) {
- return;
- }
- let userId = userStore.state.userInfo.id;
- let key = "chats-" + userId;
- let chatsData = {
- privateMsgMaxId: state.privateMsgMaxId,
- groupMsgMaxId: state.groupMsgMaxId,
- chats: state.chats
- }
- localForage.setItem(key, chatsData)
- },
- clear(state) {
- cacheChats = []
- state.chats = [];
- state.activeChat = null;
-
- }
- },
- actions: {
- loadChat(context) {
- return new Promise((resolve, reject) => {
- let userId = userStore.state.userInfo.id;
- let key = "chats-" + userId;
- localForage.getItem(key).then((item)=>{
- let chatsData = item;
- // 兼容历史数据,以后要删除
- if(!chatsData){
- chatsData = JSON.parse(localStorage.getItem(key));
- }
- if (chatsData) {
- context.commit("initChats", chatsData);
- }
- resolve();
- }).catch(()=>{
- reject();
- })
- })
- }
- },
- getters: {
- isLoading: (state) => () => {
- return state.loadingPrivateMsg || state.loadingGroupMsg
- },
- findChats: (state, getters) => () => {
- return getters.isLoading() ? cacheChats : state.chats;
- },
- findChatIdx: (state, getters) => (chat) => {
- let chats = getters.findChats();
- for (let idx in chats) {
- if (chats[idx].type == chat.type &&
- chats[idx].targetId === chat.targetId) {
- chat = chats[idx];
- return idx
- }
- }
- },
- findChat: (state, getters) => (msgInfo) => {
- let chats = getters.findChats();
- // 获取对方id或群id
- let type = msgInfo.groupId ? 'GROUP' : 'PRIVATE';
- let targetId = msgInfo.groupId ? msgInfo.groupId : msgInfo.selfSend ? msgInfo.recvId : msgInfo.sendId;
- let chat = null;
- for (let idx in chats) {
- if (chats[idx].type == type &&
- chats[idx].targetId === targetId) {
- chat = chats[idx];
- break;
- }
- }
- return chat;
- },
- findMessage: (state) => (chat, msgInfo) => {
- if (!chat) {
- return null;
- }
- for (let idx in chat.messages) {
- // 通过id判断
- if (msgInfo.id && chat.messages[idx].id == msgInfo.id) {
- return chat.messages[idx];
- }
- // 正在发送中的消息可能没有id,只有tmpId
- if (msgInfo.tmpId && chat.messages[idx].tmpId &&
- chat.messages[idx].tmpId == msgInfo.tmpId) {
- return chat.messages[idx];
- }
- }
- }
- }
+import { MESSAGE_TYPE, MESSAGE_STATUS } from "../api/enums.js"
+import userStore from './userStore';
+import localForage from 'localforage';
+
+/* 为了加速拉取离线消息效率,拉取时消息暂时存储到cacheChats,等
+待所有离线消息拉取完成后,再统一放至vuex中进行渲染*/
+let cacheChats = [];
+
+export default {
+ state: {
+ activeChat: null,
+ privateMsgMaxId: 0,
+ groupMsgMaxId: 0,
+ loadingPrivateMsg: false,
+ loadingGroupMsg: false,
+ chats: []
+ },
+
+ mutations: {
+ initChats(state, chatsData) {
+ state.chats = [];
+ state.privateMsgMaxId = chatsData.privateMsgMaxId || 0;
+ state.groupMsgMaxId = chatsData.groupMsgMaxId || 0;
+ cacheChats = chatsData.chats||[];
+ // 防止图片一直处在加载中状态
+ cacheChats.forEach((chat) => {
+ chat.messages.forEach((msg) => {
+ if (msg.loadStatus == "loading") {
+ msg.loadStatus = "fail"
+ }
+ })
+ })
+ },
+ openChat(state, chatInfo) {
+ let chats = this.getters.findChats()
+ let chat = null;
+ for (let idx in chats) {
+ if (chats[idx].type == chatInfo.type &&
+ chats[idx].targetId === chatInfo.targetId) {
+ chat = chats[idx];
+ // 放置头部
+ this.commit("moveTop", idx)
+ break;
+ }
+ }
+ // 创建会话
+ if (chat == null) {
+ chat = {
+ targetId: chatInfo.targetId,
+ type: chatInfo.type,
+ showName: chatInfo.showName,
+ headImage: chatInfo.headImage,
+ lastContent: "",
+ lastSendTime: new Date().getTime(),
+ unreadCount: 0,
+ messages: [],
+ atMe: false,
+ atAll: false
+ };
+ chats.unshift(chat);
+ }
+ },
+ activeChat(state, idx) {
+ let chats = this.getters.findChats();
+ state.activeChat = chats[idx];
+ },
+ resetUnreadCount(state, chatInfo) {
+ let chats = this.getters.findChats();
+ for (let idx in chats) {
+ if (chats[idx].type == chatInfo.type &&
+ chats[idx].targetId == chatInfo.targetId) {
+ chats[idx].unreadCount = 0;
+ chats[idx].atMe = false;
+ chats[idx].atAll = false;
+ }
+ }
+ this.commit("saveToStorage");
+ },
+ readedMessage(state, pos) {
+ let chats = this.getters.findChats();
+ for (let idx in chats) {
+ if (chats[idx].type == 'PRIVATE' &&
+ chats[idx].targetId == pos.friendId) {
+ chats[idx].messages.forEach((m) => {
+ if (m.selfSend && m.status != MESSAGE_STATUS.RECALL) {
+ // pos.maxId为空表示整个会话已读
+ if (!pos.maxId || m.id <= pos.maxId) {
+ m.status = MESSAGE_STATUS.READED
+ }
+
+ }
+ })
+ }
+ }
+ this.commit("saveToStorage");
+ },
+ removeChat(state, idx) {
+ let chats = this.getters.findChats();
+ if (chats[idx] == state.activeChat) {
+ state.activeChat = null;
+ }
+ chats.splice(idx, 1);
+ this.commit("saveToStorage");
+ },
+ moveTop(state, idx) {
+ // 加载中不移动,很耗性能
+ if (this.getters.isLoading()) {
+ return;
+ }
+ if (idx > 0) {
+ let chats = this.getters.findChats();
+ let chat = chats[idx];
+ chats.splice(idx, 1);
+ chats.unshift(chat);
+ this.commit("saveToStorage");
+ }
+ },
+ removePrivateChat(state, friendId) {
+ let chats = this.getters.findChats();
+ for (let idx in chats) {
+ if (chats[idx].type == 'PRIVATE' &&
+ chats[idx].targetId == friendId) {
+ this.commit("removeChat", idx);
+ }
+ }
+ },
+ insertMessage(state, msgInfo) {
+ let type = msgInfo.groupId ? 'GROUP' : 'PRIVATE';
+ // 记录消息的最大id
+ if (msgInfo.id && type == "PRIVATE" && msgInfo.id > state.privateMsgMaxId) {
+ state.privateMsgMaxId = msgInfo.id;
+ }
+ if (msgInfo.id && type == "GROUP" && msgInfo.id > state.groupMsgMaxId) {
+ state.groupMsgMaxId = msgInfo.id;
+ }
+ // 如果是已存在消息,则覆盖旧的消息数据
+ let chat = this.getters.findChat(msgInfo);
+ let message = this.getters.findMessage(chat, msgInfo);
+ if (message) {
+ Object.assign(message, msgInfo);
+ // 撤回消息需要显示
+ if (msgInfo.type == MESSAGE_TYPE.RECALL) {
+ chat.lastContent = msgInfo.content;
+ }
+ this.commit("saveToStorage");
+ return;
+ }
+ // 插入新的数据
+ if (msgInfo.type == MESSAGE_TYPE.IMAGE) {
+ chat.lastContent = "[图片]";
+ } else if (msgInfo.type == MESSAGE_TYPE.FILE) {
+ chat.lastContent = "[文件]";
+ } else if (msgInfo.type == MESSAGE_TYPE.AUDIO) {
+ chat.lastContent = "[语音]";
+ } else if (msgInfo.type == MESSAGE_TYPE.TEXT ||
+ msgInfo.type == MESSAGE_TYPE.RECALL ||
+ msgInfo.type == MESSAGE_TYPE.TIP_TEXT) {
+ chat.lastContent = msgInfo.content;
+ } else if (msgInfo.type == MESSAGE_TYPE.ACT_RT_VOICE) {
+ chat.lastContent = "[语音通话]";
+ } else if (msgInfo.type == MESSAGE_TYPE.ACT_RT_VIDEO) {
+ chat.lastContent = "[视频通话]";
+ }
+ chat.lastSendTime = msgInfo.sendTime;
+ chat.sendNickName = msgInfo.sendNickName;
+ // 未读加1
+ if (!msgInfo.selfSend && msgInfo.status != MESSAGE_STATUS.READED && msgInfo.type != MESSAGE_TYPE.TIP_TEXT) {
+ chat.unreadCount++;
+ }
+ // 是否有人@我
+ if (!msgInfo.selfSend && chat.type == "GROUP" && msgInfo.atUserIds &&
+ msgInfo.status != MESSAGE_STATUS.READED) {
+ let userId = userStore.state.userInfo.id;
+ if (msgInfo.atUserIds.indexOf(userId) >= 0) {
+ chat.atMe = true;
+ }
+ if (msgInfo.atUserIds.indexOf(-1) >= 0) {
+ chat.atAll = true;
+ }
+ }
+ // 间隔大于10分钟插入时间显示
+ if (!chat.lastTimeTip || (chat.lastTimeTip < msgInfo.sendTime - 600 * 1000)) {
+ chat.messages.push({
+ sendTime: msgInfo.sendTime,
+ type: MESSAGE_TYPE.TIP_TIME,
+ });
+ chat.lastTimeTip = msgInfo.sendTime;
+ }
+ // 根据id顺序插入,防止消息乱序
+ let insertPos = chat.messages.length;
+ // 防止 图片、文件 在发送方 显示 在顶端 因为还没存库,id=0
+ if (msgInfo.id && msgInfo.id > 0) {
+ for (let idx in chat.messages) {
+ if (chat.messages[idx].id && msgInfo.id < chat.messages[idx].id) {
+ insertPos = idx;
+ console.log(`消息出现乱序,位置:${chat.messages.length},修正至:${insertPos}`);
+ break;
+ }
+ }
+ }
+ chat.messages.splice(insertPos, 0, msgInfo);
+ this.commit("saveToStorage");
+ },
+ updateMessage(state, msgInfo) {
+ // 获取对方id或群id
+ let chat = this.getters.findChat(msgInfo);
+ let message = this.getters.findMessage(chat, msgInfo);
+ if (message) {
+ // 属性拷贝
+ Object.assign(message, msgInfo);
+ this.commit("saveToStorage");
+ }
+ },
+ deleteMessage(state, msgInfo) {
+ let chat = this.getters.findChat(msgInfo);
+ for (let idx in chat.messages) {
+ // 已经发送成功的,根据id删除
+ if (chat.messages[idx].id && chat.messages[idx].id == msgInfo.id) {
+ chat.messages.splice(idx, 1);
+ break;
+ }
+ // 正在发送中的消息可能没有id,根据发送时间删除
+ if (msgInfo.selfSend && chat.messages[idx].selfSend &&
+ chat.messages[idx].sendTime == msgInfo.sendTime) {
+ chat.messages.splice(idx, 1);
+ break;
+ }
+ }
+ this.commit("saveToStorage");
+ },
+ updateChatFromFriend(state, friend) {
+ let chats = this.getters.findChats();
+ for (let i in chats) {
+ let chat = chats[i];
+ if (chat.type == 'PRIVATE' && chat.targetId == friend.id) {
+ chat.headImage = friend.headImageThumb;
+ chat.showName = friend.nickName;
+ break;
+ }
+ }
+ this.commit("saveToStorage");
+ },
+ updateChatFromGroup(state, group) {
+ let chats = this.getters.findChats();
+ for (let i in chats) {
+ let chat = chats[i];
+ if (chat.type == 'GROUP' && chat.targetId == group.id) {
+ chat.headImage = group.headImageThumb;
+ chat.showName = group.showGroupName;
+ break;
+ }
+ }
+ this.commit("saveToStorage");
+ },
+ loadingPrivateMsg(state, loading) {
+ state.loadingPrivateMsg = loading;
+ if (!this.getters.isLoading()) {
+ this.commit("refreshChats")
+ }
+ },
+ loadingGroupMsg(state, loading) {
+ state.loadingGroupMsg = loading;
+ if (!this.getters.isLoading()) {
+ this.commit("refreshChats")
+ }
+ },
+ refreshChats(state) {
+ // 排序
+ cacheChats.sort((chat1, chat2) => {
+ return chat2.lastSendTime - chat1.lastSendTime;
+ });
+ // 将消息一次性装载回来
+ state.chats = cacheChats;
+ // 断线重连后不能使用缓存模式,否则会导致聊天窗口的消息不刷新
+ cacheChats = state.chats;
+ this.commit("saveToStorage");
+ },
+ saveToStorage(state) {
+ // 加载中不保存,防止卡顿
+ if (this.getters.isLoading()) {
+ return;
+ }
+ let userId = userStore.state.userInfo.id;
+ let key = "chats-" + userId;
+ let chatsData = {
+ privateMsgMaxId: state.privateMsgMaxId,
+ groupMsgMaxId: state.groupMsgMaxId,
+ chats: state.chats
+ }
+ localForage.setItem(key, chatsData)
+ },
+ clear(state) {
+ cacheChats = []
+ state.chats = [];
+ state.activeChat = null;
+
+ }
+ },
+ actions: {
+ loadChat(context) {
+ return new Promise((resolve, reject) => {
+ let userId = userStore.state.userInfo.id;
+ let key = "chats-" + userId;
+ localForage.getItem(key).then((item)=>{
+ let chatsData = item;
+ // 兼容历史数据,以后要删除
+ if(!chatsData){
+ chatsData = JSON.parse(localStorage.getItem(key));
+ }
+ if (chatsData) {
+ context.commit("initChats", chatsData);
+ }
+ resolve();
+ }).catch(()=>{
+ reject();
+ })
+ })
+ }
+ },
+ getters: {
+ isLoading: (state) => () => {
+ return state.loadingPrivateMsg || state.loadingGroupMsg
+ },
+ findChats: (state, getters) => () => {
+ return getters.isLoading() ? cacheChats : state.chats;
+ },
+ findChatIdx: (state, getters) => (chat) => {
+ let chats = getters.findChats();
+ for (let idx in chats) {
+ if (chats[idx].type == chat.type &&
+ chats[idx].targetId === chat.targetId) {
+ chat = chats[idx];
+ return idx
+ }
+ }
+ },
+ findChat: (state, getters) => (msgInfo) => {
+ let chats = getters.findChats();
+ // 获取对方id或群id
+ let type = msgInfo.groupId ? 'GROUP' : 'PRIVATE';
+ let targetId = msgInfo.groupId ? msgInfo.groupId : msgInfo.selfSend ? msgInfo.recvId : msgInfo.sendId;
+ let chat = null;
+ for (let idx in chats) {
+ if (chats[idx].type == type &&
+ chats[idx].targetId === targetId) {
+ chat = chats[idx];
+ break;
+ }
+ }
+ return chat;
+ },
+ findMessage: (state) => (chat, msgInfo) => {
+ if (!chat) {
+ return null;
+ }
+ for (let idx in chat.messages) {
+ // 通过id判断
+ if (msgInfo.id && chat.messages[idx].id == msgInfo.id) {
+ return chat.messages[idx];
+ }
+ // 正在发送中的消息可能没有id,只有tmpId
+ if (msgInfo.tmpId && chat.messages[idx].tmpId &&
+ chat.messages[idx].tmpId == msgInfo.tmpId) {
+ return chat.messages[idx];
+ }
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/im-ui/src/store/configStore.js b/im-web/src/store/configStore.js
similarity index 100%
rename from im-ui/src/store/configStore.js
rename to im-web/src/store/configStore.js
diff --git a/im-ui/src/store/friendStore.js b/im-web/src/store/friendStore.js
similarity index 100%
rename from im-ui/src/store/friendStore.js
rename to im-web/src/store/friendStore.js
diff --git a/im-ui/src/store/groupStore.js b/im-web/src/store/groupStore.js
similarity index 100%
rename from im-ui/src/store/groupStore.js
rename to im-web/src/store/groupStore.js
diff --git a/im-ui/src/store/index.js b/im-web/src/store/index.js
similarity index 96%
rename from im-ui/src/store/index.js
rename to im-web/src/store/index.js
index 37426b5..346aa86 100644
--- a/im-ui/src/store/index.js
+++ b/im-web/src/store/index.js
@@ -1,33 +1,33 @@
-import Vue from 'vue';
-import Vuex from 'vuex';
-import chatStore from './chatStore.js';
-import friendStore from './friendStore.js';
-import userStore from './userStore.js';
-import groupStore from './groupStore.js';
-import configStore from './configStore.js';
-import uiStore from './uiStore.js';
-
-Vue.use(Vuex)
-
-export default new Vuex.Store({
- modules: {chatStore,friendStore,userStore,groupStore,configStore,uiStore},
- state: {},
- mutations: {
- },
- actions: {
- load(context) {
- return this.dispatch("loadUser").then(() => {
- const promises = [];
- promises.push(this.dispatch("loadFriend"));
- promises.push(this.dispatch("loadGroup"));
- promises.push(this.dispatch("loadChat"));
- promises.push(this.dispatch("loadConfig"));
- return Promise.all(promises);
- })
- },
- unload(context){
- context.commit("clear");
- }
- },
- strict: process.env.NODE_ENV !== 'production'
-})
+import Vue from 'vue';
+import Vuex from 'vuex';
+import chatStore from './chatStore.js';
+import friendStore from './friendStore.js';
+import userStore from './userStore.js';
+import groupStore from './groupStore.js';
+import configStore from './configStore.js';
+import uiStore from './uiStore.js';
+
+Vue.use(Vuex)
+
+export default new Vuex.Store({
+ modules: {chatStore,friendStore,userStore,groupStore,configStore,uiStore},
+ state: {},
+ mutations: {
+ },
+ actions: {
+ load(context) {
+ return this.dispatch("loadUser").then(() => {
+ const promises = [];
+ promises.push(this.dispatch("loadFriend"));
+ promises.push(this.dispatch("loadGroup"));
+ promises.push(this.dispatch("loadChat"));
+ promises.push(this.dispatch("loadConfig"));
+ return Promise.all(promises);
+ })
+ },
+ unload(context){
+ context.commit("clear");
+ }
+ },
+ strict: process.env.NODE_ENV !== 'production'
+})
diff --git a/im-ui/src/store/uiStore.js b/im-web/src/store/uiStore.js
similarity index 100%
rename from im-ui/src/store/uiStore.js
rename to im-web/src/store/uiStore.js
diff --git a/im-ui/src/store/userStore.js b/im-web/src/store/userStore.js
similarity index 95%
rename from im-ui/src/store/userStore.js
rename to im-web/src/store/userStore.js
index 04b7235..0973989 100644
--- a/im-ui/src/store/userStore.js
+++ b/im-web/src/store/userStore.js
@@ -1,50 +1,50 @@
-import http from '../api/httpRequest.js'
-import {RTC_STATE} from "../api/enums.js"
-export default {
-
- state: {
- userInfo: {
-
- },
- rtcInfo: {
- friend: {}, // 好友信息
- mode: "video", // 模式 video:视频 voice:语音
- state: RTC_STATE.FREE // FREE:空闲 WAIT_CALL:呼叫方等待 WAIT_ACCEPT: 被呼叫方等待接听 CHATING:聊天中
- }
- },
-
- mutations: {
- setUserInfo(state, userInfo) {
- state.userInfo = userInfo
- },
- setRtcInfo(state, rtcInfo ){
- state.rtcInfo = rtcInfo;
- },
- setRtcState(state,rtcState){
- state.rtcInfo.state = rtcState;
- },
- clear(state){
- state.userInfo = {};
- state.rtcInfo = {
- friend: {},
- mode: "video",
- state: RTC_STATE.FREE
- };
- }
- },
- actions:{
- loadUser(context){
- return new Promise((resolve, reject) => {
- http({
- url: '/user/self',
- method: 'GET'
- }).then((userInfo) => {
- context.commit("setUserInfo",userInfo);
- resolve();
- }).catch((res)=>{
- reject(res);
- });
- })
- }
- }
+import http from '../api/httpRequest.js'
+import {RTC_STATE} from "../api/enums.js"
+export default {
+
+ state: {
+ userInfo: {
+
+ },
+ rtcInfo: {
+ friend: {}, // 好友信息
+ mode: "video", // 模式 video:视频 voice:语音
+ state: RTC_STATE.FREE // FREE:空闲 WAIT_CALL:呼叫方等待 WAIT_ACCEPT: 被呼叫方等待接听 CHATING:聊天中
+ }
+ },
+
+ mutations: {
+ setUserInfo(state, userInfo) {
+ state.userInfo = userInfo
+ },
+ setRtcInfo(state, rtcInfo ){
+ state.rtcInfo = rtcInfo;
+ },
+ setRtcState(state,rtcState){
+ state.rtcInfo.state = rtcState;
+ },
+ clear(state){
+ state.userInfo = {};
+ state.rtcInfo = {
+ friend: {},
+ mode: "video",
+ state: RTC_STATE.FREE
+ };
+ }
+ },
+ actions:{
+ loadUser(context){
+ return new Promise((resolve, reject) => {
+ http({
+ url: '/user/self',
+ method: 'GET'
+ }).then((userInfo) => {
+ context.commit("setUserInfo",userInfo);
+ resolve();
+ }).catch((res)=>{
+ reject(res);
+ });
+ })
+ }
+ }
}
\ No newline at end of file
diff --git a/im-ui/src/utils/directive/dialogDrag.js b/im-web/src/utils/directive/dialogDrag.js
similarity index 100%
rename from im-ui/src/utils/directive/dialogDrag.js
rename to im-web/src/utils/directive/dialogDrag.js
diff --git a/im-ui/src/view/Chat.vue b/im-web/src/view/Chat.vue
similarity index 95%
rename from im-ui/src/view/Chat.vue
rename to im-web/src/view/Chat.vue
index b6b42f2..bb107aa 100644
--- a/im-ui/src/view/Chat.vue
+++ b/im-web/src/view/Chat.vue
@@ -1,104 +1,104 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/im-ui/src/view/Friend.vue b/im-web/src/view/Friend.vue
similarity index 100%
rename from im-ui/src/view/Friend.vue
rename to im-web/src/view/Friend.vue
diff --git a/im-ui/src/view/Group.vue b/im-web/src/view/Group.vue
similarity index 100%
rename from im-ui/src/view/Group.vue
rename to im-web/src/view/Group.vue
diff --git a/im-ui/src/view/Home.vue b/im-web/src/view/Home.vue
similarity index 96%
rename from im-ui/src/view/Home.vue
rename to im-web/src/view/Home.vue
index 797b0c1..7f02a4f 100644
--- a/im-ui/src/view/Home.vue
+++ b/im-web/src/view/Home.vue
@@ -1,422 +1,422 @@
-
-
-
-
-
-
-
-
-
-
-
- {{ unreadCount }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/im-ui/src/view/Login.vue b/im-web/src/view/Login.vue
similarity index 96%
rename from im-ui/src/view/Login.vue
rename to im-web/src/view/Login.vue
index 8742681..d7966ed 100644
--- a/im-ui/src/view/Login.vue
+++ b/im-web/src/view/Login.vue
@@ -1,243 +1,243 @@
-
-
-
-
-
-
盒子IM 2.0版本已上线:
-
- 加入uniapp移动端,支持移动端和web端同时在线,多端消息同步
- 目前uniapp移动端支持安卓、ios、h5、微信小程序
- 聊天窗口支持粘贴截图、@群成员、已读未读显示
- 语雀文档:
- 盒子IM详细介绍文档
-
-
-
-
-
最近更新(2024-06-22):
-
- 群语音通话功能上线,且同时支持web端和uniapp端
- 音视频通话部分源码未开源,可付费获取:
- 音视频源码购买说明
-
-
-
-
-
-
如果本项目对您有帮助,请在gitee上帮忙点个star
-
-
-
-
- 登陆盒子IM
-
-
-
-
-
-
-
-
-
-
-
- 登陆
- 清空
-
-
- 没有账号,前往注册
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/im-ui/src/view/Register.vue b/im-web/src/view/Register.vue
similarity index 96%
rename from im-ui/src/view/Register.vue
rename to im-web/src/view/Register.vue
index 1c2c6e8..c35c4d2 100644
--- a/im-ui/src/view/Register.vue
+++ b/im-web/src/view/Register.vue
@@ -1,162 +1,162 @@
-
-
-
-
- 欢迎成为盒子IM的用户
-
-
-
-
-
-
-
-
-
-
-
-
-
- 注册
- 清空
-
-
- 已有账号,前往登录
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ 欢迎成为盒子IM的用户
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 注册
+ 清空
+
+
+ 已有账号,前往登录
+
+
+
+
+
+
+
+
+
+
diff --git a/im-ui/vue.config.js b/im-web/vue.config.js
similarity index 95%
rename from im-ui/vue.config.js
rename to im-web/vue.config.js
index 7ed74db..3beb823 100644
--- a/im-ui/vue.config.js
+++ b/im-web/vue.config.js
@@ -1,23 +1,23 @@
const path = require('path')
-const fs = require('fs')
-
-module.exports = {
- devServer: {
- proxy: {
- '/api': {
- target: 'http://127.0.0.1:8888',
- changeOrigin: true,
- ws: false,
- pathRewrite: {
- '^/api': ''
- }
- }
- },
- // 音视频功能需要ssl证书,如需调试请打开注释
- // https: {
- // cert: fs.readFileSync(path.join(__dirname, 'src/ssl/cert.crt')),
- // key: fs.readFileSync(path.join(__dirname, 'src/ssl/cert.key'))
- // }
- }
-
+const fs = require('fs')
+
+module.exports = {
+ devServer: {
+ proxy: {
+ '/api': {
+ target: 'http://127.0.0.1:8888',
+ changeOrigin: true,
+ ws: false,
+ pathRewrite: {
+ '^/api': ''
+ }
+ }
+ },
+ // 音视频功能需要ssl证书,如需调试请打开注释
+ // https: {
+ // cert: fs.readFileSync(path.join(__dirname, 'src/ssl/cert.crt')),
+ // key: fs.readFileSync(path.join(__dirname, 'src/ssl/cert.key'))
+ // }
+ }
+
}
\ No newline at end of file