import 'dart:typed_data'; import 'package:dio/dio.dart'; import '../about/external/data/Commitment.dart'; import '../about/external/data/Program.dart'; import '../about/external/data/SystemResponse.dart'; import '../about/external/data/pages/request/CommitmentsRequest.dart'; import '../about/external/data/pages/request/HistoryRequest.dart'; import '../about/external/initial/AbandonRequest.dart'; import '../about/external/initial/AmnestyRequest.dart'; import '../about/external/initial/CommitmentRequest.dart'; import '../about/external/initial/CompletionRequest.dart'; import '../about/external/initial/DeferralRequest.dart'; import '../about/external/initial/DeviceRequest.dart'; import '../about/external/initial/GoalRequest.dart'; import '../about/external/initial/IdRequest.dart'; import '../about/external/initial/LoginData.dart'; import '../about/external/initial/ReportCardRequest.dart'; import '../about/external/initial/SessionLogRequest.dart'; import '../about/external/initial/SickModeRequest.dart'; import '../about/external/initial/ToneRequest.dart'; import '../about/internal/application/CapacityProfile.dart'; import '../about/internal/application/MeDescription.dart'; import '../about/internal/application/Token.dart'; import '../about/internal/application/UserDetails.dart'; import '../about/internal/file/ConnectFileStorage.dart'; import '../comms/ConnectComms.dart'; import '../memory/ConnectInternalMemory.dart'; import 'DataManager.dart'; /// The single data gateway. Constructed once in [ParentViewModel] and shared by /// every screen; it only delegates to its three collaborators. class AppDataManager implements DataManager { ConnectInternalMemory memory; ConnectComms comms; ConnectFileStorage files; AppDataManager(this.memory, this.comms, this.files); // ── Memory ──────────────────────────────────────────────────────────────── @override Future getMyDescription() => memory.getMyDescription(); @override Future setMyDescription(MeDescription description) => memory.setMyDescription(description); @override Future getNotToken() => memory.getNotToken(); @override Future setNotToken(String token) => memory.setNotToken(token); @override Future getUserCreationDetails() => memory.getUserCreationDetails(); @override Future setUserCreationDetails(SystemResponse response) => memory.setUserCreationDetails(response); @override Future getUserDetails() => memory.getUserDetails(); @override Future setUserDetails(UserDetails details) => memory.setUserDetails(details); @override Future getTokenEntry() => memory.getTokenEntry(); @override Future setTokenEntry(Token token) => memory.setTokenEntry(token); @override Future getRefreshAt() => memory.getRefreshAt(); @override Future setRefreshAt(String refresher) => memory.setRefreshAt(refresher); @override Future getActiveCommitment() => memory.getActiveCommitment(); @override Future setActiveCommitment(Commitment commitment) => memory.setActiveCommitment(commitment); @override Future getActiveProgram() => memory.getActiveProgram(); @override Future setActiveProgram(Program program) => memory.setActiveProgram(program); @override Future getCapacityProfile() => memory.getCapacityProfile(); @override Future setCapacityProfile(CapacityProfile profile) => memory.setCapacityProfile(profile); @override Future getCachedDebtScore() => memory.getCachedDebtScore(); @override Future setCachedDebtScore(double score) => memory.setCachedDebtScore(score); @override Future getEngagementCount() => memory.getEngagementCount(); @override Future setEngagementCount(int count) => memory.setEngagementCount(count); @override Future getAmnestySpent() => memory.getAmnestySpent(); @override Future setAmnestySpent(int spent) => memory.setAmnestySpent(spent); @override Future showOnboarding() => memory.showOnboarding(); @override Future setOnboardingOption(bool value) => memory.setOnboardingOption(value); // ── Files ───────────────────────────────────────────────────────────────── @override Future saveProof(String name, Uint8List bytes) => files.saveProof(name, bytes); @override Future readProof(String reference) => files.readProof(reference); @override Future deleteProof(String reference) => files.deleteProof(reference); @override Future proofDirectory() => files.proofDirectory(); // ── Comms ───────────────────────────────────────────────────────────────── @override Future registerDevice(DeviceRequest request) => comms.registerDevice(request); @override Future registerDeviceToken(String token) => comms.registerDeviceToken(token); @override Future login(LoginData request) => comms.login(request); @override Future logout() => comms.logout(); @override Future me() => comms.me(); @override Future getMyGoals(HistoryRequest request) => comms.getMyGoals(request); @override Future saveGoalEntry(GoalRequest request) => comms.saveGoalEntry(request); @override Future getGoalTasks(IdRequest request) => comms.getGoalTasks(request); @override Future archiveGoalEntry(IdRequest request) => comms.archiveGoalEntry(request); @override Future getTodayPlan(CommitmentsRequest request) => comms.getTodayPlan(request); @override Future getMyCommitments(CommitmentsRequest request) => comms.getMyCommitments(request); @override Future getOverdueQueue(HistoryRequest request) => comms.getOverdueQueue(request); @override Future saveCommitmentEntry(CommitmentRequest request) => comms.saveCommitmentEntry(request); @override Future updateCommitmentEntry(CommitmentRequest request) => comms.updateCommitmentEntry(request); @override Future deleteCommitmentEntry(IdRequest request) => comms.deleteCommitmentEntry(request); @override Future completeCommitmentEntry(CompletionRequest request) => comms.completeCommitmentEntry(request); @override Future deferCommitmentEntry(DeferralRequest request) => comms.deferCommitmentEntry(request); @override Future abandonCommitmentEntry(AbandonRequest request) => comms.abandonCommitmentEntry(request); @override Future getCommitmentHistory(HistoryRequest request) => comms.getCommitmentHistory(request); @override Future getCommitmentEvents(IdRequest request) => comms.getCommitmentEvents(request); @override Future checkCapacity(CommitmentsRequest request) => comms.checkCapacity(request); @override Future getCapacityProfileEntry() => comms.getCapacityProfileEntry(); @override Future getDebtSummary() => comms.getDebtSummary(); @override Future getDebtLedger(HistoryRequest request) => comms.getDebtLedger(request); @override Future getDebtTrend(ReportCardRequest request) => comms.getDebtTrend(request); @override Future getStanding() => comms.getStanding(); @override Future getStandingHistory(HistoryRequest request) => comms.getStandingHistory(request); @override Future getExcuseClusters(ReportCardRequest request) => comms.getExcuseClusters(request); @override Future uploadPhotoProof(FormData request) => comms.uploadPhotoProof(request); @override Future submitTimerProofEntry(CompletionRequest request) => comms.submitTimerProofEntry(request); @override Future submitLocationProofEntry(CompletionRequest request) => comms.submitLocationProofEntry(request); @override Future spendAmnestyToken(AmnestyRequest request) => comms.spendAmnestyToken(request); @override Future getAmnestyBalance() => comms.getAmnestyBalance(); @override Future updateSickMode(SickModeRequest request) => comms.updateSickMode(request); @override Future checkDistress() => comms.checkDistress(); @override Future updateTone(ToneRequest request) => comms.updateTone(request); @override Future getMyHabits(HistoryRequest request) => comms.getMyHabits(request); @override Future saveHabitEntry(Map request) => comms.saveHabitEntry(request); @override Future logHabitEntry(IdRequest request) => comms.logHabitEntry(request); @override Future getKeystoneHabits() => comms.getKeystoneHabits(); @override Future getMyRoutines(HistoryRequest request) => comms.getMyRoutines(request); @override Future logRoutineChainEntry(Map request) => comms.logRoutineChainEntry(request); @override Future getMyPrograms(HistoryRequest request) => comms.getMyPrograms(request); @override Future saveProgramEntry(Map request) => comms.saveProgramEntry(request); @override Future activateProgramEntry(IdRequest request) => comms.activateProgramEntry(request); @override Future getProgramSessions(IdRequest request) => comms.getProgramSessions(request); @override Future startSessionEntry(IdRequest request) => comms.startSessionEntry(request); @override Future saveSessionLogEntry(SessionLogRequest request) => comms.saveSessionLogEntry(request); @override Future getSessionHistory(HistoryRequest request) => comms.getSessionHistory(request); @override Future getLastSessionFor(IdRequest request) => comms.getLastSessionFor(request); @override Future getWeeklyVolume(ReportCardRequest request) => comms.getWeeklyVolume(request); @override Future getContactVolume(ReportCardRequest request) => comms.getContactVolume(request); @override Future getPersonalRecords(HistoryRequest request) => comms.getPersonalRecords(request); @override Future getWeeklyReportCard(ReportCardRequest request) => comms.getWeeklyReportCard(request); @override Future getMonthlyReportCard(ReportCardRequest request) => comms.getMonthlyReportCard(request); @override Future getMyNotifications(HistoryRequest request) => comms.getMyNotifications(request); @override Future acknowledgeNudgeEntry(IdRequest request) => comms.acknowledgeNudgeEntry(request); }