bibliomar / bibliomar-client

The front-end client for Bibliomar: A complete reading suite built for educational purposes.
https://www.bibliomar.site
MIT License
12 stars 3 forks source link

Implementação do sistema de Leitura Online #9

Closed Lamarcke closed 2 years ago

Lamarcke commented 2 years ago

O componente está bem diferente da versão inicial, basta checar os comentários para verificar o que foi feito.

Lamarcke commented 2 years ago

Atualização: aparentemente, o servidor Infura de download aceita requisições de download diretamente do axios. Os outros são bloqueados pelo CORS.

Isso muda muita coisa: o plano agora é baixar o livro para o usuario, removendo a necessidade do "trabalho" manual.

Lamarcke commented 2 years ago

Também estou trabalhando em uma melhora da tipagem principal do site, que é o Book (esse type define todos os elementos existentes em um possível resultado de pesquisa, e é usado em todo o site).

Os livros dos resultados de pesquisa e da biblioteca possuiam inconsistência quanto a chave de autores, na pesquisa, essa se chamava author(s), e na biblioteca authors. Isso se deve ao fato de o MongoDB realizar uma conversão ao inserir dados nos documentos.

Mudanças foram feitas no Biblioterra para acomodar essa nova mudança.

interface Book {
    series: string;
    title: string;
    authors: string;
    language: string;
    file: string;
    mirror1: string;
    mirror2?: string;
    md5: string;
    topic: string;
    extension: string;
    size: string;
}
Lamarcke commented 2 years ago

O sistema de leitura online já se encontra em um estado aceitável, mas eu gostaria de realizar um pouco mais de polimento antes de liberar para o publico.

Lamarcke commented 2 years ago

Acabo de descobrir que um outro servidor de download também aceita as requisições do Bibliomar. Esse servidor, assim como o principal, não possui limitações quanto a CORS, e por isso podemos realizar o download nele também.

Estou implementando uma nova tentativa de download caso a primeira no servidor principal falhe.

Lamarcke commented 2 years ago

Atualização: Uma mudança no schema de resultados do Biblioterra foi realizada, agora, além das propriedas anteriores (title, authors) um dado resultado de pesquisa ou entrada de biblioteca do usuario também pode conter:

progress: str | None

A partir desse progress, que é uma string epubcifi (ela é usada para determinar a localização atual pelo EpubJS), nós podemos definir se:

Dito isto, a definição do tipo Book já foi atualizada:

interface Book {
    series: string;
    title: string;
    authors: string;
    language: string;
    file: string;
    mirror1: string;
    mirror2?: string;
    md5: string;
    topic: string;
    extension: string;
    size: string;
    // NEW
    // This is only valid for library entries, and is only used in reader components. The value is an epubcifi string.
    progress?: string;
}
Lamarcke commented 2 years ago

O progresso do sistema de sincronização está bom.

Refiz a tipagem do SavedBooks por completo, manter dois valores (arrayBuffer e informações do livro), que são instrínsicamente unidos separados apenas causou dor de cabeça.

Agora, esse é um objeto SavedBooks padrão:

// Describes a SavedBooks object, which will be used to save up to 3 books in localForage.
export type SavedBooks = {
    firstBook: SavedBookEntry | null;
    secondBook: SavedBookEntry | null;
    thirdBook: SavedBookEntry | null;
};

E essa é a interface do objeto que vai dentro de cada parametro:

// Describes a given entry in SavedBooks, this entry is an object containing these properties.
export interface SavedBookEntry {
    arrayBuffer: ArrayBuffer;
    bookInfo: Book;
}

Sinceramente, estou apenas finalizando a interface do menu de aparência do leitor, e configurar states que vão ser enviados pelos livros da biblioteca (assim que vamos saber quais livros rastrear o progresso)

Falta pouco.

Lamarcke commented 2 years ago

O leitor está finalizado.

Falta, porém, testar e confirmar a existência de quaisquer problemas.

Lamarcke commented 2 years ago

Vamos prosseguir o trabalho da branch themes aqui.

Lamarcke commented 2 years ago

A nova versão do site está finalizada. Basta organizar o processo de merge.