diff --git a/src/JournalView.tsx b/src/JournalView.tsx index e21af54..0d4fb36 100644 --- a/src/JournalView.tsx +++ b/src/JournalView.tsx @@ -12,6 +12,7 @@ export class JournalView extends React.Component { }; state: { + journal?: EteSync.Journal, entries: Array, }; props: { @@ -32,19 +33,27 @@ export class JournalView extends React.Component { const apiBase = this.props.etesync.serviceApiUrl; const journal = this.props.match.params.journalUid; + let journalManager = new EteSync.JournalManager(credentials, apiBase); + journalManager.fetch(journal).then((journalInstance) => { + this.setState(Object.assign({}, this.state, { journal: journalInstance })); + }); + let entryManager = new EteSync.EntryManager(credentials, apiBase, journal); entryManager.list(this.props.prevUid || null).then((entries) => { - this.setState({ entries }); + this.setState(Object.assign({}, this.state, { entries })); }); } render() { + if (this.state.journal === undefined) { + return (
Loading
); + } + const derived = this.props.etesync.encryptionKey; - const journal = this.props.match.params.journalUid; + const journal = this.state.journal; let prevUid = this.props.prevUid || null; const journals = this.state.entries.map((entry) => { - // FIXME: actually get the correct version! - let cryptoManager = new EteSync.CryptoManager(derived, journal, 1); + let cryptoManager = new EteSync.CryptoManager(derived, journal.uid, journal.version); let syncEntry = entry.getSyncEntry(cryptoManager, prevUid); prevUid = entry.uid; return (
  • {syncEntry.type}: {syncEntry.content}
  • ); diff --git a/src/api/EteSync.tsx b/src/api/EteSync.tsx index 001ba0d..a97dbaf 100644 --- a/src/api/EteSync.tsx +++ b/src/api/EteSync.tsx @@ -321,6 +321,18 @@ export class JournalManager extends BaseManager { super(credentials, apiBase, ['journals', '']); } + fetch(journalUid: string): Promise { + return new Promise((resolve, reject) => { + this.newCall([journalUid, '']).then((json: JournalJson) => { + let journal = new Journal(json.version); + journal.deserialize(json); + resolve(journal); + }).catch((error: Error) => { + reject(error); + }); + }); + } + list(): Promise { return new Promise((resolve, reject) => { this.newCall().then((json: Array<{}>) => {