mirror of
https://github.com/kuaifan/dootask.git
synced 2026-03-01 13:40:46 +00:00
perf: 优化对话列表加载速度
This commit is contained in:
parent
78f197e7f9
commit
dcf5d3e910
@ -38,7 +38,7 @@ class DialogController extends AbstractController
|
||||
*
|
||||
* @apiParam {String} [at_after] 只读取在这个时间之后更新的对话
|
||||
* @apiParam {Number} [page] 当前页,默认:1
|
||||
* @apiParam {Number} [pagesize] 每页显示数量,默认:100,最大:200
|
||||
* @apiParam {Number} [pagesize] 每页显示数量,默认:50,最大:100
|
||||
*
|
||||
* @apiSuccess {Number} ret 返回状态码(1正确、0错误)
|
||||
* @apiSuccess {String} msg 返回信息(错误描述)
|
||||
@ -57,7 +57,7 @@ class DialogController extends AbstractController
|
||||
$list = $builder
|
||||
->orderByDesc('u.top_at')
|
||||
->orderByDesc('web_socket_dialogs.last_at')
|
||||
->paginate(Base::getPaginate(200, 100));
|
||||
->paginate(Base::getPaginate(100, 50));
|
||||
$list->transform(function (WebSocketDialog $item) use ($user) {
|
||||
return $item->formatData($user->userid);
|
||||
});
|
||||
|
||||
@ -755,7 +755,7 @@ export default {
|
||||
if (timeout > -1) {
|
||||
this.__updateDialogs = setTimeout(_ => {
|
||||
if (this.tabActive === 'dialog') {
|
||||
this.$store.dispatch("getDialogs", true).catch(() => {});
|
||||
this.$store.dispatch("getDialogs", {hideLoad: true}).catch(() => {});
|
||||
}
|
||||
}, timeout)
|
||||
}
|
||||
|
||||
45
resources/assets/js/store/actions.js
vendored
45
resources/assets/js/store/actions.js
vendored
@ -1278,7 +1278,7 @@ export default {
|
||||
//
|
||||
dispatch("call", {
|
||||
url: 'project/task/lists',
|
||||
data: data
|
||||
data
|
||||
}).then(result => {
|
||||
if (data.project_id) {
|
||||
state.projectLoad--;
|
||||
@ -2071,40 +2071,53 @@ export default {
|
||||
* 获取会话列表
|
||||
* @param state
|
||||
* @param dispatch
|
||||
* @param hideLoad
|
||||
* @param data
|
||||
* @returns {Promise<unknown>}
|
||||
*/
|
||||
getDialogs({state, dispatch}, hideLoad) {
|
||||
getDialogs({state, dispatch}, data) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
if (state.userId === 0) {
|
||||
state.cacheDialogs = [];
|
||||
reject({msg: 'Parameter error'});
|
||||
return;
|
||||
}
|
||||
let data = {};
|
||||
if (hideLoad !== true) {
|
||||
data = $A.isJson(data) ? data : {}
|
||||
if (data.hideLoad !== true) {
|
||||
state.loadDialogs++;
|
||||
}
|
||||
if (state.cacheDialogs.length > 0) {
|
||||
const tmpList = state.cacheDialogs.sort((a, b) => {
|
||||
if (a.top_at || b.top_at) {
|
||||
return $A.Date(b.top_at) - $A.Date(a.top_at);
|
||||
}
|
||||
return $A.Date(b.last_at) - $A.Date(a.last_at);
|
||||
})
|
||||
data.at_after = tmpList[0].last_at;
|
||||
if (typeof data.pagesize === "undefined") {
|
||||
data.pagesize = 20
|
||||
}
|
||||
if (typeof data.page === "undefined") {
|
||||
data.page = 1
|
||||
if (state.cacheDialogs.length > 0) {
|
||||
const tmpList = state.cacheDialogs.sort((a, b) => {
|
||||
if (a.top_at || b.top_at) {
|
||||
return $A.Date(b.top_at) - $A.Date(a.top_at);
|
||||
}
|
||||
return $A.Date(b.last_at) - $A.Date(a.last_at);
|
||||
})
|
||||
data.at_after = tmpList[0].last_at;
|
||||
}
|
||||
}
|
||||
dispatch("call", {
|
||||
url: 'dialog/lists',
|
||||
data,
|
||||
}).then(result => {
|
||||
dispatch("saveDialog", result.data.data);
|
||||
resolve(result)
|
||||
const resData = result.data;
|
||||
dispatch("saveDialog", resData.data);
|
||||
//
|
||||
if (resData.next_page_url && resData.current_page < 5) {
|
||||
data.page++
|
||||
dispatch("getDialogs", data).then(resolve).catch(reject)
|
||||
} else {
|
||||
resolve()
|
||||
}
|
||||
}).catch(e => {
|
||||
console.warn(e);
|
||||
reject(e)
|
||||
}).finally(_ => {
|
||||
if (hideLoad !== true) {
|
||||
if (data.hideLoad !== true) {
|
||||
state.loadDialogs--;
|
||||
}
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user