Drop hier links of afbeeldingen om ze aan de editor toe te voegen.

Exclua somente depois da confirmação

Uma pessoa publicou um check-in por engano no PaceUp e quer excluí-lo. Antes da remoção, a aplicação pede confirmação: se a pessoa cancelar, o check-in deve permanecer como estava.

Sua tarefa

Complete a função excluirCheckin, que recebe:

O tipo e a assinatura da função já estão no código inicial:

type Checkin = {
  id: string;
  message: string;
  ownerId: string;
  favorite: boolean;
};

function excluirCheckin(
  checkins: Checkin[],
  id: string,
  confirmado: boolean,
): Checkin[]

A função deve retornar um array seguindo estas regras:

Considere que os IDs são únicos dentro da lista. A comparação diferencia letras maiúsculas e minúsculas: "ci-A" e "ci-a" são identificadores diferentes.

O retorno é sempre um array. Se a lista estiver vazia ou o único item for excluído, retorne []. Quando não houver alteração, você pode retornar o próprio array recebido ou uma cópia com o mesmo conteúdo.

Exemplos

Considere esta lista:

const checkins: Checkin[] = [
  {
    id: "ci-10",
    message: "Treino concluído!",
    ownerId: "user-1",
    favorite: false,
  },
  {
    id: "ci-20",
    message: "Treino concluído!",
    ownerId: "user-2",
    favorite: true,
  },
];

Os dois check-ins têm a mesma mensagem. Confirmar a exclusão de "ci-20" deve remover apenas o segundo item:

excluirCheckin(checkins, "ci-20", true)
// Retorno esperado:
// [
//   {
//     id: "ci-10",
//     message: "Treino concluído!",
//     ownerId: "user-1",
//     favorite: false,
//   },
// ]

Após a chamada, o array original checkins ainda deve conter os dois itens.

Chamada Conteúdo do array retornado
excluirCheckin(checkins, "ci-20", false) os dois check-ins, na ordem original
excluirCheckin(checkins, "ci-99", true) os dois check-ins, na ordem original
excluirCheckin([], "ci-20", true) []

Técnica a praticar

Pratique condições booleanas, comparação de identificadores e construção de um array sem modificar a entrada. O método filter pode ajudar: ele cria um novo array com os itens que atendem à condição fornecida.

Neste desafio, a exclusão é uma simulação em memória. No aplicativo, a remoção do documento acontece com deleteDoc, e o listener apresenta a lista atualizada.

Mantenha o tipo Checkin, o nome da função e seus parâmetros. Não utilize any ou console.log: o resultado deve ser devolvido com return.