19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:31:56 +01:00
parent a2f74aefd8
commit 4a4d12c333
844 changed files with 212348 additions and 270090 deletions

View file

@ -0,0 +1,5 @@
declare module "models" {
export interface Thread {
collaborator_ids: ResPartner[];
}
}

View file

@ -0,0 +1,34 @@
import { FollowerList } from "@mail/core/web/follower_list";
import { ConfirmationDialog } from "@web/core/confirmation_dialog/confirmation_dialog";
import { _t } from "@web/core/l10n/translation";
import { useService } from "@web/core/utils/hooks";
import { patch } from "@web/core/utils/patch";
const followerListPatch = {
setup() {
super.setup();
this.dialogService = useService("dialog");
},
/**
* @param {MouseEvent} ev
* @param {import("models").Follower} follower
*/
async onClickRemove(ev, follower) {
if (follower.partner_id.in(follower.thread.collaborator_ids)) {
this.dialogService.add(ConfirmationDialog, {
title: _t("Remove Collaborator"),
body: _t(
"This follower is currently a project collaborator. Removing them will revoke their portal access to the project. Are you sure you want to proceed?"
),
confirmLabel: _t("Remove Collaborator"),
cancelLabel: _t("Discard"),
confirm: () => super.onClickRemove(ev, follower),
cancel: () => {},
});
} else {
super.onClickRemove(ev, follower);
}
},
};
patch(FollowerList.prototype, followerListPatch);

View file

@ -0,0 +1,13 @@
import { Thread } from "@mail/core/common/thread_model";
import { fields } from "@mail/model/misc";
import { patch } from "@web/core/utils/patch";
/** @type {import("models").Thread} */
const threadPatch = {
setup() {
super.setup();
this.collaborator_ids = fields.Many("res.partner");
},
};
patch(Thread.prototype, threadPatch);