notegraf-web 0.1.1

The reference web frontend of Notegraf
Documentation
import * as React from "react";
import {useEffect, useState} from "react";
import {useParams} from "react-router-dom";
import {getNoteRevisions} from "../api";
import {tileInTitle} from "../utils";
import * as types from "../types";
import {NotesTwoPane} from "../components/NotesTwoPane";

export function NoteRevisions() {
    let {noteID} = useParams();
    const [notes, setNotes] = useState<any>(null);
    const [error, setError] = useState<any>(null);
    const [isLoaded, setIsLoaded] = useState(false);

    useEffect(() => {
        async function fetchNoteRevisions() {
            try {
                const notes = await getNoteRevisions(noteID as string);
                setNotes(notes);
                setIsLoaded(true);
                document.title = `${tileInTitle(notes[notes.length - 1].title)} (revisions) - Notegraf`;
            } catch (e) {
                setError(e);
                setIsLoaded(true);
            }
        }

        fetchNoteRevisions();
    }, [noteID]);

    if (!isLoaded) {
        return (<div>Loading...</div>);
    }
    if (error) {
        return (<div>{error.toString()}</div>);
    }

    return (<NotesTwoPane
        setError={setError}
        notes={notes}
        onDelete={() => {
        }}
        showAgoKey={(n: types.Note) => new Date(n.metadata.modified_at)}
        showPrevNext={false}
        showingRevision={true}
        permaLink={true}
    />);
}