42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
|
/* @odoo-module */
|
||
|
|
||
|
import { patch } from "@web/core/utils/patch";
|
||
|
import { MockServer } from "@web/../tests/helpers/mock_server";
|
||
|
|
||
|
patch(MockServer.prototype, {
|
||
|
/**
|
||
|
* @override
|
||
|
*/
|
||
|
async _performRPC(route, args) {
|
||
|
if (route === "/discuss/channel/attachments") {
|
||
|
return this._mockRouteDiscussChannelAttachments(
|
||
|
args.channel_id,
|
||
|
args.limit,
|
||
|
args.older_attachment_id
|
||
|
);
|
||
|
}
|
||
|
return super._performRPC(route, args);
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Simulates the `/discuss/channel/attachments` route.
|
||
|
*
|
||
|
* @param {number} channelId
|
||
|
* @param {number} [limit=30]
|
||
|
* @param {number} [olderAttachmentId]
|
||
|
*/
|
||
|
_mockRouteDiscussChannelAttachments(channelId, limit = 30, olderAttachmentId = null) {
|
||
|
const attachmentIds = this.models["ir.attachment"].records
|
||
|
.filter(
|
||
|
({ id, res_id, res_model }) =>
|
||
|
res_id === channelId &&
|
||
|
res_model === "discuss.channel" &&
|
||
|
(!olderAttachmentId || id < olderAttachmentId)
|
||
|
)
|
||
|
.sort()
|
||
|
.slice(0, limit)
|
||
|
.map(({ id }) => id);
|
||
|
return this._mockIrAttachment_attachmentFormat(attachmentIds);
|
||
|
},
|
||
|
});
|