import { Injectable } from '@angular/core';
import { Cordova, AwesomeCordovaNativePlugin, Plugin } from '@awesome-cordova-plugins/core';

/**
 * @name App Availability
 * @description
 * This plugin allows you to check if an app is installed on the user's device. It requires an URI Scheme (e.g. twitter://) on iOS or a Package Name (e.g com.twitter.android) on Android.
 *
 * Requires Cordova plugin: cordova-plugin-appavailability. For more info, please see the [AppAvailability plugin docs](https://github.com/ohh2ahh/AppAvailability).
 * @usage
 * ```typescript
 * import { AppAvailability } from '@awesome-cordova-plugins/app-availability/ngx';
 * import { Platform } from 'ionic-angular';
 *
 * constructor(private appAvailability: AppAvailability, private platform: Platform) { }
 *
 * ...
 *
 * let app;
 *
 * if (this.platform.is('ios')) {
 *   app = 'twitter://';
 * } else if (this.platform.is('android')) {
 *   app = 'com.twitter.android';
 * }
 *
 * this.appAvailability.check(app)
 *   .then(
 *     (yes: boolean) => console.log(app + ' is available'),
 *     (no: boolean) => console.log(app + ' is NOT available')
 *   );
 * ```
 */
@Plugin({
  pluginName: 'AppAvailability',
  plugin: 'cordova-plugin-appavailability',
  pluginRef: 'appAvailability',
  repo: 'https://github.com/ohh2ahh/AppAvailability',
  platforms: ['Android', 'iOS'],
})
@Injectable()
export class AppAvailability extends AwesomeCordovaNativePlugin {
  /**
   * Checks if an app is available on device
   *
   * @param {string} app Package name on android, or URI scheme on iOS
   * @returns {Promise<boolean>}
   */
  @Cordova()
  check(app: string): Promise<boolean> {
    return;
  }
}
