🚀 6.8 Recursos da Calendar API v3

A Google Calendar API v3 é baseada em recursos REST. Para o BoaViagem, focaremos nos dois pilares principais: Calendários (onde os dados residem) e Eventos (a representação de uma viagem na agenda).

Principais Recursos

  1. CalendarList: Uma coleção de calendários que o usuário tem acesso (Principal, Feriados, Trabalho).
  2. Events: A coleção de compromissos dentro de um calendário específico.
  3. Anotações e Cores: Metadados que ajudam a categorizar as viagens visualmente.

Estrutura de um Evento (Java 17)

Um evento é composto por resumo, descrição, e horários de início/fim. No Java 17, mapeamos isso para o objeto Event:

var evento = new Event()
    .setSummary("Viagem para " + destino)
    .setDescription("Viagem cadastrada pelo App BoaViagem")
    .setStart(new EventDateTime().setDateTime(new DateTime(dataInicio)))
    .setEnd(new EventDateTime().setDateTime(new DateTime(dataFim)));

O Fluxo de Gravação

Para salvar uma viagem, o processo segue a hierarquia:

  1. Identificar o ID do Calendário: Geralmente "primary" para a agenda principal do usuário.
  2. Construir o Evento: Preencher os dados a partir do banco de dados Room.
  3. Executar o Insert: Enviar via rede e tratar a resposta.
graph TD
    A[Room Database] -->|Busca Viagem| B[ViagemRepository]
    B -->|Cria Objeto Event| C[CalendarService]
    C -->|Executa insert| D{Google Calendar API}
    D -->|Sucesso| E[Notificação/UI]
    D -->|Erro| F[Log/Aviso ao Usuário]

IMPORTANT

IDs e Sincronização: Ao criar um evento, o Google retorna um id único. Uma Engenharia Premium armazena esse ID no banco local (Room) na coluna google_event_id. Isso permite que você atualize ou remova o evento na agenda se a viagem for alterada no app.

TIP

Utilize o Timezone correto (Timezone.getDefault()) ao configurar o EventDateTime. Viagens registradas com fuso horário incorreto aparecerão em horários fantasmas na agenda do usuário.


⬅️ Capítulo Anterior | Próximo Capítulo ➡️