fix: table getting converted to raw html

This commit is contained in:
thecodrr
2021-12-29 14:33:29 +05:00
parent c2df49809c
commit 278d1681ca
6 changed files with 35 additions and 9 deletions

View File

@@ -119,12 +119,14 @@ describe.each([
).toBeTruthy();
const tableContent = allContent.find((a) => a.data.includes("<table"));
if (tableContent)
if (tableContent) {
console.log(tableContent.data);
expect(
tableContent.data.includes(
tableContent.data.startsWith(
`<div class="table-container" contenteditable="false">`
)
);
}
});
});

View File

@@ -53,7 +53,7 @@ export const EVENTS = {
vaultLocked: "vault:locked",
};
export const CURRENT_DATABASE_VERSION = 5.3;
export const CURRENT_DATABASE_VERSION = 5.4;
export function setUserPersonalizationBytes(userSalt) {
USER_PERSONALIZATION_HASH = new Uint8Array(

View File

@@ -92,8 +92,9 @@ export default class Backup {
switch (version) {
case CURRENT_DATABASE_VERSION:
case 5.1:
case 5.3:
case 5.2:
case 5.1:
case 5.0: {
return backup;
}

View File

@@ -1,4 +1,5 @@
import { parseHTML } from "./utils/html-parser";
import { decodeHTML5 } from "entities";
export const migrations = {
5.0: {},
@@ -20,6 +21,13 @@ export const migrations = {
settings: replaceDateEditedWithDateModified(true),
},
5.3: {
tiny: (item) => {
if (!item.data || item.data.iv) return item;
item.data = decodeWrappedTableHtml(item.data);
return item;
},
},
5.4: {
note: false,
notebook: false,
tag: false,
@@ -44,9 +52,11 @@ function wrapTablesWithDiv(html) {
const tables = document.getElementsByTagName("table");
for (let table of tables) {
table.setAttribute("contenteditable", "true");
table.replaceWith(
`<div class="table-container" contenteditable="false">${table.outerHTML}</div>`
);
const div = document.createElement("div");
div.setAttribute("contenteditable", "false");
div.innerHTML = table.outerHTML;
div.classList.add("table-container");
table.replaceWith(div);
}
return document.outerHTML || document.body.innerHTML;
}
@@ -65,3 +75,14 @@ function removeToxClassFromChecklist(html) {
}
return document.outerHTML || document.body.innerHTML;
}
const regex = /&lt;div class="table-container".*&lt;\/table&gt;&lt;\/div&gt;/gm;
function decodeWrappedTableHtml(html) {
return html.replaceAll(
/&lt;div class="table-container".*\/div&gt;$/gm,
(match) => {
const html = decodeHTML5(match);
return html;
}
);
}

View File

@@ -1,17 +1,18 @@
{
"name": "notes-core",
"version": "6.16.0",
"version": "6.16.2",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "notes-core",
"version": "6.16.0",
"version": "6.16.2",
"dependencies": {
"@stablelib/blake2s": "^1.0.1",
"async-mutex": "^0.3.2",
"base64-arraybuffer": "^1.0.1",
"dayjs": "^1.10.6",
"entities": "^3.0.1",
"fast-sort": "^2.0.1",
"fflate": "^0.7.1",
"liqe": "^1.13.0",

View File

@@ -28,6 +28,7 @@
"async-mutex": "^0.3.2",
"base64-arraybuffer": "^1.0.1",
"dayjs": "^1.10.6",
"entities": "^3.0.1",
"fast-sort": "^2.0.1",
"fflate": "^0.7.1",
"liqe": "^1.13.0",