- 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>
41 lines
1.1 KiB
Swift
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)
|
|
}
|