// Copyright 2020 Google LLC. All rights reserved.
//
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
// file except in compliance with the License. You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under
// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
// ANY KIND, either express or implied. See the License for the specific language governing
// permissions and limitations under the License.

import GooglePlaces
import UIKit

/// Demo showing a modally presented Autocomplete view controller. Please refer to
/// https://developers.google.com/places/ios-sdk/autocomplete
class AutocompleteModalViewController: AutocompleteBaseViewController {
  override func viewDidLoad() {
    super.viewDidLoad()
    let autocompleteViewController = GMSAutocompleteViewController()
    autocompleteViewController.delegate = self
    if let config = autocompleteConfiguration {
      autocompleteViewController.autocompleteFilter = config.autocompleteFilter
      autocompleteViewController.placeFields = config.placeFields
    }
    navigationController?.present(autocompleteViewController, animated: true)
  }
}

extension AutocompleteModalViewController: GMSAutocompleteViewControllerDelegate {
  func viewController(
    _ viewController: GMSAutocompleteViewController,
    didAutocompleteWith place: GMSPlace
  ) {
    navigationController?.dismiss(animated: true)
    super.autocompleteDidSelectPlace(place)
  }

  func viewController(
    _ viewController: GMSAutocompleteViewController,
    didFailAutocompleteWithError error: Error
  ) {
    navigationController?.dismiss(animated: true)
    super.autocompleteDidFail(error)
  }

  func wasCancelled(_ viewController: GMSAutocompleteViewController) {
    navigationController?.dismiss(animated: true)
    super.autocompleteDidCancel()
  }

  func didRequestAutocompletePredictions(_ viewController: GMSAutocompleteViewController) {
    print("Request autocomplete predictions.")
  }

  func didUpdateAutocompletePredictions(_ viewController: GMSAutocompleteViewController) {
    print("Updated autocomplete predictions.")
  }
}