增加消息类型:event
This commit is contained in:
Vendored
+39
-7
@@ -6820,17 +6820,27 @@ var editor_component = normalizeComponent(
|
|||||||
}])));
|
}])));
|
||||||
}
|
}
|
||||||
|
|
||||||
node.push(h(tagName, helper_default()([{
|
var attrs;
|
||||||
"ref": "message",
|
|
||||||
"refInFor": true
|
if (message.type == 'event') {
|
||||||
}, {
|
attrs = {
|
||||||
"attrs": {
|
message: message
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
attrs = {
|
||||||
timeFormat: _this.timeFormat,
|
timeFormat: _this.timeFormat,
|
||||||
message: message,
|
message: message,
|
||||||
reverse: _this.reverseUserId == message.fromUser.id,
|
reverse: _this.reverseUserId == message.fromUser.id,
|
||||||
hideTime: _this.hideTime,
|
hideTime: _this.hideTime,
|
||||||
hideName: _this.hideName
|
hideName: _this.hideName
|
||||||
}
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
node.push(h(tagName, helper_default()([{
|
||||||
|
"ref": "message",
|
||||||
|
"refInFor": true
|
||||||
|
}, {
|
||||||
|
"attrs": attrs
|
||||||
}])));
|
}])));
|
||||||
return node;
|
return node;
|
||||||
})]);
|
})]);
|
||||||
@@ -7325,14 +7335,27 @@ var file_component = normalizeComponent(
|
|||||||
/* harmony default export */ var eventvue_type_script_lang_js_ = ({
|
/* harmony default export */ var eventvue_type_script_lang_js_ = ({
|
||||||
name: "lemonMessageEvent",
|
name: "lemonMessageEvent",
|
||||||
inheritAttrs: false,
|
inheritAttrs: false,
|
||||||
|
inject: ["IMUI"],
|
||||||
render: function render() {
|
render: function render() {
|
||||||
|
var _this = this;
|
||||||
|
|
||||||
var h = arguments[0];
|
var h = arguments[0];
|
||||||
var content = this.$attrs.message.content;
|
var content = this.$attrs.message.content;
|
||||||
return h("div", {
|
return h("div", {
|
||||||
"class": "lemon-message lemon-message-event"
|
"class": "lemon-message lemon-message-event"
|
||||||
}, [h("span", {
|
}, [h("span", {
|
||||||
"class": "lemon-message-event__content"
|
"class": "lemon-message-event__content",
|
||||||
|
"on": {
|
||||||
|
"click": function click(e) {
|
||||||
|
return _this._emitClick(e, "content");
|
||||||
|
}
|
||||||
|
}
|
||||||
}, [content])]);
|
}, [content])]);
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
_emitClick: function _emitClick(e, key) {
|
||||||
|
this.IMUI.$emit("message-click", e, key, this.$attrs.message, this.IMUI);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// CONCATENATED MODULE: ./packages/components/message/event.vue?vue&type=script&lang=js&
|
// CONCATENATED MODULE: ./packages/components/message/event.vue?vue&type=script&lang=js&
|
||||||
@@ -7442,6 +7465,9 @@ var CONTACT_TYPE = ["many", "single"];
|
|||||||
},
|
},
|
||||||
text: function text(message) {
|
text: function text(message) {
|
||||||
return this.replaceEmojiName(message.content);
|
return this.replaceEmojiName(message.content);
|
||||||
|
},
|
||||||
|
event: function event(message) {
|
||||||
|
return '[通知]';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/classCallCheck.js
|
// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/classCallCheck.js
|
||||||
@@ -8111,6 +8137,12 @@ var renderDrawerContent = function renderDrawerContent() {};
|
|||||||
packages_lastContentRender[messageType] = render;
|
packages_lastContentRender[messageType] = render;
|
||||||
},
|
},
|
||||||
lastContentRender: function lastContentRender(message) {
|
lastContentRender: function lastContentRender(message) {
|
||||||
|
if (!isFunction(packages_lastContentRender[message.type])) {
|
||||||
|
console.error("not found '".concat(message.type, "' of the latest message renderer,try to use \u2018setLastContentRender()\u2019"));
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
;
|
||||||
return packages_lastContentRender[message.type].call(this, message);
|
return packages_lastContentRender[message.type].call(this, message);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
Vendored
+39
-7
@@ -6829,17 +6829,27 @@ var editor_component = normalizeComponent(
|
|||||||
}])));
|
}])));
|
||||||
}
|
}
|
||||||
|
|
||||||
node.push(h(tagName, helper_default()([{
|
var attrs;
|
||||||
"ref": "message",
|
|
||||||
"refInFor": true
|
if (message.type == 'event') {
|
||||||
}, {
|
attrs = {
|
||||||
"attrs": {
|
message: message
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
attrs = {
|
||||||
timeFormat: _this.timeFormat,
|
timeFormat: _this.timeFormat,
|
||||||
message: message,
|
message: message,
|
||||||
reverse: _this.reverseUserId == message.fromUser.id,
|
reverse: _this.reverseUserId == message.fromUser.id,
|
||||||
hideTime: _this.hideTime,
|
hideTime: _this.hideTime,
|
||||||
hideName: _this.hideName
|
hideName: _this.hideName
|
||||||
}
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
node.push(h(tagName, helper_default()([{
|
||||||
|
"ref": "message",
|
||||||
|
"refInFor": true
|
||||||
|
}, {
|
||||||
|
"attrs": attrs
|
||||||
}])));
|
}])));
|
||||||
return node;
|
return node;
|
||||||
})]);
|
})]);
|
||||||
@@ -7334,14 +7344,27 @@ var file_component = normalizeComponent(
|
|||||||
/* harmony default export */ var eventvue_type_script_lang_js_ = ({
|
/* harmony default export */ var eventvue_type_script_lang_js_ = ({
|
||||||
name: "lemonMessageEvent",
|
name: "lemonMessageEvent",
|
||||||
inheritAttrs: false,
|
inheritAttrs: false,
|
||||||
|
inject: ["IMUI"],
|
||||||
render: function render() {
|
render: function render() {
|
||||||
|
var _this = this;
|
||||||
|
|
||||||
var h = arguments[0];
|
var h = arguments[0];
|
||||||
var content = this.$attrs.message.content;
|
var content = this.$attrs.message.content;
|
||||||
return h("div", {
|
return h("div", {
|
||||||
"class": "lemon-message lemon-message-event"
|
"class": "lemon-message lemon-message-event"
|
||||||
}, [h("span", {
|
}, [h("span", {
|
||||||
"class": "lemon-message-event__content"
|
"class": "lemon-message-event__content",
|
||||||
|
"on": {
|
||||||
|
"click": function click(e) {
|
||||||
|
return _this._emitClick(e, "content");
|
||||||
|
}
|
||||||
|
}
|
||||||
}, [content])]);
|
}, [content])]);
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
_emitClick: function _emitClick(e, key) {
|
||||||
|
this.IMUI.$emit("message-click", e, key, this.$attrs.message, this.IMUI);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// CONCATENATED MODULE: ./packages/components/message/event.vue?vue&type=script&lang=js&
|
// CONCATENATED MODULE: ./packages/components/message/event.vue?vue&type=script&lang=js&
|
||||||
@@ -7451,6 +7474,9 @@ var CONTACT_TYPE = ["many", "single"];
|
|||||||
},
|
},
|
||||||
text: function text(message) {
|
text: function text(message) {
|
||||||
return this.replaceEmojiName(message.content);
|
return this.replaceEmojiName(message.content);
|
||||||
|
},
|
||||||
|
event: function event(message) {
|
||||||
|
return '[通知]';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/classCallCheck.js
|
// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/classCallCheck.js
|
||||||
@@ -8120,6 +8146,12 @@ var renderDrawerContent = function renderDrawerContent() {};
|
|||||||
packages_lastContentRender[messageType] = render;
|
packages_lastContentRender[messageType] = render;
|
||||||
},
|
},
|
||||||
lastContentRender: function lastContentRender(message) {
|
lastContentRender: function lastContentRender(message) {
|
||||||
|
if (!isFunction(packages_lastContentRender[message.type])) {
|
||||||
|
console.error("not found '".concat(message.type, "' of the latest message renderer,try to use \u2018setLastContentRender()\u2019"));
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
;
|
||||||
return packages_lastContentRender[message.type].call(this, message);
|
return packages_lastContentRender[message.type].call(this, message);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+20
-3
@@ -30,6 +30,7 @@
|
|||||||
<a target="_blank" style="font-size:14px" href="https://codesandbox.io/s/sweet-chaplygin-s24mb?fontsize=14&hidenavigation=1&theme=dark">在线编辑代码</a>
|
<a target="_blank" style="font-size:14px" href="https://codesandbox.io/s/sweet-chaplygin-s24mb?fontsize=14&hidenavigation=1&theme=dark">在线编辑代码</a>
|
||||||
<div class="action">
|
<div class="action">
|
||||||
<lemon-button @click="appendMessage">发送消息</lemon-button>
|
<lemon-button @click="appendMessage">发送消息</lemon-button>
|
||||||
|
<lemon-button @click="appendEventMessage">发送 event 消息</lemon-button>
|
||||||
<lemon-button @click="removeMessage">删除最近一条消息</lemon-button>
|
<lemon-button @click="removeMessage">删除最近一条消息</lemon-button>
|
||||||
<lemon-button @click="updateMessage">修改消息</lemon-button>
|
<lemon-button @click="updateMessage">修改消息</lemon-button>
|
||||||
<lemon-button @click="appendCustomMessage">发送自定义消息</lemon-button>
|
<lemon-button @click="appendCustomMessage">发送自定义消息</lemon-button>
|
||||||
@@ -200,8 +201,8 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>type</td>
|
<td>type</td>
|
||||||
<td>消息类型:file | image | text</td>
|
<td>消息类型:file | image | text | event</td>
|
||||||
<td>String</td>
|
<td>String | Vnode</td>
|
||||||
<td>-</td>
|
<td>-</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -634,7 +635,7 @@
|
|||||||
|
|
||||||
<div class="title" id="help">如何创建自定义消息?</div>
|
<div class="title" id="help">如何创建自定义消息?</div>
|
||||||
<div>
|
<div>
|
||||||
<p>Lemon-IMUI 目前内置了file、image、text三种消息类型,在实际应用当中肯定是不够的哦,咋办?没事的,我们继续往下see。<br/>要创建自定义消息首先要确定新消息的 Message 结构。</p>
|
<p>Lemon-IMUI 目前内置了file、image、text、event四种消息类型,在实际应用当中肯定是不够的哦,咋办?没事的,我们继续往下see。<br/>要创建自定义消息首先要确定新消息的 Message 结构。</p>
|
||||||
<pre>
|
<pre>
|
||||||
{
|
{
|
||||||
//值为 voice,用于解析的组件 name 必须为 lemonMessageVoice
|
//值为 voice,用于解析的组件 name 必须为 lemonMessageVoice
|
||||||
@@ -817,6 +818,11 @@ export default {
|
|||||||
|
|
||||||
const { IMUI } = this.$refs;
|
const { IMUI } = this.$refs;
|
||||||
|
|
||||||
|
|
||||||
|
IMUI.setLastContentRender('event',(message)=>{
|
||||||
|
return '[有人邀请你加入群组]';
|
||||||
|
});
|
||||||
|
|
||||||
let contactList = [
|
let contactList = [
|
||||||
{ ...contactData1 },
|
{ ...contactData1 },
|
||||||
{ ...contactData2 },
|
{ ...contactData2 },
|
||||||
@@ -1326,6 +1332,17 @@ export default {
|
|||||||
};
|
};
|
||||||
IMUI.appendMessage(message,true);
|
IMUI.appendMessage(message,true);
|
||||||
},
|
},
|
||||||
|
appendEventMessage(){
|
||||||
|
const { IMUI } = this.$refs;
|
||||||
|
const message = {
|
||||||
|
id:generateRandId(),
|
||||||
|
type:'event',
|
||||||
|
content:<span>邀请你加入群聊 <b style="color:#333;cursor:pointer" on-click={()=>alert('OK')}>接受</b></span>,
|
||||||
|
toContactId:'contact-3',
|
||||||
|
sendTime:getTime(),
|
||||||
|
};
|
||||||
|
IMUI.appendMessage(message,true);
|
||||||
|
},
|
||||||
updateContact() {
|
updateContact() {
|
||||||
this.$refs.IMUI.updateContact("contact-3", {
|
this.$refs.IMUI.updateContact("contact-3", {
|
||||||
unread: 10,
|
unread: 10,
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1 +1 @@
|
|||||||
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><link rel=icon href=favicon.ico><title>Lemon IMUI</title><link href=css/index.28bed5a5.css rel=preload as=style><link href=js/chunk-vendors.e4810482.js rel=preload as=script><link href=js/index.bd4312c8.js rel=preload as=script><link href=css/index.28bed5a5.css rel=stylesheet></head><body><noscript><strong>We're sorry but flat-im doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=js/chunk-vendors.e4810482.js></script><script src=js/index.bd4312c8.js></script></body></html>
|
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><link rel=icon href=favicon.ico><title>Lemon IMUI</title><link href=css/index.28bed5a5.css rel=preload as=style><link href=js/chunk-vendors.e4810482.js rel=preload as=script><link href=js/index.f559817e.js rel=preload as=script><link href=css/index.28bed5a5.css rel=stylesheet></head><body><noscript><strong>We're sorry but flat-im doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=js/chunk-vendors.e4810482.js></script><script src=js/index.f559817e.js></script></body></html>
|
||||||
Vendored
-1
File diff suppressed because one or more lines are too long
Vendored
+1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "lemon-imui",
|
"name": "lemon-imui",
|
||||||
"version": "1.3.0",
|
"version": "1.3.1",
|
||||||
"main": "dist/index.umd.min.js",
|
"main": "dist/index.umd.min.js",
|
||||||
"description": "基于 VUE2.0 的 IM 聊天组件",
|
"description": "基于 VUE2.0 的 IM 聊天组件",
|
||||||
"homepage": "https://github.com/fanjyy/lemon-imui",
|
"homepage": "https://github.com/fanjyy/lemon-imui",
|
||||||
|
|||||||
@@ -521,6 +521,10 @@ export default {
|
|||||||
lastContentRender[messageType] = render;
|
lastContentRender[messageType] = render;
|
||||||
},
|
},
|
||||||
lastContentRender(message) {
|
lastContentRender(message) {
|
||||||
|
if(!isFunction(lastContentRender[message.type])){
|
||||||
|
console.error(`not found '${message.type}' of the latest message renderer,try to use ‘setLastContentRender()’`);
|
||||||
|
return '';
|
||||||
|
};
|
||||||
return lastContentRender[message.type].call(this, message);
|
return lastContentRender[message.type].call(this, message);
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -2,14 +2,20 @@
|
|||||||
export default {
|
export default {
|
||||||
name: "lemonMessageEvent",
|
name: "lemonMessageEvent",
|
||||||
inheritAttrs: false,
|
inheritAttrs: false,
|
||||||
|
inject: ["IMUI"],
|
||||||
render() {
|
render() {
|
||||||
const { content } = this.$attrs.message;
|
const { content } = this.$attrs.message;
|
||||||
return (
|
return (
|
||||||
<div class="lemon-message lemon-message-event">
|
<div class="lemon-message lemon-message-event">
|
||||||
<span class="lemon-message-event__content">{content}</span>
|
<span class="lemon-message-event__content" on-click={e => this._emitClick(e, "content")}>{content}</span>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
},
|
||||||
|
methods:{
|
||||||
|
_emitClick(e, key) {
|
||||||
|
this.IMUI.$emit("message-click", e, key, this.$attrs.message,this.IMUI);
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<style lang="stylus">
|
<style lang="stylus">
|
||||||
|
|||||||
@@ -62,17 +62,24 @@ export default {
|
|||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let attrs;
|
||||||
|
if(message.type == 'event'){
|
||||||
|
attrs = {message: message};
|
||||||
|
}else{
|
||||||
|
attrs = {
|
||||||
|
timeFormat: this.timeFormat,
|
||||||
|
message: message,
|
||||||
|
reverse: this.reverseUserId == message.fromUser.id,
|
||||||
|
hideTime:this.hideTime,
|
||||||
|
hideName: this.hideName
|
||||||
|
}
|
||||||
|
}
|
||||||
node.push(
|
node.push(
|
||||||
<tagName
|
<tagName
|
||||||
ref="message"
|
ref="message"
|
||||||
refInFor={true}
|
refInFor={true}
|
||||||
attrs={{
|
attrs={attrs}
|
||||||
timeFormat: this.timeFormat,
|
|
||||||
message: message,
|
|
||||||
reverse: this.reverseUserId == message.fromUser.id,
|
|
||||||
hideTime:this.hideTime,
|
|
||||||
hideName: this.hideName
|
|
||||||
}}
|
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
return node;
|
return node;
|
||||||
|
|||||||
@@ -7,5 +7,8 @@ export default {
|
|||||||
},
|
},
|
||||||
text(message) {
|
text(message) {
|
||||||
return this.replaceEmojiName(message.content);
|
return this.replaceEmojiName(message.content);
|
||||||
}
|
},
|
||||||
|
event(message){
|
||||||
|
return '[通知]';
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user