+ {{i18n "chat.admin.export_messages.title"}}
+ {{i18n "chat.admin.export_messages.description"}}
+
+
\ No newline at end of file
diff --git a/plugins/chat/assets/javascripts/discourse/components/chat/admin/export-messages.js b/plugins/chat/assets/javascripts/discourse/components/chat/admin/export-messages.js
new file mode 100644
index 00000000000..48fc90a3a52
--- /dev/null
+++ b/plugins/chat/assets/javascripts/discourse/components/chat/admin/export-messages.js
@@ -0,0 +1,22 @@
+import Component from "@ember/component";
+import { action } from "@ember/object";
+import { inject as service } from "@ember/service";
+import { popupAjaxError } from "discourse/lib/ajax-error";
+import I18n from "I18n";
+
+export default class ExportMessages extends Component {
+ @service chatAdminApi;
+ @service dialog;
+
+ @action
+ async exportMessages() {
+ try {
+ await this.chatAdminApi.exportMessages();
+ this.dialog.alert(
+ I18n.t("chat.admin.export_messages.export_has_started")
+ );
+ } catch (error) {
+ popupAjaxError(error);
+ }
+ }
+}
diff --git a/plugins/chat/assets/javascripts/discourse/services/chat-admin-api.js b/plugins/chat/assets/javascripts/discourse/services/chat-admin-api.js
new file mode 100644
index 00000000000..38025d89b26
--- /dev/null
+++ b/plugins/chat/assets/javascripts/discourse/services/chat-admin-api.js
@@ -0,0 +1,19 @@
+import Service from "@ember/service";
+import { ajax } from "discourse/lib/ajax";
+
+export default class ChatAdminApi extends Service {
+ async exportMessages() {
+ await this.#post(`/export/messages`);
+ }
+
+ get #basePath() {
+ return "/chat/admin";
+ }
+
+ #post(endpoint, data = {}) {
+ return ajax(`${this.#basePath}${endpoint}`, {
+ type: "POST",
+ data,
+ });
+ }
+}
diff --git a/plugins/chat/assets/javascripts/discourse/templates/admin-plugins-chat.hbs b/plugins/chat/assets/javascripts/discourse/templates/admin-plugins-chat.hbs
index bbab48d73b3..521d3b889a6 100644
--- a/plugins/chat/assets/javascripts/discourse/templates/admin-plugins-chat.hbs
+++ b/plugins/chat/assets/javascripts/discourse/templates/admin-plugins-chat.hbs
@@ -1,3 +1,5 @@
+