[IMP] mail: send cache control header on avatars
Before this PR cache control header for avatar was set to no-cache which is not the right value. This PR mark the avatar routes response as immutable when a unique string is present. We also use the partner write_date as unique string when possible. task-3551636 closes odoo/odoo#141326 X-original-commit: 3de4f1f1225229cbdb0512df5790ce491f04ea7e Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
This commit is contained in:
@@ -61,6 +61,8 @@ export class Persona extends Record {
|
||||
/** @type {ImStatus} */
|
||||
im_status;
|
||||
isAdmin = false;
|
||||
/** @type {string} */
|
||||
write_date;
|
||||
|
||||
/**
|
||||
* @returns {boolean}
|
||||
|
||||
@@ -854,15 +854,19 @@ export class ThreadService {
|
||||
if (!persona) {
|
||||
return DEFAULT_AVATAR;
|
||||
}
|
||||
const urlParams = {};
|
||||
if (persona.write_date) {
|
||||
urlParams.unique = persona.write_date;
|
||||
}
|
||||
if (persona.is_company === undefined && this.store.self?.user?.isInternalUser) {
|
||||
this.personaService.fetchIsCompany(persona);
|
||||
}
|
||||
if (thread?.model === "discuss.channel") {
|
||||
if (persona.type === "partner") {
|
||||
return url(`/discuss/channel/${thread.id}/partner/${persona.id}/avatar_128`);
|
||||
return url(`/discuss/channel/${thread.id}/partner/${persona.id}/avatar_128`, urlParams);
|
||||
}
|
||||
if (persona.type === "guest") {
|
||||
return url(`/discuss/channel/${thread.id}/guest/${persona.id}/avatar_128`);
|
||||
return url(`/discuss/channel/${thread.id}/guest/${persona.id}/avatar_128`, urlParams);
|
||||
}
|
||||
}
|
||||
if (persona.type === "partner" && persona?.id) {
|
||||
@@ -870,6 +874,7 @@ export class ThreadService {
|
||||
field: "avatar_128",
|
||||
id: persona.id,
|
||||
model: "res.partner",
|
||||
...urlParams,
|
||||
});
|
||||
return avatar;
|
||||
}
|
||||
@@ -878,6 +883,7 @@ export class ThreadService {
|
||||
field: "avatar_128",
|
||||
id: persona.user.id,
|
||||
model: "res.users",
|
||||
...urlParams,
|
||||
});
|
||||
return avatar;
|
||||
}
|
||||
|
||||
@@ -66,7 +66,10 @@ patch(Thread.prototype, {
|
||||
);
|
||||
}
|
||||
if (this.type === "chat") {
|
||||
return `/web/image/res.partner/${this.chatPartner.id}/avatar_128`;
|
||||
return url(
|
||||
`/web/image/res.partner/${this.chatPartner.id}/avatar_128`,
|
||||
assignDefined({}, { unique: this.chatPartner.write_date })
|
||||
);
|
||||
}
|
||||
return super.imgUrl;
|
||||
},
|
||||
|
||||
@@ -1000,7 +1000,7 @@ QUnit.test("chat - avatar: should have correct avatar", async () => {
|
||||
openDiscuss();
|
||||
|
||||
await contains(".o-mail-DiscussSidebarChannel img");
|
||||
await contains(`img[data-src='/web/image/res.partner/${partnerId}/avatar_128']`);
|
||||
await contains(`img[data-src$='/web/image/res.partner/${partnerId}/avatar_128']`);
|
||||
});
|
||||
|
||||
QUnit.test("chat should be sorted by last activity time [REQUIRE FOCUS]", async () => {
|
||||
|
||||
Reference in New Issue
Block a user