|
|
@@ -8,7 +8,7 @@ protocol CarbsObserver {
|
|
|
}
|
|
|
|
|
|
protocol CarbsStorage {
|
|
|
- func storeCarbs(_ carbs: [CarbsEntry]) async
|
|
|
+ func storeCarbs(_ carbs: [CarbsEntry], areFetchedFromRemote: Bool) async
|
|
|
func syncDate() -> Date
|
|
|
func recent() -> [CarbsEntry]
|
|
|
func getCarbsNotYetUploadedToNightscout() async -> [NightscoutTreatment]
|
|
|
@@ -28,9 +28,9 @@ final class BaseCarbsStorage: CarbsStorage, Injectable {
|
|
|
injectServices(resolver)
|
|
|
}
|
|
|
|
|
|
- func storeCarbs(_ entries: [CarbsEntry]) async {
|
|
|
- await saveCarbEquivalents(entries: entries)
|
|
|
- await saveCarbsToCoreData(entries: entries)
|
|
|
+ func storeCarbs(_ entries: [CarbsEntry], areFetchedFromRemote: Bool) async {
|
|
|
+ await saveCarbEquivalents(entries: entries, areFetchedFromRemote: areFetchedFromRemote)
|
|
|
+ await saveCarbsToCoreData(entries: entries, areFetchedFromRemote: areFetchedFromRemote)
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -129,7 +129,7 @@ final class BaseCarbsStorage: CarbsStorage, Injectable {
|
|
|
return (futureCarbArray, carbEquivalents)
|
|
|
}
|
|
|
|
|
|
- private func saveCarbEquivalents(entries: [CarbsEntry]) async {
|
|
|
+ private func saveCarbEquivalents(entries: [CarbsEntry], areFetchedFromRemote: Bool) async {
|
|
|
guard let lastEntry = entries.last else { return }
|
|
|
|
|
|
if let fat = lastEntry.fat, let protein = lastEntry.protein, fat > 0 || protein > 0 {
|
|
|
@@ -142,12 +142,12 @@ final class BaseCarbsStorage: CarbsStorage, Injectable {
|
|
|
)
|
|
|
|
|
|
if carbEquivalentCount > 0 {
|
|
|
- await saveFPUToCoreDataAsBatchInsert(entries: futureCarbEquivalents)
|
|
|
+ await saveFPUToCoreDataAsBatchInsert(entries: futureCarbEquivalents, areFetchedFromRemote: areFetchedFromRemote)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private func saveCarbsToCoreData(entries: [CarbsEntry]) async {
|
|
|
+ private func saveCarbsToCoreData(entries: [CarbsEntry], areFetchedFromRemote: Bool) async {
|
|
|
guard let entry = entries.last, entry.carbs != 0 else { return }
|
|
|
|
|
|
await coredataContext.perform {
|
|
|
@@ -158,7 +158,7 @@ final class BaseCarbsStorage: CarbsStorage, Injectable {
|
|
|
newItem.protein = Double(truncating: NSDecimalNumber(decimal: entry.protein ?? 0))
|
|
|
newItem.id = UUID()
|
|
|
newItem.isFPU = false
|
|
|
- newItem.isUploadedToNS = false
|
|
|
+ newItem.isUploadedToNS = areFetchedFromRemote ? true : false
|
|
|
|
|
|
do {
|
|
|
guard self.coredataContext.hasChanges else { return }
|
|
|
@@ -169,7 +169,7 @@ final class BaseCarbsStorage: CarbsStorage, Injectable {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private func saveFPUToCoreDataAsBatchInsert(entries: [CarbsEntry]) async {
|
|
|
+ private func saveFPUToCoreDataAsBatchInsert(entries: [CarbsEntry], areFetchedFromRemote: Bool) async {
|
|
|
let commonFPUID =
|
|
|
UUID() // all fpus should only get ONE id per batch insert to be able to delete them referencing the fpuID
|
|
|
var entrySlice = ArraySlice(entries) // convert to ArraySlice
|
|
|
@@ -184,7 +184,7 @@ final class BaseCarbsStorage: CarbsStorage, Injectable {
|
|
|
carbEntry.id = UUID.init(uuidString: entryId)
|
|
|
carbEntry.fpuID = commonFPUID
|
|
|
carbEntry.isFPU = true
|
|
|
- carbEntry.isUploadedToNS = false
|
|
|
+ carbEntry.isUploadedToNS = areFetchedFromRemote ? true : false
|
|
|
return false // return false to continue
|
|
|
}
|
|
|
await coredataContext.perform {
|