Skip to content
Open
Show file tree
Hide file tree
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
807 changes: 399 additions & 408 deletions MyHeartCounts.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion MyHeartCounts/Account/AccountSetupHeader.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
//

@_spi(TestingSupport)
import SpeziAccount
import GroveAccount
import SwiftUI


Expand Down
12 changes: 6 additions & 6 deletions MyHeartCounts/Account/AccountSheet.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@

import FirebaseCore
import FirebaseFunctions
import GroveAccount
import GroveHealthKitBulkExport
import GroveLicense
import GroveSensorKit
import GroveStudy
import GroveViews
import MyHeartCountsShared
import SFSafeSymbols
import SpeziAccount
import SpeziHealthKitBulkExport
import SpeziLicense
import SpeziSensorKit
import SpeziStudy
import SpeziViews
import SwiftUI


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
//

import Foundation
import GroveAccount
import HealthKit
import SpeziAccount
import SwiftUI


Expand Down
2 changes: 1 addition & 1 deletion MyHeartCounts/Account/Demographics/DemographicsData.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
//

import Foundation
import GroveAccount
import HealthKit
import SpeziAccount
import SwiftUI


Expand Down
8 changes: 4 additions & 4 deletions MyHeartCounts/Account/Demographics/DemographicsForm.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@
// swiftlint:disable file_types_order attributes discouraged_optional_boolean

import Foundation
import GroveAccount
import GroveHealthKit
import GroveHealthKitUI
import GroveViews
import MyHeartCountsShared
import SFSafeSymbols
import SpeziAccount
import SpeziHealthKit
import SpeziHealthKitUI
import SpeziViews
import SwiftUI


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
// swiftlint:disable file_types_order attributes file_length

import Foundation
import GroveHealthKit
import MyHeartCountsShared
import SpeziHealthKit
import SwiftUI


Expand Down
2 changes: 1 addition & 1 deletion MyHeartCounts/Account/Demographics/NHSNumber.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
//

import Foundation
import SpeziValidation
import GroveValidation


/// A 10-digit NHS number
Expand Down
4 changes: 2 additions & 2 deletions MyHeartCounts/Account/Demographics/NHSNumberTextField.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
//

import Foundation
import SpeziValidation
import SpeziViews
import GroveValidation
import GroveViews
import SwiftUI


Expand Down
8 changes: 4 additions & 4 deletions MyHeartCounts/Account/MHCAccountKeys.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@

@preconcurrency import FirebaseStorage
import Foundation
import SpeziAccount
import SpeziFoundation
import SpeziLocalStorage
import GroveAccount
import GroveFoundation
import GroveLocalStorage
import SwiftUI


Expand Down Expand Up @@ -49,7 +49,7 @@ extension AccountDetails {
)
var dateOfEnrollment: Date?

// NOTE: this is, for the time being, stored using SpeziLocalStorage.
// NOTE: this is, for the time being, stored using GroveLocalStorage.
// /// The date the current study actication, i.e. when the user logged in to the app and started/resumed their study participation.
// @AccountKey(
// id: "currentStudyActivationDate",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
//

import Foundation
import GroveHealthKit
import GroveHealthKitUI
import HealthKit
import SpeziHealthKit
import SpeziHealthKitUI


extension ParticipationStatsProvider {
Expand Down
10 changes: 5 additions & 5 deletions MyHeartCounts/Account/ParticipationStatsProvider.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
//

import Foundation
import Spezi
import SpeziHealthKit
import SpeziHealthKitUI
import SpeziScheduler
import SpeziStudy
import Grove
import GroveHealthKit
import GroveHealthKitUI
import GroveScheduler
import GroveStudy


@Observable
Expand All @@ -29,7 +29,7 @@

extension ParticipationStatsProvider {
struct Stats: Sendable {
let enrollment: EnrollmentStats

Check warning on line 32 in MyHeartCounts/Account/ParticipationStatsProvider.swift

View workflow job for this annotation

GitHub Actions / Periphery / Run Periphery

assignOnlyProperty

Assign-only property 'enrollment' is assigned, but never used
let appEngagement: AppEngagementStats?
let taskEngagement: TaskEngagementStats
let health: ParticipationHealthStats
Expand All @@ -37,11 +37,11 @@


struct EnrollmentStats: Sendable {
let enrollmentDate: Date

Check warning on line 40 in MyHeartCounts/Account/ParticipationStatsProvider.swift

View workflow job for this annotation

GitHub Actions / Periphery / Run Periphery

assignOnlyProperty

Assign-only property 'enrollmentDate' is assigned, but never used
let numDaysEnrolled: Int

Check warning on line 41 in MyHeartCounts/Account/ParticipationStatsProvider.swift

View workflow job for this annotation

GitHub Actions / Periphery / Run Periphery

assignOnlyProperty

Assign-only property 'numDaysEnrolled' is assigned, but never used
let numWeeksEnrolled: Int

Check warning on line 42 in MyHeartCounts/Account/ParticipationStatsProvider.swift

View workflow job for this annotation

GitHub Actions / Periphery / Run Periphery

assignOnlyProperty

Assign-only property 'numWeeksEnrolled' is assigned, but never used
let numMonthsEnrolled: Int

Check warning on line 43 in MyHeartCounts/Account/ParticipationStatsProvider.swift

View workflow job for this annotation

GitHub Actions / Periphery / Run Periphery

assignOnlyProperty

Assign-only property 'numMonthsEnrolled' is assigned, but never used
let numYearsEnrolled: Int

Check warning on line 44 in MyHeartCounts/Account/ParticipationStatsProvider.swift

View workflow job for this annotation

GitHub Actions / Periphery / Run Periphery

assignOnlyProperty

Assign-only property 'numYearsEnrolled' is assigned, but never used
}

struct AppEngagementStats: Sendable {
Expand Down Expand Up @@ -100,9 +100,9 @@
extension ParticipationStatsProvider {
struct RefreshIdentity: Hashable {
let enrollmentID: StudyEnrollment.ID
let enrollmentDate: Date

Check warning on line 103 in MyHeartCounts/Account/ParticipationStatsProvider.swift

View workflow job for this annotation

GitHub Actions / Periphery / Run Periphery

assignOnlyProperty

Assign-only property 'enrollmentDate' is assigned, but never used
let storeID: ObjectIdentifier?

Check warning on line 104 in MyHeartCounts/Account/ParticipationStatsProvider.swift

View workflow job for this annotation

GitHub Actions / Periphery / Run Periphery

assignOnlyProperty

Assign-only property 'storeID' is assigned, but never used
let sessionRevision: Int?

Check warning on line 105 in MyHeartCounts/Account/ParticipationStatsProvider.swift

View workflow job for this annotation

GitHub Actions / Periphery / Run Periphery

assignOnlyProperty

Assign-only property 'sessionRevision' is assigned, but never used
}

func refreshIdentity(for enrollment: StudyEnrollment) -> RefreshIdentity {
Expand Down
6 changes: 3 additions & 3 deletions MyHeartCounts/Account/ParticipationStatsView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
// swiftlint:disable attributes file_types_order file_length

import Foundation
import GroveFoundation
import GroveStudy
import GroveViews
import SFSafeSymbols
import SpeziFoundation
import SpeziStudy
import SpeziViews
import SwiftUI
import UIKit

Expand All @@ -25,7 +25,7 @@
}

private struct ObservationIdentity: Hashable {
let query: ParticipationStatsProvider.RefreshIdentity

Check warning on line 28 in MyHeartCounts/Account/ParticipationStatsView.swift

View workflow job for this annotation

GitHub Actions / Periphery / Run Periphery

assignOnlyProperty

Assign-only property 'query' is assigned, but never used
let refreshID: UUID
}

Expand Down
8 changes: 4 additions & 4 deletions MyHeartCounts/Account/SignedConsentForms.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@

@preconcurrency import FirebaseStorage
import Foundation
import GroveAccount
import GroveConsent
import GroveFoundation
import GroveViews
import OSLog
import QuickLook
import SFSafeSymbols
import SpeziAccount
import SpeziConsent
import SpeziFoundation
import SpeziViews
import SwiftUI


Expand Down
4 changes: 2 additions & 2 deletions MyHeartCounts/Account/UpdateComorbiditiesButton.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
// SPDX-License-Identifier: MIT
//

import GroveAccount
import GroveViews
import SFSafeSymbols
import SpeziAccount
import SpeziViews
import SwiftUI


Expand Down
8 changes: 4 additions & 4 deletions MyHeartCounts/Account/VerifyEmailSheet.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@

@preconcurrency import FirebaseAuth
import Foundation
import GroveAccount
import GroveFirebaseAccount
import GroveFoundation
import GroveViews
import MyHeartCountsShared
import SFSafeSymbols
import SpeziAccount
import SpeziFirebaseAccount
import SpeziFoundation
import SpeziViews
import SwiftUI


Expand Down
2 changes: 1 addition & 1 deletion MyHeartCounts/Achievements/Achievement.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
//

import Foundation
import GroveFoundation
import SFSafeSymbols
import SpeziFoundation


/// A tracked goal the user can unlock by satisfying some condition.
Expand Down
14 changes: 7 additions & 7 deletions MyHeartCounts/Achievements/AchievementsManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@
import Algorithms
import FirebaseFirestore
import Foundation
import Grove
import GroveAccount
import GroveFirestore
import GroveFoundation
import GroveHealthKit
import GroveHealthKitUI
import GroveStudy
import MyHeartCountsShared
import OSLog
import Spezi
import SpeziAccount
import SpeziFirestore
import SpeziFoundation
import SpeziHealthKit
import SpeziHealthKitUI
import SpeziStudy
import SwiftUI
import UIKit

Expand Down Expand Up @@ -228,7 +228,7 @@
// swiftlint:enable attributes

/// Protects ``_achievements``
@ObservationIgnored private let achievementsLock = RWLock()

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App Unit Tests / Build and Test with xcodebuild

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App Unit Tests / Build and Test with xcodebuild

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App Unit Tests / Build and Test with xcodebuild

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App Unit Tests / Build and Test with xcodebuild

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App Unit Tests / Build and Test with xcodebuild

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App Unit Tests / Build and Test with xcodebuild

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App Unit Tests / Build and Test with xcodebuild

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App Unit Tests / Build and Test with xcodebuild

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App Unit Tests / Build and Test with xcodebuild

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App UI Tests (Build)

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App UI Tests (Build)

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App UI Tests (Build)

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App UI Tests (Build)

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App UI Tests (Build)

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App UI Tests (Build)

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App UI Tests (Build)

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App UI Tests (Build)

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App UI Tests (Build)

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.

Check warning on line 231 in MyHeartCounts/Achievements/AchievementsManager.swift

View workflow job for this annotation

GitHub Actions / App UI Tests (Build)

'RWLock' is deprecated: `pthread_rwlock` is slower than the alternatives in nearly every access pattern, and it cannot own the state it guards. Use `Synchronization.Mutex`, `OSAllocatedUnfairLock`, or `NSLock` instead, depending on your availability requirements.
/*nonisolated(unsafe)*/ private var _achievements: [Achievement] = []


Expand Down
2 changes: 1 addition & 1 deletion MyHeartCounts/Achievements/MHCAchievements.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
// IDEA ideally we'd also have some of these achievements, when displayed in the UI, be buttons that directly take the user to where they can perform the action that would give them the acheivement, or maybe even directly initiates the thing?!

import Foundation
import GroveFoundation
import SFSafeSymbols
import SpeziFoundation


extension Achievement.Category {
Expand Down
2 changes: 1 addition & 1 deletion MyHeartCounts/Feedback/FeedbackForm.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
//

import Foundation
import SpeziViews
import GroveViews
import SwiftUI


Expand Down
6 changes: 3 additions & 3 deletions MyHeartCounts/Feedback/FeedbackManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@

@preconcurrency import FirebaseFirestore
import Foundation
import Grove
import GroveAccount
import GroveFirestore
import OSLog
import Spezi
import SpeziAccount
import SpeziFirestore
import class UIKit.UIDevice


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
//

import Foundation
import SpeziFoundation
import SpeziHealthKit
import SpeziHealthKitBulkExport
import SpeziHealthKitFHIR
import GroveFoundation
import GroveHealthKit
import GroveHealthKitBulkExport
import GroveHealthKitFHIR


struct HealthKitSamplesFHIRUploader: BatchProcessor {
Expand Down
4 changes: 2 additions & 2 deletions MyHeartCounts/Health Import/HealthObservation.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@

import FHIRModelsExtensions
import Foundation
import GroveHealthKit
import GroveHealthKitFHIR
import HealthKit
import ModelsDSTU2
import ModelsR4
import MyHeartCountsShared
import SpeziHealthKit
import SpeziHealthKitFHIR


protocol HealthObservation: Sendable { // might want to rename this (@lukas); the resulting ResourceProxy is not necessarily an Observation...)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@

@preconcurrency import FirebaseStorage
import Foundation
import Grove
import GroveAccount
import GroveFoundation
import GroveHealthKit
import GroveHealthKitBulkExport
import GroveStudy
import MyHeartCountsShared
import OSLog
import Spezi
import SpeziAccount
import SpeziFoundation
import SpeziHealthKit
import SpeziHealthKitBulkExport
import SpeziStudy
import UIKit


Expand Down
Loading
Loading