Files
bible/Bible-Week/ContentView.swift
Matheus A Silveira 80185726af Adiciona Plano Bíblia em 180 Dias com lembrete diário e ícone do app
- Leitor bíblico consumindo a API NBV (bible.falehandix.com.br): lista de
  livros por testamento e leitura de capítulos
- Plano de 180 dias com três trilhas diárias (História, Sabedoria e
  Profetas, Novo Testamento) geradas deterministicamente sobre o cânon
  embutido (1.189 capítulos, cobertura testada)
- Lembrete diário via notificação local recorrente (UNCalendarNotificationTrigger,
  identificador fixo, sem duplicatas), com pedido de autorização em contexto,
  configurações de horário/som, e deep link da notificação para a Leitura de Hoje
- Estado do plano em SwiftData: progresso, pausa/retomada, reinício e
  conclusão preservando preferências do lembrete
- 15 testes unitários (Testing) e 2 testes de UI (XCUIAutomation)
- Ícone do app a partir do logo biblia.png

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-04 18:54:48 -03:00

41 lines
1.1 KiB
Swift

//
// ContentView.swift
// Bible-Week
//
// Raiz do app: abas Bíblia (leitura livre) e Plano (Bíblia em 180 Dias).
//
import SwiftUI
import SwiftData
struct ContentView: View {
@Environment(AppRouter.self) private var router
@Environment(\.modelContext) private var modelContext
var body: some View {
@Bindable var router = router
TabView(selection: $router.selectedTab) {
Tab("Bíblia", systemImage: "book", value: AppRouter.Tab.bible) {
BooksView()
}
Tab("Plano", systemImage: "calendar.badge.checkmark", value: AppRouter.Tab.plan) {
ReadingPlanView()
}
}
.task {
#if DEBUG
// Gancho para testes de UI: relança o app com o plano zerado.
if CommandLine.arguments.contains("--reset-plan") {
try? modelContext.delete(model: ReadingPlanState.self)
}
#endif
}
}
}
#Preview {
ContentView()
.environment(AppRouter())
.modelContainer(for: ReadingPlanState.self, inMemory: true)
}