diff --git a/core/src/main/java/de/srsoftware/umbrella/core/model/WikiPage.java b/core/src/main/java/de/srsoftware/umbrella/core/model/WikiPage.java index 61d9b91e..5cfaf187 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/model/WikiPage.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/model/WikiPage.java @@ -18,7 +18,7 @@ public class WikiPage implements Mappable { private final long id; private String title; private int version; - private final List versions = new ArrayList<>(); + private final Set versions = new TreeSet<>(); private final Map members = new HashMap<>(); private String content; private Set dirtyFields = new HashSet<>(); @@ -157,7 +157,7 @@ public class WikiPage implements Mappable { return version; } - public List versions(){ + public Set versions(){ return versions; } } diff --git a/frontend/src/routes/wiki/View.svelte b/frontend/src/routes/wiki/View.svelte index c93182b8..56dbeeed 100644 --- a/frontend/src/routes/wiki/View.svelte +++ b/frontend/src/routes/wiki/View.svelte @@ -14,7 +14,7 @@ let detail = $state(false); let { key, version } = $props(); - let page = $state(null); + let page = $state({}); let router = useTinyRouter(); let members = $state({}); let editable = $derived(page.members[user.id].permission.code<4); @@ -72,9 +72,9 @@ async function loadContent(res){ if (res.ok){ - page = null; - page = await res.json(); - page.versions.sort((a,b)=>b-a); + let json = await res.json(); + json.versions.sort((a,b)=>b-a); + page = { ...json }; yikes(); return true; } else { @@ -131,7 +131,7 @@ $effect(loadPage); -{#if page} +{#if page && page.versions}
{t('version')} diff --git a/wiki/src/main/java/de/srsoftware/umbrella/wiki/SqliteDb.java b/wiki/src/main/java/de/srsoftware/umbrella/wiki/SqliteDb.java index 780f14d3..fb086cdf 100644 --- a/wiki/src/main/java/de/srsoftware/umbrella/wiki/SqliteDb.java +++ b/wiki/src/main/java/de/srsoftware/umbrella/wiki/SqliteDb.java @@ -268,8 +268,10 @@ public class SqliteDb extends BaseDb implements WikiDb { @Override public WikiPage save(WikiPage page) { try { - if (page.isDirty(CONTENT) || page.isDirty(ID) || page.isDirty(TITLE)) insertInto(TABLE_PAGES,ID,VERSION,TITLE,CONTENT) - .values(page.id(),page.version(),page.title(),page.content()).execute(db).close(); + if (page.isDirty(CONTENT) || page.isDirty(ID) || page.isDirty(TITLE)) { + insertInto(TABLE_PAGES,ID,VERSION,TITLE,CONTENT).values(page.id(),page.version(),page.title(),page.content()).execute(db).close(); + page.versions().add(page.version()); + } if (page.isDirty(MEMBERS)){ Query.delete().from(TABLE_PAGES_USERS).where(PAGE_ID, equal(page.id())).where(USER_ID,Condition.notIn(page.members().keySet().toArray())).execute(db); var query = replaceInto(TABLE_PAGES_USERS,PAGE_ID,USER_ID,PERMISSIONS);