A new modal for editing topic assignments

This commit is contained in:
Andrei Prigorshnev 2024-04-02 18:22:30 +04:00
parent 47245339e7
commit 70a7585777
No known key found for this signature in database
GPG Key ID: 185E0A5F45783902
4 changed files with 63 additions and 4 deletions

View File

@ -0,0 +1,24 @@
<DModal class="assign" @title={{this.title}} @closeModal={{@closeModal}}>
<:body>
<p>Edit topic assignments form</p>
<!-- <AssignUserForm-->
<!-- @model={{this.model}}-->
<!-- @onSubmit={{this.onSubmit}}-->
<!-- @formApi={{this.formApi}}-->
<!-- />-->
</:body>
<:footer>
<DButton
class="btn-primary"
@action={{this.formApi.submit}}
@label={{if
this.model.reassign
"discourse_assign.reassign.title"
"discourse_assign.assign_modal.assign"
}}
/>
<DModalCancel @close={{@closeModal}} />
</:footer>
</DModal>

View File

@ -0,0 +1,27 @@
import Component from "@glimmer/component";
import { action } from "@ember/object";
import { inject as service } from "@ember/service";
import { TrackedObject } from "@ember-compat/tracked-built-ins";
import I18n from "I18n";
export default class EditTopicAssignments extends Component {
@service taskActions;
model = new TrackedObject(this.args.model);
// `submit` property will be mutated by the `AssignUserForm` component
formApi = {
submit() {},
};
get title() {
const title = this.model.topic.isAssigned() ? "reassign_title" : "title";
return I18n.t(`discourse_assign.assign_modal.${title}`);
}
@action
async onSubmit() {
this.args.closeModal();
await this.taskActions.assign(this.model);
}
}

View File

@ -3,6 +3,7 @@ import { htmlSafe } from "@ember/template";
import { renderAvatar } from "discourse/helpers/user-avatar";
import { iconHTML } from "discourse-common/lib/icon-library";
import I18n from "I18n";
import EditTopicAssignments from "../components/modal/edit-topic-assignments";
const DEPENDENT_KEYS = [
"topic.assigned_to_user",
@ -22,6 +23,7 @@ export default {
}
const taskActions = getOwner(this).lookup("service:task-actions");
const modal = getOwner(this).lookup("service:modal");
const firstPostId = this.topic.postStream.firstPostId;
switch (id) {
@ -42,9 +44,10 @@ export default {
break;
}
case "reassign": {
await taskActions.showAssignModal(this.topic, {
targetType: "Topic",
isAssigned: this.topic.isAssigned(),
await modal.show(EditTopicAssignments, {
model: {
topic: this.topic,
},
onSuccess: () =>
this.appEvents.trigger("post-stream:refresh", { id: firstPostId }),
});

View File

@ -17,6 +17,7 @@ import I18n from "I18n";
import BulkAssign from "../components/bulk-actions/assign-user";
import BulkActionsAssignUser from "../components/bulk-actions/bulk-assign-user";
import TopicLevelAssignMenu from "../components/topic-level-assign-menu";
import EditTopicAssignments from "../components/modal/edit-topic-assignments";
const PLUGIN_ID = "discourse-assign";
@ -110,6 +111,7 @@ function registerTopicFooterButtons(api) {
}
const taskActions = getOwner(this).lookup("service:task-actions");
const modal = getOwner(this).lookup("service:modal");
if (this.topic.isAssigned()) {
this.set("topic.assigned_to_user", null);
@ -121,7 +123,10 @@ function registerTopicFooterButtons(api) {
id: this.topic.postStream.firstPostId,
});
} else {
await taskActions.showAssignModal(this.topic, {
await modal.show(EditTopicAssignments, {
model: {
topic: this.topic,
},
onSuccess: () =>
this.appEvents.trigger("post-stream:refresh", {
id: this.topic.postStream.firstPostId,