This repository was archived by the owner on Oct 17, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Feat/exposicoes firebase #177
Merged
Francisco-Paulino-Arruda-Filho
merged 5 commits into
main
from
feat/exposicoes-firebase
Aug 24, 2024
Merged
Feat/exposicoes firebase #177
Francisco-Paulino-Arruda-Filho
merged 5 commits into
main
from
feat/exposicoes-firebase
Aug 24, 2024
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
adicionando metodo para selecionar apenas os atributos que nao estam no parametro exclude
adicionando classe ConverterExposicoesFirebase com metodos toFirestore que exclui o id dos atributos enviados e converte o Map em objeto e fromFirestore que converte um objeto em Map e os timestamps em Date adicionando classe ClientExposicaoFirebase com metodos para listar, buscar, adicionar, atualizar e remover uma exposicao do acervo adicionando metodos privados para adicionar, remover, e atualizar imagens no storage atualizando regras de seguranca com os novos caminhos usados
Member
Author
|
Código usado para testar localmente: import { useEffect, useState } from "react";
import { Colecao } from "../interfaces/Colecao";
import Exposicao from "../interfaces/Exposicao";
import { ClientColecoesFirebase } from "../Utils/colecaoFirebase";
import { ClientExposicaoFirebase } from "../Utils/exposicaoFirebase";
import { adicionarItemAcervo } from "../Utils/itemAcervoFirebase";
const Home = () => {
const clientColecao = new ClientColecoesFirebase()
const [colecoes, setColecoes] = useState<Colecao[]>([])
const [addedCollection, setAddedCollection] = useState<number>(0)
useEffect(() => {
clientColecao.getColecoes().then((colecoes) => {
setColecoes(colecoes)
})
}, [addedCollection])
const client = new ClientExposicaoFirebase();
return (
<div style={{ padding: 150 }}>
<div style={{ display: 'flex', flexDirection: "column" }}>
<h4>Adicionar coleções e itens de teste</h4>
<div style={{ display: 'flex' }}>
<label htmlFor="file-input">Selecionar imagem</label>
<input type="file" id='file-input' />
</div>
<button onClick={async () => {
const colecao = {
nome: `Coleção teste ${addedCollection}`,
descricao: "Coleção de teste",
privado: false,
} as Colecao
console.log(await clientColecao.adicionarColecao(colecao))
setAddedCollection(addedCollection + 1)
}}>Adicionar Coleção</button>
<button onClick={
async () => {
const checkbox = document.getElementById('privacy') as HTMLInputElement;
for (const colecao of colecoes) {
const itemTeste = {
nome: `Item teste ${colecao.nome}`,
descricao: "item de teste",
curiosidades: "curiosidades",
dataDoacao: new Date(),
colecao: colecao.nome,
doacao: false,
doacaoAnonima: false,
nomeDoador: "",
telefoneDoador: "",
privado: checkbox.checked,
imagens: [],
};
adicionarItemAcervo(itemTeste, colecao)
}
}}>Adicionar Itens de teste nas coleções selecionadas</button>
<div style={{ display: "flex", gap: 5 }}>
{colecoes.map((colecao) => (
<p key={colecao.id}>
{colecao.nome}
</p>
))}
</div>
<div style={{ display: "flex" }}>
<input type='checkbox' id='privacy'></input>
<label htmlFor="privacy">Privacidade dos itens</label>
</div>
<hr style={{ height: 10, width: '100%', background: "#000" }} />
<div>
<h4>Métodos das exposições (necessário mudar itens hardcoded)</h4>
<button onClick={async () => {
const fileInput = document.getElementById("file-input") as HTMLInputElement
const imagem = fileInput?.files[0]
const exposicao = {
id: "apsjfdaopfpas",
nome: "Exposição teste",
descricao: "Exposição de teste",
privado: false,
permanente: false,
dataInicio: new Date(),
dataFim: new Date(),
itensPorColecao: new Map(),
dataCriacao: new Date(),
} as Exposicao
if (imagem) {
exposicao.imagem = {
src: imagem,
title: imagem.name,
alt: "texto alternativo"
}
}
try {
await client.adicionarExposicao(exposicao);
}
catch (e) {
console.log(e)
}
}}>Adicionar exposição com os itens selecionados</button>
<button onClick={async () => {
console.log(await client.listarExposicoes())
}}>Listar todas as exposições</button>
<button onClick={async () => {
const exposicao = await client.getExposicao("/exposicoes/publico/lista/pPZeDt8kIiHpdXqVflz8", true);
console.log(exposicao);
}}>Buscar exposição pública</button>
<button>Buscar exposição privada</button>
<button
onClick={async () => {
const exposicao = {
id: "/exposicoes/publico/lista/UDAcGzUs6ImuEwth9fsd",
nome: "Exposição teste",
descricao: "descrição atualizada",
privado: true,
permanente: false,
dataInicio: new Date(),
dataFim: new Date(),
itensPorColecao: new Map(),
dataCriacao: new Date()
}
await client.atualizarExposicao(exposicao)
console.log(exposicao)
}}
>Atualizar exposição mudando a privacidade</button>
<button onClick={async () => {
const fileInput = document.getElementById("file-input") as HTMLInputElement
const imagem = fileInput?.files[0]
const exposicao = {
id: "/exposicoes/publico/lista/ifFOBvR3qGyNnd9H9Rpg",
nome: "Exposição teste",
descricao: "descrição atualizada",
privado: false,
permanente: false,
dataInicio: new Date(),
dataFim: new Date(),
itensPorColecao: new Map(),
dataCriacao: new Date()
} as Exposicao
// remover comentario para incluir a imagem selecionada no input
// if (imagem) {
// exposicao.imagem = {
// src: imagem,
// title: imagem.name,
// alt: "texto alternativo"
// }
// }
await client.atualizarExposicao(exposicao)
console.log(exposicao)
}}>Atualizar exposição sem mudar a privacidade</button>
<button onClick={async () => {
const id = "/exposicoes/publico/lista/K0ceJTH3xMjnWbKbsJvW"
await client.deletarExposicao(id)
}}>Remover exposição</button>
</div>
</div >
</div >
);
};
export default Home; |
Francisco-Paulino-Arruda-Filho
approved these changes
Aug 24, 2024
desconsiderando datas de inicio e fim de exposicoes permanentes em toFirestore adicionando data de criacao caso nao exista em add adicionando datas como deleteField para exposicoes permanentes no metodo update
Francisco-Paulino-Arruda-Filho
suggested changes
Aug 24, 2024
src/Utils/exposicaoFirebase.ts
Outdated
| /(publico|privado)/, | ||
| newPrivacyPath | ||
| ); | ||
| await this.#moveExposicao(sendingDoc as Exposicao, newPath); |
Member
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Member
Author
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Imagem não carregou
Member
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
utilizando caminho antigo como parametro de moveExposicao alterando id da exposicao passada caso ela seja movida
Francisco-Paulino-Arruda-Filho
approved these changes
Aug 24, 2024
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.

Feature Exposicoes Firebase
Resolve
resolve #168
Descrição
Adicionando métodos de crud do firebase para exposições
Adições
Alterações
Remoções
Verificando
Desenvolvedor
Revisor
Criar
Get
Update
Delete