Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 24 additions & 4 deletions Loop/View Controllers/CarbAbsorptionViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ final class CarbAbsorptionViewController: LoopChartsTableViewController, Identif
charts.updateEndDate(chartStartDate.addingTimeInterval(.hours(totalHours+1))) // When there is no data, this allows presenting current hour + 1

let midnight = Calendar.current.startOfDay(for: Date())
let listStart = min(midnight, chartStartDate, Date(timeIntervalSinceNow: -LoopCoreConstants.maximumCarbAbsorptionTimeInterval))
let listStart = min(midnight - .hours(24), chartStartDate, Date(timeIntervalSinceNow: -LoopCoreConstants.maximumCarbAbsorptionTimeInterval))
let listEnd = Date().addingTimeInterval(LoopConstants.maxCarbEntryFutureTime)

let shouldUpdateGlucose = currentContext.contains(.glucose)
Expand Down Expand Up @@ -252,6 +252,14 @@ final class CarbAbsorptionViewController: LoopChartsTableViewController, Identif
return formatter
}()

private lazy var relativeTimeFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.doesRelativeDateFormatting = true
formatter.timeStyle = .short
return formatter
}()

override func numberOfSections(in tableView: UITableView) -> Int {
return Section.count
}
Expand Down Expand Up @@ -308,7 +316,14 @@ final class CarbAbsorptionViewController: LoopChartsTableViewController, Identif
}

// Entry time
let startTime = timeFormatter.string(from: status.entry.startDate)
let startTime: String
// Indicate if an entry is from the previous day to avoid potential confusion
let midnight = Calendar.current.startOfDay(for: Date())
if status.entry.startDate < midnight {
startTime = relativeTimeFormatter.string(from: status.entry.startDate)
} else {
startTime = timeFormatter.string(from: status.entry.startDate)
}
if let absorptionTime = status.entry.absorptionTime,
let duration = absorptionFormatter.string(from: absorptionTime)
{
Expand Down Expand Up @@ -359,7 +374,7 @@ final class CarbAbsorptionViewController: LoopChartsTableViewController, Identif
}
}

cell.isEditable = allowEditing
cell.isEditable = canEdit(status.entry)
return cell
}
}
Expand Down Expand Up @@ -447,9 +462,14 @@ final class CarbAbsorptionViewController: LoopChartsTableViewController, Identif
case .totals:
return nil
case .entries:
return (allowEditing && carbStatuses[indexPath.row].entry.createdByCurrentApp) ? indexPath : nil
return canEdit(carbStatuses[indexPath.row].entry) ? indexPath : nil
}
}

// Entries older than the carb entry window are delete-only.
private func canEdit(_ entry: StoredCarbEntry) -> Bool {
allowEditing && entry.createdByCurrentApp && entry.startDate >= Date().addingTimeInterval(LoopConstants.maxCarbEntryPastTime)
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
Expand Down