From 716792404c107f8364a54028fb9070420b7eae0a Mon Sep 17 00:00:00 2001 From: Jason Date: Mon, 7 Feb 2022 13:33:56 +0800 Subject: [PATCH 01/29] =?UTF-8?q?IM=E5=BD=95=E9=9F=B3=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E6=8B=86=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/im/private/chat.nvue | 179 +++------------------ pages/im/private/components/sentText.nvue | 80 +++++++-- pages/im/private/components/sentVoice.nvue | 149 +++++++++++++++-- 3 files changed, 221 insertions(+), 187 deletions(-) diff --git a/pages/im/private/chat.nvue b/pages/im/private/chat.nvue index 991a103..c0bfd59 100644 --- a/pages/im/private/chat.nvue +++ b/pages/im/private/chat.nvue @@ -8,14 +8,14 @@ + @click="showUser(targetId, item.messageDirection)"> + :msg="item.content" /> + :msg="item.content.content" /> + :msg="item.content.content" /> {{ item.sentStatus == 50 ? '已读': '未读'}} @@ -27,26 +27,15 @@ - + - + - - - 按住说话 - - - - - - 发送 - - - - - 录音中 {{transcribeTime}} s + + @@ -57,20 +46,18 @@ } from '@/utils/filters.js' import * as RongIMLib from "@/uni_modules/RongCloud-IMWrapper/js_sdk/index" import im from '@/utils/im/index.js' - import permision from "@/js_sdk/wa-permission/permission.js" import showVoice from './components/showVoice' import showImage from './components/showImage' import showText from './components/showText' + import sentText from './components/sentText' + import sentVoice from './components/sentVoice' - var transcribe - const recorderManager = uni.getRecorderManager() const ChatList = uni.requireNativePlugin('dom') export default { data() { return { targetId: '', - inputTxt: '', messages: [], conversationType: 1, userInfo: { @@ -78,16 +65,15 @@ userId: '', portraitUrl: '' }, - importTabs: 1, - showAudioTranscribe: false, - transcribeTime: 60, - audioContextPaused: true + chatType: 1 // 0 语音,1 文本 } }, components: { showVoice, showImage, - showText + showText, + sentText, + sentVoice }, onLoad(e) { this.targetId = e.targetId @@ -128,68 +114,13 @@ onUnload() { RongIMLib.clearReadReceiptReceivedListener() }, - computed: { - disabled() { - return this.inputTxt.length == 0 - } - }, methods: { customCN(val) { return timeCustomCN(val) }, - // 检查安卓录制权限 - async getAndroidPermission() { - return await permision.requestAndroidPermission('android.permission.RECORD_AUDIO') - }, - // 切换聊天信息 + // 切换聊天类型 msgType() { - this.importTabs = this.importTabs === 1 ? 0 : 1 - }, - // 录制语音消息 - startAudio(e) { - this.getAndroidPermission().then(code => { - switch (code) { - case 1: - this.showAudioTranscribe = true - recorderManager.start() - transcribe = setInterval(() => { - this.transcribeTime -= 1 - if (this.transcribeTime === 0) { - this.chendAudio() - } - }, 1000) - break; - case 0: - uni.showToast({ - title: '暂无麦克风权限,请前往应用设置开启麦克风', - icon: 'none' - }) - break; - case -1: - uni.showToast({ - title: '应用权限错误', - icon: 'none' - }) - break; - } - }) - }, - // 结束录音 - chendAudio(e) { - if (!this.showAudioTranscribe) return - recorderManager.stop() - clearInterval(transcribe) - // 监听录音结束 - recorderManager.onStop(res => { - im.sentVoice(this.conversationType, this.targetId, res.tempFilePath, (60 - this - .transcribeTime), () => { - setTimeout(() => { - this.getMessageList() - }, 500) - }) - this.transcribeTime = 60 - this.showAudioTranscribe = false - }) + this.chatType = this.chatType === 1 ? 0 : 1 }, // 获取消息列表 getMessageList() { @@ -198,18 +129,8 @@ this.scrollBottom() }) }, - // 发送文本消息 - send() { - if (this.inputTxt === '') return - im.sentText(this.conversationType, this.targetId, this.inputTxt, () => { - setTimeout(() => { - this.getMessageList() - }, 500) - this.inputTxt = '' - }) - }, - // 展示好友信息 - showFriend(targetId, type) { + // 展示好友信息, type 1 是自己, 2 是对方 + showUser(targetId, type) { uni.navigateTo({ url: type === 1 ? '/pages/im/friends/mine?targetId=' + targetId : '/pages/im/friends/info?targetId=' + targetId @@ -229,30 +150,6 @@ diff --git a/pages/im/private/components/sentText.nvue b/pages/im/private/components/sentText.nvue index bb85538..52bab6b 100644 --- a/pages/im/private/components/sentText.nvue +++ b/pages/im/private/components/sentText.nvue @@ -1,15 +1,67 @@ - - - - - diff --git a/pages/im/private/components/sentVoice.nvue b/pages/im/private/components/sentVoice.nvue index bb85538..1452e8a 100644 --- a/pages/im/private/components/sentVoice.nvue +++ b/pages/im/private/components/sentVoice.nvue @@ -1,15 +1,136 @@ - - - - - From 3c48112bf85f71dd9c64f3cf1219dc84f3f59e66 Mon Sep 17 00:00:00 2001 From: Jason Date: Mon, 7 Feb 2022 14:05:48 +0800 Subject: [PATCH 02/29] =?UTF-8?q?=E8=8D=89=E7=A8=BF=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/im/private/components/sentText.nvue | 55 ++++++++++++++++------- 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/pages/im/private/components/sentText.nvue b/pages/im/private/components/sentText.nvue index 52bab6b..d8b6915 100644 --- a/pages/im/private/components/sentText.nvue +++ b/pages/im/private/components/sentText.nvue @@ -1,12 +1,13 @@ From 113bc916252024346cf683845d4d99c21607632b Mon Sep 17 00:00:00 2001 From: Jason Date: Mon, 7 Feb 2022 14:15:47 +0800 Subject: [PATCH 03/29] =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../im/{private => }/components/sentText.nvue | 0 .../{private => }/components/sentVoice.nvue | 0 .../{private => }/components/showImage.nvue | 0 .../im/{private => }/components/showText.nvue | 0 .../{private => }/components/showVoice.nvue | 0 pages/im/private/chat.nvue | 53 +++++++++---------- utils/im/index.js | 10 +++- 7 files changed, 34 insertions(+), 29 deletions(-) rename pages/im/{private => }/components/sentText.nvue (100%) rename pages/im/{private => }/components/sentVoice.nvue (100%) rename pages/im/{private => }/components/showImage.nvue (100%) rename pages/im/{private => }/components/showText.nvue (100%) rename pages/im/{private => }/components/showVoice.nvue (100%) diff --git a/pages/im/private/components/sentText.nvue b/pages/im/components/sentText.nvue similarity index 100% rename from pages/im/private/components/sentText.nvue rename to pages/im/components/sentText.nvue diff --git a/pages/im/private/components/sentVoice.nvue b/pages/im/components/sentVoice.nvue similarity index 100% rename from pages/im/private/components/sentVoice.nvue rename to pages/im/components/sentVoice.nvue diff --git a/pages/im/private/components/showImage.nvue b/pages/im/components/showImage.nvue similarity index 100% rename from pages/im/private/components/showImage.nvue rename to pages/im/components/showImage.nvue diff --git a/pages/im/private/components/showText.nvue b/pages/im/components/showText.nvue similarity index 100% rename from pages/im/private/components/showText.nvue rename to pages/im/components/showText.nvue diff --git a/pages/im/private/components/showVoice.nvue b/pages/im/components/showVoice.nvue similarity index 100% rename from pages/im/private/components/showVoice.nvue rename to pages/im/components/showVoice.nvue diff --git a/pages/im/private/chat.nvue b/pages/im/private/chat.nvue index c0bfd59..d6dd1b8 100644 --- a/pages/im/private/chat.nvue +++ b/pages/im/private/chat.nvue @@ -26,7 +26,7 @@ - + @@ -46,11 +46,11 @@ } from '@/utils/filters.js' import * as RongIMLib from "@/uni_modules/RongCloud-IMWrapper/js_sdk/index" import im from '@/utils/im/index.js' - import showVoice from './components/showVoice' - import showImage from './components/showImage' - import showText from './components/showText' - import sentText from './components/sentText' - import sentVoice from './components/sentVoice' + import showVoice from '../components/showVoice' + import showImage from '../components/showImage' + import showText from '../components/showText' + import sentText from '../components/sentText' + import sentVoice from '../components/sentVoice' const ChatList = uni.requireNativePlugin('dom') @@ -79,47 +79,44 @@ this.targetId = e.targetId this.conversationType = e.conversationType // 会话类型 this.userInfo = this.$store.getters.userInfo(this.targetId) + + // 获取消息列表 + this.initMessageList() + uni.setNavigationBarTitle({ - title: this.$store.getters.userInfo(this.targetId).name + title: this.userInfo.name }) - - RongIMLib.clearMessagesUnreadStatus(this.conversationType, this.targetId, new Date().getTime()) - im.setNotifyBadge() - RongIMLib.sendReadReceiptMessage(this.conversationType, this.targetId, new Date().getTime()) - - this.getMessageList() - - // 监听消息回执 - RongIMLib.addReadReceiptReceivedListener(({ - data - }) => { + // 监听消息已读状态 + uni.$on('onReadReceiptReceived', (data) => { if (data.targetId == this.targetId) { this.getMessageList() } }) - // 监听收到新消息,判断是否是当前会话,更新会话内容 uni.$on('onReceiveMessage', (msg) => { if (msg.targetId == this.targetId) { - RongIMLib.clearMessagesUnreadStatus(msg.conversationType, msg.targetId, msg.sentTime) - RongIMLib.sendReadReceiptMessage(msg.conversationType, msg.targetId, msg.sentTime) - this.getMessageList() - im.setNotifyBadge() + this.initMessageList() } }) }, beforeDestroy() { uni.$off('onReceiveMessage') }, - onUnload() { - RongIMLib.clearReadReceiptReceivedListener() - }, methods: { + initMessageList() { + this.getMessageList() + // 清理当前会话,未读消息数量 + RongIMLib.clearMessagesUnreadStatus(this.conversationType, this.targetId, new Date().getTime()) + // 发送消息已读状态给对方 + RongIMLib.sendReadReceiptMessage(this.conversationType, this.targetId, new Date().getTime()) + // 更新badge提醒数量 + im.setNotifyBadge() + }, customCN(val) { return timeCustomCN(val) }, - // 切换聊天类型 - msgType() { + // 切换聊天类型,语音/文本 + changeMessageType() { this.chatType = this.chatType === 1 ? 0 : 1 }, // 获取消息列表 diff --git a/utils/im/index.js b/utils/im/index.js index 78e8abe..60714db 100644 --- a/utils/im/index.js +++ b/utils/im/index.js @@ -122,7 +122,15 @@ const addListeners = () => { console.log('new Message'); newMessage(message) } - }) + }) + + // 监听消息回执 + RongIMLib.addReadReceiptReceivedListener(({ + data + }) => { + uni.$emit('onReadReceiptReceived', data) + }) + // 音视频通话相关的 // 监听通话呼入 CallLib.onCallReceived(({ From f17f2643910b29fdb1f6e1a905ad2d05c1350379 Mon Sep 17 00:00:00 2001 From: Jason Date: Mon, 7 Feb 2022 15:16:58 +0800 Subject: [PATCH 04/29] =?UTF-8?q?=E6=9D=83=E9=99=90=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E7=9A=84=E4=BB=A3=E7=A0=81=E4=BD=8D=E7=BD=AE=E8=B0=83=E6=95=B4?= =?UTF-8?q?=EF=BC=8C=E6=97=A0=E7=94=A8=E4=BB=A3=E7=A0=81=E6=B8=85=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 12292 -> 12292 bytes pages.json | 20 - pages/im/components/sentVoice.nvue | 2 +- pages/im/private/index.vue | 499 ------------------ utils/index.js | 388 ++++++-------- {js_sdk/wa-permission => utils}/permission.js | 0 utils/sha1.js | 50 -- 7 files changed, 176 insertions(+), 783 deletions(-) delete mode 100644 pages/im/private/index.vue rename {js_sdk/wa-permission => utils}/permission.js (100%) delete mode 100644 utils/sha1.js diff --git a/.DS_Store b/.DS_Store index 08094f2b1763462ed7fd3d320c3e88ed2f92a151..d35c821c28bc22489a20b6c3256b5aa4c0cc0cb1 100644 GIT binary patch delta 51 zcmZokXi1ph<TiV7EM@(PkcnvrL;=m0z$-J}B3rlfszRP5PRr$?6stcKb G!p;EXMG{5; delta 79 zcmZokXi1ph&ls~YV7EM@@n#-{vrHOn3|S1t4Dmpm!jSEmlb@WFlb^)Ez#zcDz$go( d_5Ona!{)0>Z&)_JRTp60d{N~C)8x0};sEC_8>j#P diff --git a/pages.json b/pages.json index 91d3f80..fe8c4d6 100644 --- a/pages.json +++ b/pages.json @@ -373,26 +373,6 @@ "navigationStyle": "custom" } }, - { - "path": "pages/im/private/index", - "name": "imPrivate", - "style": { - "navigationBarTitleText": "聊天", - "navigationBarBackgroundColor": "#F3F6FB", - "disableScroll": true, - "app-plus": { - "titleNView": { - "type": "default", - "buttons": [{ - "float": "right", - "fontSrc": "/static/iconfont.ttf", - "text": "\ue607", - "fontSize": "20px" - }] - } - } - } - }, { "path": "pages/im/private/call", "name": "imPrivateCall", diff --git a/pages/im/components/sentVoice.nvue b/pages/im/components/sentVoice.nvue index 1452e8a..7c400fc 100644 --- a/pages/im/components/sentVoice.nvue +++ b/pages/im/components/sentVoice.nvue @@ -13,7 +13,7 @@ - - diff --git a/utils/index.js b/utils/index.js index 4b0264d..665e4d5 100644 --- a/utils/index.js +++ b/utils/index.js @@ -1,221 +1,183 @@ -import sha1 from './sha1.js' -import env from './conf/env.js' -import * as RongIMLib from '@rongcloud/imlib-uni' +import env from './conf/env.js' + export default { - checkPhone: (phone) => { - let re = /^[0-9]+.?[0-9]*/; - if (phone.length === 11) { - return re.test(phone) - } - return false; - }, - jumpUrl(path) { - uni.navigateTo({ - url: path - }) - }, - connectIM() { - if(uni.getStorageSync('userInfo')) { - let userInfo = JSON.parse(uni.getStorageSync('userInfo')); - const im = getApp().globalData.im; - im.connect({ - token: userInfo.rongimToken - }).then(user => { - console.log('IM链接成功, 链接用户 id 为: ', user.id); - }).catch(error => { - uni.hideLoading(); - console.log('IM链接失败: ', error.code, error.msg); - }); - } - }, - handleTimeCustom(val) { - val = this.timeStamp(val, 'Y-m-d H:i:s') - let currentDate = new Date(); - let currentD = currentDate.getDate(); - let currentYear = currentDate.getFullYear(); - let currentMonth = currentDate.getMonth() + 1; - let date = val.substring(0,19); - date = date.replace(/-/g,'/'); - let valDate = new Date(date); - let valD = valDate.getDate(); - let valYear = valDate.getFullYear(); - let valMonth = valDate.getMonth() + 1; - // 判断是否属于今天,计算时分 - let difftime = (currentDate - valDate) / 1000; - let hour = valDate.getHours(); - hour = hour > 9 ? hour : '0' + hour; - let minute = valDate.getMinutes(); - minute = minute > 9 ? minute : '0' + minute; - if(currentYear === valYear && currentMonth === valMonth && currentD === valD) { - return hour + ':' + minute; - } else { - // 计算天 - if(currentYear === valYear && currentMonth === valMonth && currentD !== valD) { - return valMonth + '月' + valD + '日 ' + hour + '时' + minute; - } else { - return valYear + '年' + valMonth + '月' + valD + '日 ' + hour + ':' + minute; - } - - } - }, - handleTimeCustomCN(val) { - val = this.timeStamp(val, 'Y-m-d H:i:s') - console.log(val, '时间0000000'); - let currentDate = new Date(); - let currentD = currentDate.getDate(); - let currentYear = currentDate.getFullYear(); - let currentMonth = currentDate.getMonth() + 1; - let date = val.substring(0,19); - date = date.replace(/-/g,'/'); - let valDate = new Date(date); - let valD = valDate.getDate(); - let valYear = valDate.getFullYear(); - let valMonth = valDate.getMonth() + 1; - // 判断是否属于今天,计算时分 - let difftime = (currentDate - valDate) / 1000; - if(currentYear === valYear && currentMonth === valMonth && currentD === valD) { - let minute = parseInt(difftime % 3600 / 60); - if(minute <= 60) { - return minute === 0 ? '刚刚' : minute + '分钟前'; - } else { - return (minute * 60).toFixed(0) + '小时前'; - } - } else { - // 计算天 - if(currentYear === valYear && currentMonth === valMonth && currentD - 1 === valD) { - return '昨天'; - } else { - let days = Math.abs(currentDate.getTime() - valDate.getTime())/(1000*60*60*24); - return Math.ceil(days) + '天前'; - } - - } - }, - timeStamp(timestamp, formats) { - /* - ** 时间戳转换成指定格式日期 - ** eg. - ** dateFormat(11111111111111, 'Y年m月d日 H时i分') - ** → "2322年02月06日 03时45分" - */ - // formats格式包括 - // 1. Y-m-d - // 2. Y-m-d H:i:s - // 3. Y年m月d日 - // 4. Y年m月d日 H时i分 - formats = formats || 'Y-m-d'; + checkPhone: (phone) => { + let re = /^[0-9]+.?[0-9]*/; + if (phone.length === 11) { + return re.test(phone) + } + return false; + }, + jumpUrl(path) { + uni.navigateTo({ + url: path + }) + }, + handleTimeCustom(val) { + val = this.timeStamp(val, 'Y-m-d H:i:s') + let currentDate = new Date(); + let currentD = currentDate.getDate(); + let currentYear = currentDate.getFullYear(); + let currentMonth = currentDate.getMonth() + 1; + let date = val.substring(0, 19); + date = date.replace(/-/g, '/'); + let valDate = new Date(date); + let valD = valDate.getDate(); + let valYear = valDate.getFullYear(); + let valMonth = valDate.getMonth() + 1; + // 判断是否属于今天,计算时分 + let difftime = (currentDate - valDate) / 1000; + let hour = valDate.getHours(); + hour = hour > 9 ? hour : '0' + hour; + let minute = valDate.getMinutes(); + minute = minute > 9 ? minute : '0' + minute; + if (currentYear === valYear && currentMonth === valMonth && currentD === valD) { + return hour + ':' + minute; + } else { + // 计算天 + if (currentYear === valYear && currentMonth === valMonth && currentD !== valD) { + return valMonth + '月' + valD + '日 ' + hour + '时' + minute; + } else { + return valYear + '年' + valMonth + '月' + valD + '日 ' + hour + ':' + minute; + } - var zero = function(value) { - if (value < 10) { - return '0' + value; - } - return value; - }; - var myDate = timestamp ? new Date(timestamp) : new Date(); + } + }, + handleTimeCustomCN(val) { + val = this.timeStamp(val, 'Y-m-d H:i:s') + console.log(val, '时间0000000'); + let currentDate = new Date(); + let currentD = currentDate.getDate(); + let currentYear = currentDate.getFullYear(); + let currentMonth = currentDate.getMonth() + 1; + let date = val.substring(0, 19); + date = date.replace(/-/g, '/'); + let valDate = new Date(date); + let valD = valDate.getDate(); + let valYear = valDate.getFullYear(); + let valMonth = valDate.getMonth() + 1; + // 判断是否属于今天,计算时分 + let difftime = (currentDate - valDate) / 1000; + if (currentYear === valYear && currentMonth === valMonth && currentD === valD) { + let minute = parseInt(difftime % 3600 / 60); + if (minute <= 60) { + return minute === 0 ? '刚刚' : minute + '分钟前'; + } else { + return (minute * 60).toFixed(0) + '小时前'; + } + } else { + // 计算天 + if (currentYear === valYear && currentMonth === valMonth && currentD - 1 === valD) { + return '昨天'; + } else { + let days = Math.abs(currentDate.getTime() - valDate.getTime()) / (1000 * 60 * 60 * 24); + return Math.ceil(days) + '天前'; + } - var year = myDate.getFullYear(); - var month = zero(myDate.getMonth() + 1); - var day = zero(myDate.getDate()); + } + }, + timeStamp(timestamp, formats) { + /* + ** 时间戳转换成指定格式日期 + ** eg. + ** dateFormat(11111111111111, 'Y年m月d日 H时i分') + ** → "2322年02月06日 03时45分" + */ + // formats格式包括 + // 1. Y-m-d + // 2. Y-m-d H:i:s + // 3. Y年m月d日 + // 4. Y年m月d日 H时i分 + formats = formats || 'Y-m-d'; - var hour = zero(myDate.getHours()); - var minite = zero(myDate.getMinutes()); - var second = zero(myDate.getSeconds()); + var zero = function(value) { + if (value < 10) { + return '0' + value; + } + return value; + }; + var myDate = timestamp ? new Date(timestamp) : new Date(); - return formats.replace(/Y|m|d|H|i|s/ig, function(matches) { - return ({ - Y: year, - m: month, - d: day, - H: hour, - i: minite, - s: second - })[matches]; - }); - }, - // 时间字符串转换中文时间 - timeToDate(str) { - let date = str.substring(0, 19); - date = date.replace(/-/g, '/'); - date = new Date(str); - let dateObj = { - year: date.getFullYear(), - month: date.getMonth() + 1, - day: date.getDate(), - hour: date.getHours(), - minute: date.getMinutes(), - second: date.getSeconds() - } - let string = dateObj.year + '年' + dateObj.month + '月' + dateObj.day + '日 ' + dateObj.hour + '时' + dateObj - .minute + '分'; - return string - }, - getAge(strAge) { - let birArr = strAge.split("-"); - let birYear = birArr[0]; - let birMonth = birArr[1]; - let birDay = birArr[2]; + var year = myDate.getFullYear(); + var month = zero(myDate.getMonth() + 1); + var day = zero(myDate.getDate()); - d = new Date(); - let nowYear = d.getFullYear(); - let nowMonth = d.getMonth() + 1; //记得加1 - let nowDay = d.getDate(); - let returnAge; + var hour = zero(myDate.getHours()); + var minite = zero(myDate.getMinutes()); + var second = zero(myDate.getSeconds()); - if (birArr == null) { - return false - }; - let d = new Date(birYear, birMonth - 1, birDay); - if (d.getFullYear() == birYear && (d.getMonth() + 1) == birMonth && d.getDate() == birDay) { - if (nowYear == birYear) { - returnAge = 0; - } else { - let ageDiff = nowYear - birYear; - if (ageDiff > 0) { - if (nowMonth == birMonth) { - let dayDiff = nowDay - birDay; - if (dayDiff < 0) { - returnAge = ageDiff - 1; - } else { - returnAge = ageDiff; - } - } else { - let monthDiff = nowMonth - birMonth; - if (monthDiff < 0) { - returnAge = ageDiff - 1; - } else { - returnAge = ageDiff; - } - } - } else { - return "出生日期晚于今天,数据有误"; //返回-1 表示出生日期输入错误 晚于今天 - } - } - return returnAge; - } else { - return ("输入的日期格式错误!"); - } - }, - getImUserInfo(targetId) { - return new Promise((resolve, reject) => { - const Nonce = Date.now(); - const Timestamp = Date.now() * 1000; - uni.request({ - url: 'https://api2-cn.ronghub.com/user/info.json', //仅为示例,并非真实接口地址。 - data: { - userId: targetId - }, - method: 'POST', - header: { - 'Content-Type': 'application/x-www-form-urlencoded', - 'App-Key': '你的key', - 'Nonce': Nonce, - 'Timestamp': Timestamp, - 'Signature': sha1(env.IMsecret + Nonce + Timestamp) - }, - success: (res) => { - resolve(res.data) - } - }); - }) - } + return formats.replace(/Y|m|d|H|i|s/ig, function(matches) { + return ({ + Y: year, + m: month, + d: day, + H: hour, + i: minite, + s: second + })[matches]; + }); + }, + // 时间字符串转换中文时间 + timeToDate(str) { + let date = str.substring(0, 19); + date = date.replace(/-/g, '/'); + date = new Date(str); + let dateObj = { + year: date.getFullYear(), + month: date.getMonth() + 1, + day: date.getDate(), + hour: date.getHours(), + minute: date.getMinutes(), + second: date.getSeconds() + } + let string = dateObj.year + '年' + dateObj.month + '月' + dateObj.day + '日 ' + dateObj.hour + '时' + dateObj + .minute + '分'; + return string + }, + getAge(strAge) { + let birArr = strAge.split("-"); + let birYear = birArr[0]; + let birMonth = birArr[1]; + let birDay = birArr[2]; + + d = new Date(); + let nowYear = d.getFullYear(); + let nowMonth = d.getMonth() + 1; //记得加1 + let nowDay = d.getDate(); + let returnAge; + + if (birArr == null) { + return false + }; + let d = new Date(birYear, birMonth - 1, birDay); + if (d.getFullYear() == birYear && (d.getMonth() + 1) == birMonth && d.getDate() == birDay) { + if (nowYear == birYear) { + returnAge = 0; + } else { + let ageDiff = nowYear - birYear; + if (ageDiff > 0) { + if (nowMonth == birMonth) { + let dayDiff = nowDay - birDay; + if (dayDiff < 0) { + returnAge = ageDiff - 1; + } else { + returnAge = ageDiff; + } + } else { + let monthDiff = nowMonth - birMonth; + if (monthDiff < 0) { + returnAge = ageDiff - 1; + } else { + returnAge = ageDiff; + } + } + } else { + return "出生日期晚于今天,数据有误"; //返回-1 表示出生日期输入错误 晚于今天 + } + } + return returnAge; + } else { + return ("输入的日期格式错误!"); + } + } } diff --git a/js_sdk/wa-permission/permission.js b/utils/permission.js similarity index 100% rename from js_sdk/wa-permission/permission.js rename to utils/permission.js diff --git a/utils/sha1.js b/utils/sha1.js deleted file mode 100644 index 5fc4774..0000000 --- a/utils/sha1.js +++ /dev/null @@ -1,50 +0,0 @@ -function encodeUTF8(s) { - var i, r = [], c, x; - for (i = 0; i < s.length; i++) - if ((c = s.charCodeAt(i)) < 0x80) r.push(c); - else if (c < 0x800) r.push(0xC0 + (c >> 6 & 0x1F), 0x80 + (c & 0x3F)); - else { - if ((x = c ^ 0xD800) >> 10 == 0) //对四字节UTF-16转换为Unicode - c = (x << 10) + (s.charCodeAt(++i) ^ 0xDC00) + 0x10000, - r.push(0xF0 + (c >> 18 & 0x7), 0x80 + (c >> 12 & 0x3F)); - else r.push(0xE0 + (c >> 12 & 0xF)); - r.push(0x80 + (c >> 6 & 0x3F), 0x80 + (c & 0x3F)); - }; - return r; -} - -// 字符串加密成 hex 字符串 -function sha1(s) { - var data = new Uint8Array(encodeUTF8(s)) - var i, j, t; - var l = ((data.length + 8) >>> 6 << 4) + 16, s = new Uint8Array(l << 2); - s.set(new Uint8Array(data.buffer)), s = new Uint32Array(s.buffer); - for (t = new DataView(s.buffer), i = 0; i < l; i++)s[i] = t.getUint32(i << 2); - s[data.length >> 2] |= 0x80 << (24 - (data.length & 3) * 8); - s[l - 1] = data.length << 3; - var w = [], f = [ - function () { return m[1] & m[2] | ~m[1] & m[3]; }, - function () { return m[1] ^ m[2] ^ m[3]; }, - function () { return m[1] & m[2] | m[1] & m[3] | m[2] & m[3]; }, - function () { return m[1] ^ m[2] ^ m[3]; } - ], rol = function (n, c) { return n << c | n >>> (32 - c); }, - k = [1518500249, 1859775393, -1894007588, -899497514], - m = [1732584193, -271733879, null, null, -1009589776]; - m[2] = ~m[0], m[3] = ~m[1]; - for (i = 0; i < s.length; i += 16) { - var o = m.slice(0); - for (j = 0; j < 80; j++) - w[j] = j < 16 ? s[i + j] : rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1), - t = rol(m[0], 5) + f[j / 20 | 0]() + m[4] + w[j] + k[j / 20 | 0] | 0, - m[1] = rol(m[1], 30), m.pop(), m.unshift(t); - for (j = 0; j < 5; j++)m[j] = m[j] + o[j] | 0; - }; - t = new DataView(new Uint32Array(m).buffer); - for (var i = 0; i < 5; i++)m[i] = t.getUint32(i << 2); - - var hex = Array.prototype.map.call(new Uint8Array(new Uint32Array(m).buffer), function (e) { - return (e < 16 ? "0" : "") + e.toString(16); - }).join(""); - return hex; -} -export default sha1 \ No newline at end of file From 1941fe7d99902c546b56b2b2215b0739b734095c Mon Sep 17 00:00:00 2001 From: Jason Date: Mon, 7 Feb 2022 15:49:38 +0800 Subject: [PATCH 05/29] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=8F=91=E9=80=81?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E4=B9=8B=E5=90=8E=EF=BC=8C=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=BB=B6=E8=BF=9F=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/im/components/sentText.nvue | 4 +--- pages/im/private/chat.nvue | 23 +++++++++++++++-------- utils/im/message.js | 12 +++++++----- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/pages/im/components/sentText.nvue b/pages/im/components/sentText.nvue index d8b6915..6dcc4b5 100644 --- a/pages/im/components/sentText.nvue +++ b/pages/im/components/sentText.nvue @@ -47,9 +47,7 @@ if (!this.disabled) { RongIMLib.clearTextMessageDraft(this.conversationType, this.targetId) im.sentText(this.conversationType, this.targetId, this.inputTxt, () => { - setTimeout(() => { - this.$emit('success') - }, 500) + this.$emit('success') this.inputTxt = '' }) } diff --git a/pages/im/private/chat.nvue b/pages/im/private/chat.nvue index d6dd1b8..baa2058 100644 --- a/pages/im/private/chat.nvue +++ b/pages/im/private/chat.nvue @@ -52,7 +52,7 @@ import sentText from '../components/sentText' import sentVoice from '../components/sentVoice' - const ChatList = uni.requireNativePlugin('dom') + const ChatList = uni.requireNativePlugin('dom') export default { data() { @@ -81,8 +81,8 @@ this.userInfo = this.$store.getters.userInfo(this.targetId) // 获取消息列表 - this.initMessageList() - + this.initMessageList() + uni.setNavigationBarTitle({ title: this.userInfo.name }) @@ -120,11 +120,18 @@ this.chatType = this.chatType === 1 ? 0 : 1 }, // 获取消息列表 - getMessageList() { - im.getMessageList(this.conversationType, this.targetId, (messages) => { - this.messages = messages.reverse() - this.scrollBottom() - }) + getMessageList() { + im.getMessageList( + this.conversationType, + this.targetId, + new Date().getTime(), + 10, + true, + (messages) => { + console.log(messages); + this.messages = messages.reverse() + this.scrollBottom() + }) }, // 展示好友信息, type 1 是自己, 2 是对方 showUser(targetId, type) { diff --git a/utils/im/message.js b/utils/im/message.js index 8b0069b..368715a 100644 --- a/utils/im/message.js +++ b/utils/im/message.js @@ -1,7 +1,7 @@ import store from '@/store/index.js' import * as RongIMLib from '@/uni_modules/RongCloud-IMWrapper/js_sdk/index' -const getMessageList = (conversationType, targetId, callback) => { +const getMessageList = (conversationType, targetId, timeStamp, count, isForward, callback) => { // 获取消息列表 const objectNames = [ 'RC:TxtMsg', @@ -16,10 +16,12 @@ const getMessageList = (conversationType, targetId, callback) => { 'RC:ReferenceMsg', 'RC:CombineMsg' ] - const timeStamp = new Date().getTime() - const count = 10 // 获取的消息数量 - const isForward = true // 是否向前获取 - RongIMLib.getHistoryMessagesByTimestamp(conversationType, targetId, objectNames, timeStamp, + + RongIMLib.getHistoryMessagesByTimestamp( + conversationType, + targetId, + objectNames, + timeStamp + 1000, count, isForward, ({ From 942955cfae17d2d55895c065e61e68430679be6c Mon Sep 17 00:00:00 2001 From: Jason Date: Mon, 7 Feb 2022 16:01:59 +0800 Subject: [PATCH 06/29] =?UTF-8?q?=E4=BC=9A=E8=AF=9D=E5=88=97=E8=A1=A8?= =?UTF-8?q?=EF=BC=8C=E6=B6=88=E6=81=AF=E7=B1=BB=E5=9E=8B=E5=8C=BA=E5=88=86?= =?UTF-8?q?=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/im/index.vue | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/pages/im/index.vue b/pages/im/index.vue index 3871944..3eeabfb 100644 --- a/pages/im/index.vue +++ b/pages/im/index.vue @@ -43,7 +43,18 @@ {{ friend(item.targetId).name || '未知用户' }} {{ item.sentTime|timeCustomCN }} - {{ item.latestMessage.content || '' }} + + {{ item.latestMessage.content || '' }} + + + [语音] + + + [图片] + + + [文件] + @@ -130,7 +141,7 @@ } } }, - methods: { + methods: { // 隐藏功能菜单 hidePop() { this.showPop = false @@ -138,7 +149,7 @@ setTimeout(() => { this.showShade = false }, 250) - }, + }, // 点击会话功能菜单 pickerMenu(e) { const index = Number(e.currentTarget.dataset.index) @@ -152,7 +163,7 @@ im.setNotifyBadge() this.getConversationList() this.hidePop() - }, + }, // 长按会话,展示功能菜单 onLongPress(e) { let [touches, style, item] = [e.touches[0], "", e.currentTarget.dataset.item] @@ -191,6 +202,7 @@ const timestamp = 0 RongIMLib.getConversationList([RongIMLib.ConversationType.PRIVATE], count, timestamp, (res) => { if (res.code === 0) { + console.log(res.conversations); this.conversations = res.conversations } }) @@ -220,7 +232,7 @@ params }) } - }, + }, // 调起扫码 scanQrCode() { uni.scanCode({ From d2b9379d2bb3c5ae6ac21076ae44cb282f805691 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=90=E6=98=8E=E6=98=8E?= <970899069@qq.com> Date: Mon, 7 Feb 2022 16:03:57 +0800 Subject: [PATCH 07/29] =?UTF-8?q?=E6=96=B0=E5=A2=9Eim=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 12292 -> 12292 bytes App.vue | 2 +- pages/im/components/sentPopups.nvue | 119 ++++++++++++++++++++++++++++ pages/im/components/sentText.nvue | 2 +- pages/im/private/chat.nvue | 32 +++++--- static/.DS_Store | Bin 10244 -> 10244 bytes static/icon/popups-icon-00.png | Bin 0 -> 3560 bytes static/icon/popups-icon-01.png | Bin 0 -> 3235 bytes static/icon/popups-icon-02.png | Bin 0 -> 2964 bytes static/icon/popups-icon-03.png | Bin 0 -> 3115 bytes static/icon/popups-icon-04.png | Bin 0 -> 3220 bytes static/icon/popups-icon-05.png | Bin 0 -> 2974 bytes static/icon/popups-icon.png | Bin 0 -> 5173 bytes 13 files changed, 142 insertions(+), 13 deletions(-) create mode 100644 pages/im/components/sentPopups.nvue create mode 100644 static/icon/popups-icon-00.png create mode 100644 static/icon/popups-icon-01.png create mode 100644 static/icon/popups-icon-02.png create mode 100644 static/icon/popups-icon-03.png create mode 100644 static/icon/popups-icon-04.png create mode 100644 static/icon/popups-icon-05.png create mode 100644 static/icon/popups-icon.png diff --git a/.DS_Store b/.DS_Store index 08094f2b1763462ed7fd3d320c3e88ed2f92a151..0114f35eddaa48944f75223351e26a0c25104761 100644 GIT binary patch delta 21 ccmZokXi3 + + + + 相册 + + + + 拍摄 + + + + 视频通话 + + + + 位置 + + + + 红包 + + + + 文件 + + + + + + + diff --git a/pages/im/components/sentText.nvue b/pages/im/components/sentText.nvue index d8b6915..0ac916f 100644 --- a/pages/im/components/sentText.nvue +++ b/pages/im/components/sentText.nvue @@ -1,7 +1,7 @@ diff --git a/pages/im/private/chat.nvue b/pages/im/private/chat.nvue index d6dd1b8..b099343 100644 --- a/pages/im/private/chat.nvue +++ b/pages/im/private/chat.nvue @@ -24,7 +24,7 @@ - + @@ -32,18 +32,20 @@ - - - + + + + + + + + + + + diff --git a/pages/im/index.vue b/pages/im/index.vue index 3eeabfb..4682bb9 100644 --- a/pages/im/index.vue +++ b/pages/im/index.vue @@ -43,18 +43,7 @@ {{ friend(item.targetId).name || '未知用户' }} {{ item.sentTime|timeCustomCN }} - - {{ item.latestMessage.content || '' }} - - - [语音] - - - [图片] - - - [文件] - + @@ -82,6 +71,7 @@ import * as RongIMLib from "@/uni_modules/RongCloud-IMWrapper/js_sdk/index" import im from '@/utils/im/index.js' import userAuth from '@/public/userAuth' + import messagePreview from './components/messagePreview' import { getImToken } from '@/apis/interfaces/im.js' @@ -102,6 +92,9 @@ pickedItem: {} } }, + components: { + messagePreview + }, computed: { friend() { return function(targetId) { From 9b6cb995413ad63fd2d56531f6f17d8e02153791 Mon Sep 17 00:00:00 2001 From: Jason Date: Mon, 7 Feb 2022 17:22:09 +0800 Subject: [PATCH 09/29] =?UTF-8?q?=E5=9B=BE=E7=89=87=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=8F=91=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.vue | 2 +- manifest.json | 16 +- pages/im/components/sentPopups.nvue | 283 ++++++++++++++++------------ pages/im/components/sentText.nvue | 2 +- pages/im/components/sentVoice.nvue | 2 +- pages/im/components/showImage.nvue | 12 +- pages/im/components/showText.nvue | 6 +- pages/im/private/chat.nvue | 55 +++--- utils/im/message.js | 5 +- 9 files changed, 221 insertions(+), 162 deletions(-) diff --git a/App.vue b/App.vue index 88885f8..7b7b95a 100644 --- a/App.vue +++ b/App.vue @@ -5,7 +5,7 @@ export default { onLaunch: function() { im.initIm('lmxuhwaglu76d') - // return + return //#ifdef APP-PLUS // 获取系统版本号 getVersions({ diff --git a/manifest.json b/manifest.json index 38019e0..4b641da 100644 --- a/manifest.json +++ b/manifest.json @@ -22,7 +22,9 @@ "Payment" : {}, "Share" : {}, "SQLite" : {}, - "VideoPlayer" : {} + "VideoPlayer" : {}, + "Geolocation" : {}, + "Fingerprint" : {} }, /* 应用发布信息 */ "distribute" : { @@ -78,7 +80,17 @@ } }, "ad" : {}, - "push" : {} + "push" : {}, + "geolocation" : { + "amap" : { + "__platform__" : [ "android" ], + "appkey_ios" : "", + "appkey_android" : "05b7f32ca9c897c8b63c505d92cd654b" + }, + "system" : { + "__platform__" : [ "android" ] + } + } }, "icons" : { "android" : { diff --git a/pages/im/components/sentPopups.nvue b/pages/im/components/sentPopups.nvue index f36c862..ac3aa5a 100644 --- a/pages/im/components/sentPopups.nvue +++ b/pages/im/components/sentPopups.nvue @@ -1,119 +1,166 @@ - - - - - diff --git a/pages/im/components/sentText.nvue b/pages/im/components/sentText.nvue index 5f71e0c..b0305b7 100644 --- a/pages/im/components/sentText.nvue +++ b/pages/im/components/sentText.nvue @@ -7,7 +7,7 @@ - diff --git a/pages/im/components/showText.nvue b/pages/im/components/showText.nvue index 6935548..ed25dfa 100644 --- a/pages/im/components/showText.nvue +++ b/pages/im/components/showText.nvue @@ -7,11 +7,6 @@ - diff --git a/pages/im/components/showVoice.nvue b/pages/im/components/showVoice.nvue index 2686fc9..61b7c6d 100644 --- a/pages/im/components/showVoice.nvue +++ b/pages/im/components/showVoice.nvue @@ -1,9 +1,9 @@ @@ -57,8 +57,8 @@ } - diff --git a/pages/wallet/add.vue b/pages/wallet/add.vue index 5aca83c..9c2311c 100644 --- a/pages/wallet/add.vue +++ b/pages/wallet/add.vue @@ -1,64 +1,68 @@ - - - - - - - + + diff --git a/pages/wallet/create.vue b/pages/wallet/create.vue index 3594a7c..6b9cea7 100644 --- a/pages/wallet/create.vue +++ b/pages/wallet/create.vue @@ -1,187 +1,193 @@ - - - - - - - + + diff --git a/pages/wallet/mnemonic.vue b/pages/wallet/mnemonic.vue index 16d7dd0..7ff7c4b 100644 --- a/pages/wallet/mnemonic.vue +++ b/pages/wallet/mnemonic.vue @@ -1,112 +1,122 @@ - - - - - diff --git a/pages/wallet/privatekey.vue b/pages/wallet/privatekey.vue index 7c3def9..026db9e 100644 --- a/pages/wallet/privatekey.vue +++ b/pages/wallet/privatekey.vue @@ -1,119 +1,130 @@ - - - - - diff --git a/pages/wallet/property.vue b/pages/wallet/property.vue index 34b6d54..dc1374e 100644 --- a/pages/wallet/property.vue +++ b/pages/wallet/property.vue @@ -1,359 +1,386 @@ - - - - diff --git a/pages/wallet/resetPassword.vue b/pages/wallet/resetPassword.vue index b888d96..0f83b47 100644 --- a/pages/wallet/resetPassword.vue +++ b/pages/wallet/resetPassword.vue @@ -1,198 +1,203 @@ - - - - diff --git a/pages/wallet/validation.vue b/pages/wallet/validation.vue index 715c48f..46a1567 100644 --- a/pages/wallet/validation.vue +++ b/pages/wallet/validation.vue @@ -1,170 +1,178 @@ - - - - - diff --git a/wallet/Wallet.js b/wallet/Wallet.js deleted file mode 100644 index 217e7fc..0000000 --- a/wallet/Wallet.js +++ /dev/null @@ -1,126 +0,0 @@ -import Bitcore from "bitcore-lib" -import Mnemonic from "bitcore-mnemonic" -import secp256k1 from 'secp256k1' -import { - Address, - pubToAddress, - toBuffer, - toChecksumAddress, - intToBuffer -} from 'ethereumjs-util' -import coinType from './networks.js' -import basex from 'base-x' - -export default class Wallet { - - static coinType = coinType - - /** - * 生成助记词 - * @param {Object} lang - */ - static generateMnemonic(lang) { - if (lang) { - return (new Mnemonic(this.getLanguage(lang))).toString(); - } else { - return (new Mnemonic()).toString(); - } - } - - /** - * 验证助记词 - * @param {Object} code - * @param {Object} lang - */ - static validMnemonic(code, lang) { - if (lang) { - return Mnemonic.isValid(code, this.getLanguage(lang)); - } else { - return Mnemonic.isValid(code); - } - } - - /** - * 获取助记词字典 - * @param {Object} lang - */ - static getLanguage(lang) { - return Mnemonic.Words[lang] - } - - /** - * 转成硬钱包私钥 - * @param {Object} code - */ - static toHDPrivateKey(code) { - return (new Mnemonic(code)).toHDPrivateKey() - } - - /** - * 验证地址是否合法 - * @param {Object} addr - */ - static isValidAddress(addr) { - return Bitcore.Address.isValid(addr) - } - - /** - * 硬钱包私钥转成对应网络的 地址 和 私钥 - * @param {Object} hdPrivateKey - * @param {Object} type - */ - static HDPrivateKeyToAddress(hdPrivateKey, type) { - const derived = hdPrivateKey.derive("m/44'/" + type.type + "'/0'/0/0"); - if (type.type === 195) { - const ethAddr = this.getEthereumAddress(derived) - const addressBuffer = Buffer.concat([intToBuffer(0x41), ethAddr.buf], 21) - return { - address: Bitcore.encoding.Base58Check.encode(addressBuffer), - public_key: derived.privateKey.publicKey.toString(), - private_key: derived.privateKey.toString() - } - } - if (type.type === 144) { - let addr = derived.privateKey.toAddress(type.network).toString() - let deco = Bitcore.encoding.Base58.decode(addr) - - return { - address: basex('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz').encode(deco), - public_key: derived.privateKey.publicKey.toString(), - private_key: derived.privateKey.toString() - } - } - if (this.networkIsEthereum(type)) { - return { - address: toChecksumAddress(this.getEthereumAddress(derived).toString()), - public_key: derived.privateKey.publicKey.toString(), - private_key: derived.privateKey.toString() - } - } - return { - address: derived.privateKey.toAddress(type.network).toString(), - public_key: derived.privateKey.publicKey.toString(), - private_key: derived.privateKey.toString() - } - } - - /** - * 以太坊地址格式转换 - * @param {Object} derived - */ - static getEthereumAddress(derived) { - const publicKey = derived.hdPublicKey.publicKey.toBuffer() - const ethPublicKey = secp256k1.publicKeyConvert(publicKey, false) - .slice(1) - return Address.fromPublicKey(toBuffer(ethPublicKey)) - } - - /** - * 是否是以太坊网络 - * @param {Object} type - */ - static networkIsEthereum(type) { - return type.isEthereum - } - -} diff --git a/wallet/_test.js b/wallet/_test.js deleted file mode 100644 index a8c2e43..0000000 --- a/wallet/_test.js +++ /dev/null @@ -1,29 +0,0 @@ -import { - Wallet -} from "./Wallet.js" - -const code = Wallet.generateMnemonic(this.defaultLanguage) -this.mnemonicCode = code -const hdPrivateKey = Wallet.toHDPrivateKey(this.mnemonicCode) -// const derived = hdPrivateKey.derive("m/44'/61'/0'/0/0"); -// const publicKey = derived.hdPublicKey.publicKey.toBuffer() -// const ethPublicKey = secp256k1.publicKeyConvert(publicKey, false) -// .slice(1) - -// const ethAddr = Address.fromPublicKey(toBuffer(ethPublicKey)).toString(); - -// console.log(toChecksumAddress(ethAddr)); - -// console.log(Address.fromPrivateKey(hdPrivateKey.hdPublicKey.publicKey.toBuffer())); - -var addr = [] -for (var i in this.coinType) { - let whk = Wallet.HDPrivateKeyToAddress(hdPrivateKey, i) - let parmas = { - name: this.coinType[i], - address: whk.address, - private_key: whk.private_key, - } - addr.push(parmas) -} -this.address = addr diff --git a/wallet/index.js b/wallet/index.js deleted file mode 100644 index 62c9e5c..0000000 --- a/wallet/index.js +++ /dev/null @@ -1,24 +0,0 @@ -import store from "@/store/index.js" - -const USE_SOTER_AUTH_KEY = 'USE_SOTER_AUTH_KEY' - -/** - * 初始化配置 - */ -const initWalletConfigs = () => { - // 生物识别 - const USE_SOTER = Boolean(uni.getStorageSync(USE_SOTER_AUTH_KEY)) - store.dispatch('wallet/setSoterAuth', USE_SOTER) - // 获取默认钱包 -} - -const setSoterAuthStatus = (opt) => { - uni.setStorageSync(USE_SOTER_AUTH_KEY, opt) - store.dispatch('wallet/setSoterAuth', opt) -} - -export default { - USE_SOTER_AUTH_KEY, - setSoterAuthStatus, - initWalletConfigs -} \ No newline at end of file diff --git a/wallet/networks.js b/wallet/networks.js deleted file mode 100644 index 179e338..0000000 --- a/wallet/networks.js +++ /dev/null @@ -1,209 +0,0 @@ -import Bitcore from "bitcore-lib" - -export default [{ - type: 0, - name: '比特币', - symbol: 'BTC', - code: 'btc', - isEthereum: false, - network: Bitcore.Networks.mainnet - }, - { - type: 60, - name: '以太坊', - symbol: 'ETH', - code: 'eth', - isEthereum: true - }, - { - type: 61, - name: '以太经典', - symbol: 'ETC', - code: 'etc', - isEthereum: true - }, - { - type: 60, - name: '赤子心', - symbol: 'CZX', - code: 'eth_0x3a2a239b1bdaae768ffa06314d523e88e98d4d1f', - isEthereum: true - }, - // { - // type: 2, - // name: '莱特币', - // symbol: 'LTC', - // isEthereum: false, - // network: Bitcore.Networks.add({ - // name: 'LTC', - // alias: 'LTC', - // pubkeyhash: 0x30, - // privatekey: 0x32, - // scripthash: 0xb0, - // bech32prefix: 'ltc', - // xpubkey: 0x019da462, - // xprivkey: 0x019d9cfe, - // networkMagic: 0xdbb6c0fb - // }) - // }, - { - type: 3, - name: '狗狗币', - symbol: 'DOGE', - code: 'doge', - isEthereum: false, - network: Bitcore.Networks.add({ - name: 'DOGE', - alias: 'DOGE', - pubkeyhash: 0x1e, - privatekey: 0x16, - scripthash: 0x9e, - bech32prefix: 'doge', - xpubkey: 0x02facafd, - xprivkey: 0x02fac398, - networkMagic: 0xc0c0c0c0 - }) - }, - - // { - // type: 133, - // name: '零币', - // symbol: 'ZEC', - // isEthereum: false, - // network: Bitcore.Networks.add({ - // name: 'ZEC', - // alias: 'ZEC', - // pubkeyhash: 0x1e, - // privatekey: 0x16, - // scripthash: 0x9e, - // bech32prefix: 'doge', - // xpubkey: 0x02facafd, - // xprivkey: 0x02fac398, - // networkMagic: 0xc0c0c0c0 - // }) - // }, - // { - // type: 144, - // name: 'XPR - 瑞波币', - // symbol: 'XPR', - // isEthereum: false, - // network: Bitcore.Networks.add({ - // name: 'XPR', - // alias: 'XPR', - // pubkeyhash: 0x1e, - // privatekey: 0x16, - // scripthash: 0x9e, - // bech32prefix: 'doge', - // xpubkey: 0x02facafd, - // xprivkey: 0x02fac398, - // networkMagic: 0xc0c0c0c0 - // }) - // }, - // { - // type: 145, - // name: '比特现金', - // symbol: 'BCH', - // isEthereum: false, - // network: Bitcore.Networks.add({ - // name: 'BCH', - // alias: 'BCH', - // pubkeyhash: 0x00, - // privatekey: 0x05, - // scripthash: 0x80, - // bech32prefix: 'bitcoincash', - // xpubkey: 0x0488b21e, - // xprivkey: 0x0488ade4, - // networkMagic: 0xd9b4bef9 - // }) - // }, - // { - // type: 195, - // name: '波场', - // symbol: 'TRX', - // isEthereum: false, - // network: Bitcore.Networks.add({ - // name: 'TRX', - // alias: 'TRX', - // pubkeyhash: 0x41, - // privatekey: 0x05, - // scripthash: 0x80, - // bech32prefix: '', - // xpubkey: 0x0488b21e, - // xprivkey: 0x0488ade4 - // }) - // }, - { - type: 195, - name: 'USDT(TRC20)', - symbol: 'USDT', - code: 'trx_TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t', - isEthereum: false, - network: Bitcore.Networks.add({ - name: 'USDT', - alias: 'USDT', - pubkeyhash: 0x41, - privatekey: 0x05, - scripthash: 0x80, - bech32prefix: '', - xpubkey: 0x0488b21e, - xprivkey: 0x0488ade4 - }) - }, - { - type: 195, - name: 'USDT(ERC20)', - symbol: 'USDT', - code: 'eth_0xdac17f958d2ee523a2206206994597c13d831ec7', - isEthereum: true - }, - { - type: 0, - name: 'USDT(OMNI)', - symbol: 'USDT', - code: 'usdt', - isEthereum: false, - network: Bitcore.Networks.mainnet - }, - { - type: 13107, - name: '比特元', - symbol: 'BTY', - code: 'bty', - isEthereum: false, - network: Bitcore.Networks.add({ - name: 'BTY', - alias: 'BTY', - pubkeyhash: 0x00, - privatekey: 0x05, - scripthash: 0x80, - bech32prefix: 'bityuan', - xpubkey: 0x0488b21e, - xprivkey: 0x0488ade4, - networkMagic: 0xd9b4bef9 - }) - }, - // { - // type: 60, - // name: '元链', - // symbol: 'YCC', - // isEthereum: true - // }, - { - type: 13107, - name: 'JZC', - symbol: 'JZC', - code: 'bty', - isEthereum: false, - network: Bitcore.Networks.add({ - name: 'JZC', - alias: 'JZC', - pubkeyhash: 0x00, - privatekey: 0x05, - scripthash: 0x80, - bech32prefix: 'bityuan', - xpubkey: 0x0488b21e, - xprivkey: 0x0488ade4, - networkMagic: 0xd9b4bef9 - }) - } -] diff --git a/yarn.lock b/yarn.lock index dd0684d..4005bdf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,194 +2,27 @@ # yarn lockfile v1 -"base-x@^3.0.2": - "integrity" "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==" - "resolved" "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz" - "version" "3.0.9" - dependencies: - "safe-buffer" "^5.0.1" +moment@^2.29.1: + version "2.29.1" + resolved "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz" + integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== -"bech32@=2.0.0": - "integrity" "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" - "resolved" "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz" - "version" "2.0.0" +uni-read-pages@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/uni-read-pages/-/uni-read-pages-1.0.5.tgz" + integrity sha512-GkrrZ0LX0vn9R5k6RKEi0Ez3Q3e2vUpjXQ8Z6/K/d28KudI9ajqgt8WEjQFlG5EPm1K6uTArN8LlqmZTEixDUA== -"bigi@^1.1.0", "bigi@^1.4.2": - "integrity" "sha1-nGZalfiLiwj8Bc/XMfVhhZ1yWCU=" - "resolved" "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz" - "version" "1.4.2" +uni-simple-router@^2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/uni-simple-router/-/uni-simple-router-2.0.7.tgz" + integrity sha512-8FKv5dw7Eoonm0gkO8udprrxzin0fNUI0+AvIphFkFRH5ZmP5ZWJ2pvnWzb2NiiqQSECTSU5VSB7HhvOSwD5eA== -"bip-schnorr@=0.6.4": - "integrity" "sha512-dNKw7Lea8B0wMIN4OjEmOk/Z5qUGqoPDY0P2QttLqGk1hmDPytLWW8PR5Pb6Vxy6CprcdEgfJpOjUu+ONQveyg==" - "resolved" "https://registry.npmjs.org/bip-schnorr/-/bip-schnorr-0.6.4.tgz" - "version" "0.6.4" - dependencies: - "bigi" "^1.4.2" - "ecurve" "^1.0.6" - "js-sha256" "^0.9.0" - "randombytes" "^2.1.0" - "safe-buffer" "^5.2.1" +uview-ui@^2.0.19: + version "2.0.19" + resolved "https://registry.npmjs.org/uview-ui/-/uview-ui-2.0.19.tgz" + integrity sha512-ddZiaP7R9wsUxMzAuhuXgh5OswgCm2lKuulTqjnRXFr0uUWsgL1iBifU3GbOwpwP0LtTHKJOo9rYv1LP0WXmzA== -"bitcore-lib@^8.25.25": - "integrity" "sha512-H6qNCVl4M8/MglXhvc04mmeus1d6nrmqTJGQ+xezJLvL7hs7R3dyBPtOqSP3YSw0iq/GWspMd8f5OOlyXVipJQ==" - "resolved" "https://registry.npmjs.org/bitcore-lib/-/bitcore-lib-8.25.25.tgz" - "version" "8.25.25" - dependencies: - "bech32" "=2.0.0" - "bip-schnorr" "=0.6.4" - "bn.js" "=4.11.8" - "bs58" "^4.0.1" - "buffer-compare" "=1.1.1" - "elliptic" "^6.5.3" - "inherits" "=2.0.1" - "lodash" "^4.17.20" - -"bitcore-mnemonic@^8.25.25": - "integrity" "sha512-7HvRxHrmd+Rh0Ohl0SEDMKQBAM+FoevXbCFnxGju6H+uZjtWMOToHA8vUg0+B91pfEMjdt9mQVB/wSA8GMqnCA==" - "resolved" "https://registry.npmjs.org/bitcore-mnemonic/-/bitcore-mnemonic-8.25.25.tgz" - "version" "8.25.25" - dependencies: - "bitcore-lib" "^8.25.25" - "unorm" "^1.4.1" - -"bn.js@^4.11.9": - "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - "version" "4.12.0" - -"bn.js@=4.11.8": - "integrity" "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz" - "version" "4.11.8" - -"brorand@^1.1.0": - "integrity" "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - "resolved" "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" - "version" "1.1.0" - -"bs58@^4.0.1": - "integrity" "sha1-vhYedsNU9veIrkBx9j806MTwpCo=" - "resolved" "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "base-x" "^3.0.2" - -"buffer-compare@=1.1.1": - "integrity" "sha1-W+e+hTr4kZjR9N3AkNHWakiu9ZY=" - "resolved" "https://registry.npmjs.org/buffer-compare/-/buffer-compare-1.1.1.tgz" - "version" "1.1.1" - -"ecurve@^1.0.6": - "integrity" "sha512-/BzEjNfiSuB7jIWKcS/z8FK9jNjmEWvUV2YZ4RLSmcDtP7Lq0m6FvDuSnJpBlDpGRpfRQeTLGLBI8H+kEv0r+w==" - "resolved" "https://registry.npmjs.org/ecurve/-/ecurve-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "bigi" "^1.1.0" - "safe-buffer" "^5.0.1" - -"elliptic@^6.5.3": - "integrity" "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==" - "resolved" "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" - "version" "6.5.4" - dependencies: - "bn.js" "^4.11.9" - "brorand" "^1.1.0" - "hash.js" "^1.0.0" - "hmac-drbg" "^1.0.1" - "inherits" "^2.0.4" - "minimalistic-assert" "^1.0.1" - "minimalistic-crypto-utils" "^1.0.1" - -"hash.js@^1.0.0", "hash.js@^1.0.3": - "integrity" "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==" - "resolved" "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "inherits" "^2.0.3" - "minimalistic-assert" "^1.0.1" - -"hmac-drbg@^1.0.1": - "integrity" "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=" - "resolved" "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "hash.js" "^1.0.3" - "minimalistic-assert" "^1.0.0" - "minimalistic-crypto-utils" "^1.0.1" - -"inherits@^2.0.3": - "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - "version" "2.0.4" - -"inherits@^2.0.4": - "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - "version" "2.0.4" - -"inherits@=2.0.1": - "integrity" "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - "version" "2.0.1" - -"js-sha256@^0.9.0": - "integrity" "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==" - "resolved" "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz" - "version" "0.9.0" - -"lodash@^4.17.20": - "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - "version" "4.17.21" - -"minimalistic-assert@^1.0.0", "minimalistic-assert@^1.0.1": - "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - "version" "1.0.1" - -"minimalistic-crypto-utils@^1.0.1": - "integrity" "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - "resolved" "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" - "version" "1.0.1" - -"moment@^2.29.1": - "integrity" "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" - "resolved" "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz" - "version" "2.29.1" - -"randombytes@^2.1.0": - "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" - "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "safe-buffer" "^5.1.0" - -"safe-buffer@^5.0.1", "safe-buffer@^5.1.0", "safe-buffer@^5.2.1": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"uni-read-pages@^1.0.5": - "integrity" "sha512-GkrrZ0LX0vn9R5k6RKEi0Ez3Q3e2vUpjXQ8Z6/K/d28KudI9ajqgt8WEjQFlG5EPm1K6uTArN8LlqmZTEixDUA==" - "resolved" "https://registry.npmjs.org/uni-read-pages/-/uni-read-pages-1.0.5.tgz" - "version" "1.0.5" - -"uni-simple-router@^2.0.7": - "integrity" "sha512-8FKv5dw7Eoonm0gkO8udprrxzin0fNUI0+AvIphFkFRH5ZmP5ZWJ2pvnWzb2NiiqQSECTSU5VSB7HhvOSwD5eA==" - "resolved" "https://registry.npmjs.org/uni-simple-router/-/uni-simple-router-2.0.7.tgz" - "version" "2.0.7" - -"unorm@^1.4.1": - "integrity" "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==" - "resolved" "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz" - "version" "1.6.0" - -"uview-ui@^2.0.19": - "integrity" "sha512-ddZiaP7R9wsUxMzAuhuXgh5OswgCm2lKuulTqjnRXFr0uUWsgL1iBifU3GbOwpwP0LtTHKJOo9rYv1LP0WXmzA==" - "resolved" "https://registry.npmjs.org/uview-ui/-/uview-ui-2.0.19.tgz" - "version" "2.0.19" - -"vuex@^3.6.2": - "integrity" "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==" - "resolved" "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz" - "version" "3.6.2" +vuex@^3.6.2: + version "3.6.2" + resolved "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz" + integrity sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw== From 85f9a091c94144c0642fd5c082a9d27d72ff1414 Mon Sep 17 00:00:00 2001 From: Jason Date: Tue, 8 Feb 2022 09:42:48 +0800 Subject: [PATCH 13/29] scss --- pages/im/components/sentPopups.nvue | 42 ++++---- pages/im/components/sentText.nvue | 57 +++++----- pages/im/components/sentVoice.nvue | 95 +++++++++-------- pages/im/components/showImage.nvue | 4 +- pages/im/components/showText.nvue | 2 +- pages/im/components/showVoice.nvue | 12 +-- pages/im/private/call.nvue | 143 +++++++++++++------------ pages/im/private/chat.nvue | 159 ++++++++++++++-------------- 8 files changed, 260 insertions(+), 254 deletions(-) diff --git a/pages/im/components/sentPopups.nvue b/pages/im/components/sentPopups.nvue index ac3aa5a..2a3566d 100644 --- a/pages/im/components/sentPopups.nvue +++ b/pages/im/components/sentPopups.nvue @@ -1,28 +1,28 @@ + - + } + + + diff --git a/static/.DS_Store b/static/.DS_Store index 61af3bdd7bcc51d72116b969c1fe3bdba080208a..9cef02d4feac8305cdf1df5756e8c53c40f8e6d2 100644 GIT binary patch delta 39 vcmZn(XbIR*Dm2+gtd-SVN5Ry5lCa$5_W~-LorI6_Y-UsV%d(k8l#v+#2-yru delta 51 zcmV-30L=e{P=rvhbrJ!|lh7A{3K)BPH90aYAT~0S{}LVnnUnAk9|4-PJ`>0cvj-sj J1hWDa0R!Nf5jg+= diff --git a/static/icon/clock_icon.png b/static/icon/clock_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..43c40664cc26a7f7706a738b2e7005c3ce71a6ca GIT binary patch literal 3393 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 literal 0 HcmV?d00001 From a3ddf46f885338150ff6c1bb297fdcc0b8a0e413 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=90=E6=98=8E=E6=98=8E?= <970899069@qq.com> Date: Tue, 8 Feb 2022 13:33:14 +0800 Subject: [PATCH 16/29] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E6=BB=9A=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 12292 -> 12292 bytes lib/emoji.js | 33 +++++++++++++++++++++++++++++ pages/im/components/sentText.nvue | 13 ++++++++++-- pages/im/components/sentVoice.nvue | 2 +- pages/im/private/chat.nvue | 30 ++++++++++++-------------- static/.DS_Store | Bin 10244 -> 10244 bytes 6 files changed, 58 insertions(+), 20 deletions(-) create mode 100644 lib/emoji.js diff --git a/.DS_Store b/.DS_Store index 2a302a8794f4b5c8a10dbb656d9dac78105832bc..29b9dbd7ef013fcc859b955544c1dccf51fdc8b0 100644 GIT binary patch delta 223 zcmZokXi1ph&lo;2Af9zS0|Udnja$O`8I?El2&k}3R#0M@{6Ud-a=D23od%1Sii_(U?46RbcXO74FG*R1QsUQ4^kgSCxD69@UeK w-J9Fg5*a5S6qf|~S`x(%o;mr+P(KK4X3_Y`!cq+M)?`mr`N?jo5o8$y0DV+(9RL6T diff --git a/lib/emoji.js b/lib/emoji.js new file mode 100644 index 0000000..53a62a2 --- /dev/null +++ b/lib/emoji.js @@ -0,0 +1,33 @@ +export default [ + "😀", "😁", "😃", "😄", "😅", "😆", "😉", "😊", "😋", "😎", "😍", + "😘", "😗", "😙", "😚", "☺", "😇", "😐", "😑", "😶", "😏", "😣", "😥", "😮", "😯", "😪", + "😫", "😴", "😌", "😛", "😜", "😝", "😒", "😓", "😔", "😕", "😲", "😷", "😖", "😞", "😟", + "😤", "😢", "😭", "😦", "😧", "😨", "😬", "😰", "😱", "😳", "😵", "😡", "😠", + "👦", "👧", "👨", "👩", "👴", "👵", "👶", "👱", "👮", "👲", "👳", "👷", "👸", "💂", "🎅", "👰", "👼", + "💆", "💇", "🙍", "🙎", "🙅", "🙆", "💁", "🙋", "🙇", "🙌", "🙏", "👤", "👥", "🚶", "🏃", "👯", + "💃", "👫", "👬", "👭", "💏", "💑", "👪", "💪", "👈", "👉", "☝", "👆", "👇", "✌", "✋", "👌", + "👍", "👎", "✊", "👊", "👋", "👏", "👐", "✍", "👣", "👀", "👂", "👃", "👅", "👄", "💋", "👓", + "👔", "👙", "👛", "👜", "👝", "🎒", "💼", "👞", "👟", "👠", "👡", "👢", "👑", + "👒", "🎩", "🎓", "💄", "💅", "💍", "🌂", "📶", "📳", "📴", "♻", "🏧","🚮", "🚰", "♿", "🚹", "🚺", + "🚻", "🚼", "🚾", "⚠", "🚸", "⛔", "🚫", "🚳", "🚭", "🚯", "🚱", "🚷", "🔞", "💈", + "🙈", "🐒", "🐶", "🐕", "🐩", "🐺", "🐱","🐈", "🐯", "🐅", "🐆", "🐴", "🐎", "🐮", "🐂", + "🐃","🐄","🐷","🐖","🐗","🐽","🐏","🐑","🐐","🐪","🐫","🐘","🐭", + "🐁","🐀","🐹","🐰","🐇","🐻","🐨","🐼","🐾","🐔","🐓","🐣","🐤","🐥", + "🐦", "🐧", "🐸", "🐊","🐢", "🐍", "🐲", "🐉", "🐳", "🐋", "🐬", "🐟", "🐠", "🐡", + "🐙", "🐚", "🐌", "🐛", "🐜", "🐝", "🐞", "🦋", "💐", "🌸", "💮", "🌹", "🌺", + "🌻", "🌼", "🌷", "🌱", "🌲", "🌳", "🌴", "🌵", "🌾", "🌿", "🍀", "🍁", "🍂", "🍃", + "🌍","🌎","🌏","🌐","🌑","🌒","🌓","🌔","🌕","🌖","🌗","🌘","🌙","🌚", + "🌛","🌜","☀","🌝","🌞","⭐","🌟","🌠","☁","⛅","☔","⚡","❄","🔥","💧","🌊", + "🏀", "🏈", "🏉", "🎾", "🎱", "🎳", "⛳", "🎣", "🎽", "🎿", + "😈", "👿", "👹", "👺", "💀", "☠", "👻", "👽", "👾", "💣", + "🌋", "🗻", "🏠", "🏡", "🏢", "🏣", "🏤", "🏥", "🏦", "🏨", + "⛲", "🌁", "🌃", "🌆", "🌇", "🎠", "🎡", "🎢", "🚂", + "🚌", "🚍", "🚎", "🚏", "🚐", "🚑", "🚒", "🚓", "🚔", "🚕", "🚖", "🚗", "🚘", + "💌", "💎", "🔪", "💈", "🚪", "🚽", "🚿", "🛁", "⌛", "⏳", "⌚", "⏰", "🎈", "🎉", + "💤", "💢", "💬", "💭", "♨", "🌀", "🔔", "🔕", "✡", "✝", "🔯", "📛", "🔰", "🔱", "⭕", "✅", + "☑", "✔", "✖", "❌", "❎", "➕", "➖", "➗", "➰", "➿", "〽", "✳", "✴", "❇", "‼", "⁉", "❓", "❔", "❕", "❗", + "🕛", "🕧", "🕐", "🕜", "🕑", "🕝", "🕒", "🕞", "🕓", "🕟", "🕔", "🕠", "🕕", "🕡", + "🕖", "🕢", "🕗", "🕣", "🕘", "🕤", "🕙", "🕥", "🕚", "🕦", "⏱", "⏲", "🕰", + "💘", "❤", "💓", "💔", "💕", "💖", "💗", "💙", "💚", "💛", "💜", "💝", "💞", "💟❣", + "🍇", "🍈", "🍉", "🍊", "🍋", "🍌", "🍍", "🍎", "🍏", "🍐", "🍑", "🍒", "🍓", +] \ No newline at end of file diff --git a/pages/im/components/sentText.nvue b/pages/im/components/sentText.nvue index 4bea6a9..c787f6f 100644 --- a/pages/im/components/sentText.nvue +++ b/pages/im/components/sentText.nvue @@ -1,6 +1,15 @@ @@ -71,7 +80,7 @@ .input { background: #F3F6FB; height: 70rpx; - width: 460rpx; + width: 500rpx; border-radius: 10rpx; margin-right: 15rpx; padding: 0 20rpx; diff --git a/pages/im/components/sentVoice.nvue b/pages/im/components/sentVoice.nvue index 197d54a..8ab1148 100644 --- a/pages/im/components/sentVoice.nvue +++ b/pages/im/components/sentVoice.nvue @@ -102,7 +102,7 @@ line-height: 70rpx; justify-content: center; align-items: center; - width: 460rpx; + width: 500rpx; border-radius: 10rpx; margin-right: 15rpx; diff --git a/pages/im/private/chat.nvue b/pages/im/private/chat.nvue index f91fb03..f94ae6c 100644 --- a/pages/im/private/chat.nvue +++ b/pages/im/private/chat.nvue @@ -36,13 +36,12 @@ @success="getMessageList" /> - + - + @@ -148,10 +147,14 @@ }) }, // 滚动到底部 - scrollBottom() { + scrollBottom(type) { + if(type === 'msgPopups'){ + this.showPopups = !this.showPopups + } setTimeout(() => { let el = this.$refs.chatBottom - ChatList.scrollToElement(el, { + ChatList.scrollToElement(el, { + offset: 0, animated: false }) }, 50) @@ -165,19 +168,14 @@ .chat { background: $window-color; flex: 1; - - - .body { - flex: 1; - - .cell { + .body { + flex: 1; + .cell { padding: 10rpx 30rpx; - .time { justify-content: center; align-items: center; - padding-bottom: 20rpx; - + padding-bottom: 20rpx; .text { background: #fff; font-size: 24rpx; @@ -238,12 +236,10 @@ padding: 20rpx 30rpx; display: flex; justify-content: space-between; - flex-direction: row; - + flex-direction: row; .msg-type { width: 70rpx; height: 70rpx; - .icon { margin: 5rpx; width: 60rpx; diff --git a/static/.DS_Store b/static/.DS_Store index 9cef02d4feac8305cdf1df5756e8c53c40f8e6d2..a81ade7433a38163cee5ca2c259b24132f6990d5 100644 GIT binary patch delta 227 zcmZn(XbIR*A2B_==7q@6#ule;?$DKVj{lvAQc(;<(@!Y0Y#~0nW^Pq6~P6G$(ecS%Jv@^z(Cm{ z0LIXOFa#KsAq)lvWrq+4Fq=bwF(fZPFO`#1*})qs%fX<{;K<;`5X_LlP|ncDFpFUg v!w!a{47V8GFnnW_WMLFzRASU-G-0%5v}g2S3}g&q3}K99jN1H3L`WC_bSgFj delta 227 zcmZn(XbIR*A?oF{JhD$BEIzznLsVUnN_J^rNIS>$(ecS%Jv@^z<^WP zK?A}PU{HoI7#NftLLp2J0mhKL{Jd14ssMV|dK)mEk`lFQXWv5~DVwjsT-6qdB7kqbH*mqYq;sW6 Date: Tue, 8 Feb 2022 14:10:20 +0800 Subject: [PATCH 17/29] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=BE=A4=E8=81=8A?= =?UTF-8?q?=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/im/index.vue | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/pages/im/index.vue b/pages/im/index.vue index 6b45f7a..c8db817 100644 --- a/pages/im/index.vue +++ b/pages/im/index.vue @@ -5,8 +5,12 @@ - 私聊 - 群聊 + + 私聊 + + + 群聊 + @@ -265,20 +269,18 @@ justify-content: space-between; height: 60rpx; line-height: 60rpx; - .tabs { - .item { + .item { + position: relative; margin-left: $margin; display: inline-block; font-size: $title-size-lg; color: $text-gray; padding: 0 ($padding - 10); border-radius: 30rpx; - &:first-child { margin: 0; } - &.show { background: rgba($color: $main-color, $alpha: .1); color: $main-color; From 784483cc470f03435a218c862602ba6fca97ceeb Mon Sep 17 00:00:00 2001 From: Jason Date: Tue, 8 Feb 2022 14:11:15 +0800 Subject: [PATCH 18/29] stash --- pages/im/components/sentText.nvue | 24 ++++++------- pages/im/index.vue | 60 +++++++++++++++++-------------- 2 files changed, 46 insertions(+), 38 deletions(-) diff --git a/pages/im/components/sentText.nvue b/pages/im/components/sentText.nvue index 4bea6a9..96b4553 100644 --- a/pages/im/components/sentText.nvue +++ b/pages/im/components/sentText.nvue @@ -62,7 +62,7 @@ } - diff --git a/components/friend-apply-reject-agree/index.vue b/pages/im/components/friendApplyList.vue similarity index 86% rename from components/friend-apply-reject-agree/index.vue rename to pages/im/components/friendApplyList.vue index c05d136..10e2762 100644 --- a/components/friend-apply-reject-agree/index.vue +++ b/pages/im/components/friendApplyList.vue @@ -1,15 +1,14 @@