perf: 消息页再次点击类型定位到未读消息

This commit is contained in:
kuaifan 2022-01-23 14:48:10 +08:00
parent 130a85a5fc
commit fcf7fb4b9f

View File

@ -14,7 +14,7 @@
v-for="(item, key) in dialogType" v-for="(item, key) in dialogType"
:key="key" :key="key"
:class="{active:dialogActive==item.type}" :class="{active:dialogActive==item.type}"
@click="dialogActive=item.type"> @click="onActive(item.type)">
<Badge class="nav-num" :count="msgUnread(item.type)"/> <Badge class="nav-num" :count="msgUnread(item.type)"/>
{{$L(item.name)}} {{$L(item.name)}}
</p> </p>
@ -27,6 +27,7 @@
<ul v-if="tabActive==='dialog'" class="dialog"> <ul v-if="tabActive==='dialog'" class="dialog">
<li <li
v-for="(dialog, key) in dialogList" v-for="(dialog, key) in dialogList"
:ref="`dialog_${dialog.id}`"
:key="key" :key="key"
:class="{active: dialog.id == dialogId}" :class="{active: dialog.id == dialogId}"
@click="openDialog(dialog, true)"> @click="openDialog(dialog, true)">
@ -154,6 +155,8 @@ export default {
} }
} }
return true; return true;
}).sort((a, b) => {
return $A.Date(a.last_at) - $A.Date(b.last_at);
}) })
}, },
@ -219,6 +222,24 @@ export default {
} }
}, },
onActive(type) {
if (this.dialogActive == type) {
//
const dialog = this.dialogList.find(({unread}) => unread > 0)
if (dialog) {
try {
this.$refs[`dialog_${dialog.id}`][0].scrollIntoView({behavior: "smooth"});
} catch (e) {
scrollIntoView(this.$refs[`dialog_${dialog.id}`][0], {
behavior: 'smooth',
inline: 'end',
})
}
}
}
this.dialogActive = type
},
closeDialog() { closeDialog() {
this.dialogId = 0; this.dialogId = 0;
$A.setStorage("messenger::dialogId", 0) $A.setStorage("messenger::dialogId", 0)