diff --git a/src/editor/html_serialize.js b/src/editor/html_serialize.js
deleted file mode 100644
index bd8842b01f..0000000000
--- a/src/editor/html_serialize.js
+++ /dev/null
@@ -1,14 +0,0 @@
-export function htmlSerialize(model) {
- return model.parts.reduce((html, part) => {
- switch (part.type) {
- case "newline":
- return html + "
";
- case "plain":
- case "pill-candidate":
- return html + part.text;
- case "room-pill":
- case "user-pill":
- return html + `${part.text}`;
- }
- }, "");
-}
diff --git a/src/editor/serialize.js b/src/editor/serialize.js
new file mode 100644
index 0000000000..57cc79b375
--- /dev/null
+++ b/src/editor/serialize.js
@@ -0,0 +1,43 @@
+export function htmlSerialize(model) {
+ return model.parts.reduce((html, part) => {
+ switch (part.type) {
+ case "newline":
+ return html + "
";
+ case "plain":
+ case "pill-candidate":
+ return html + part.text;
+ case "room-pill":
+ case "user-pill":
+ return html + `${part.text}`;
+ }
+ }, "");
+}
+
+export function textSerialize(model) {
+ return model.parts.reduce((text, part) => {
+ switch (part.type) {
+ case "newline":
+ return text + "\n";
+ case "plain":
+ case "pill-candidate":
+ return text + part.text;
+ case "room-pill":
+ case "user-pill":
+ return text + `${part.resourceId}`;
+ }
+ }, "");
+}
+
+export function requiresHtml(model) {
+ return model.parts.some(part => {
+ switch (part.type) {
+ case "newline":
+ case "plain":
+ case "pill-candidate":
+ return false;
+ case "room-pill":
+ case "user-pill":
+ return true;
+ }
+ });
+}