// // CredentialProviderViewController.swift // AutoFill // // Created by Christophe Vila on 19/09/2026. // import AuthenticationServices import SwiftUI import MyPassCore final class CredentialProviderViewController: ASCredentialProviderViewController { private let session = VaultSession() private let bookmarkService = FileBookmarkService() private let keychainStore = KeychainStore(accessGroup: "F2KB6W8N4R.org.antiloop222.mypass") private let biometricService = BiometricAuthService() // Called when the user selects MyPass from the QuickType bar. override func prepareCredentialList(for serviceIdentifiers: [ASCredentialServiceIdentifier]) { let ids = serviceIdentifiers.map(\.identifier) showUI(serviceIdentifiers: ids) } private func showUI(serviceIdentifiers: [String]) { let rootView = ExtensionRootView( session: session, serviceIdentifiers: serviceIdentifiers, bookmarkService: bookmarkService, keychainStore: keychainStore, biometricService: biometricService, onSelect: { [weak self] (entry: Entry) in let credential = ASPasswordCredential( user: entry.username, password: entry.password.reveal() ) self?.extensionContext.completeRequest(withSelectedCredential: credential, completionHandler: nil) }, onCancel: { [weak self] in self?.extensionContext.cancelRequest(withError: ASExtensionError(.userCanceled)) } ) let host = UIHostingController(rootView: rootView) addChild(host) view.addSubview(host.view) host.view.frame = view.bounds host.view.autoresizingMask = [UIView.AutoresizingMask.flexibleWidth, UIView.AutoresizingMask.flexibleHeight] host.didMove(toParent: self) } }