Load the actual journal from the journal page.

This fixes viewing journals with version != 1.
master
Tom Hacohen 7 years ago
parent 25bf249d9f
commit d4c49c1f55

@ -12,6 +12,7 @@ export class JournalView extends React.Component {
}; };
state: { state: {
journal?: EteSync.Journal,
entries: Array<EteSync.Entry>, entries: Array<EteSync.Entry>,
}; };
props: { props: {
@ -32,19 +33,27 @@ export class JournalView extends React.Component {
const apiBase = this.props.etesync.serviceApiUrl; const apiBase = this.props.etesync.serviceApiUrl;
const journal = this.props.match.params.journalUid; 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); let entryManager = new EteSync.EntryManager(credentials, apiBase, journal);
entryManager.list(this.props.prevUid || null).then((entries) => { entryManager.list(this.props.prevUid || null).then((entries) => {
this.setState({ entries }); this.setState(Object.assign({}, this.state, { entries }));
}); });
} }
render() { render() {
if (this.state.journal === undefined) {
return (<div>Loading</div>);
}
const derived = this.props.etesync.encryptionKey; const derived = this.props.etesync.encryptionKey;
const journal = this.props.match.params.journalUid; const journal = this.state.journal;
let prevUid = this.props.prevUid || null; let prevUid = this.props.prevUid || null;
const journals = this.state.entries.map((entry) => { const journals = this.state.entries.map((entry) => {
// FIXME: actually get the correct version! let cryptoManager = new EteSync.CryptoManager(derived, journal.uid, journal.version);
let cryptoManager = new EteSync.CryptoManager(derived, journal, 1);
let syncEntry = entry.getSyncEntry(cryptoManager, prevUid); let syncEntry = entry.getSyncEntry(cryptoManager, prevUid);
prevUid = entry.uid; prevUid = entry.uid;
return (<li key={entry.uid}>{syncEntry.type}: {syncEntry.content}</li>); return (<li key={entry.uid}>{syncEntry.type}: {syncEntry.content}</li>);

@ -321,6 +321,18 @@ export class JournalManager extends BaseManager {
super(credentials, apiBase, ['journals', '']); super(credentials, apiBase, ['journals', '']);
} }
fetch(journalUid: string): Promise<Journal> {
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<Journal[]> { list(): Promise<Journal[]> {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.newCall().then((json: Array<{}>) => { this.newCall().then((json: Array<{}>) => {

Loading…
Cancel
Save