Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
folium-app
GitHub Repository: folium-app/Folium
Path: blob/a-new-beginning/Folium-iOS/Actors/MotionAndFitnessAccess.swift
2 views
//
//  MotionAndFitnessAccess.swift
//  Folium-iOS
//
//  Created by Jarrod Norwell on 12/7/2025.
//

/*
 MARK: 29/11/2025
 - Cleaned up MotionAndFitnessAccess actor
 - Made `checkAuthorisationStatus` async
 */

import CoreMotion

actor MotionAndFitnessAccess {
    var authorised: Bool = false
    var status: CMAuthorizationStatus = .notDetermined
    
    var pedometer: CMPedometer = .init()
    
    func checkAuthorisationStatus() async {
        await withCheckedContinuation { continuation in
            status = CMPedometer.authorizationStatus()
            authorised = status == .authorized
            continuation.resume()
        }
    }
    
    func authorise() async -> Bool {
#if targetEnvironment(simulator)
        return true
#else
        await withCheckedContinuation { continuation in
            pedometer.queryPedometerData(from: .now, to: .now) { _, error in
                continuation.resume(returning: error == nil)
            }
        }
#endif
    }
}