<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
        xmlns:android="http://schemas.android.com/apk/res/android"
        id="tabris-plugin-firebase"
        version="3.0.0">

  <name>Tabris.js Firebase Plugin</name>
  <description>A firebase for Tabris.js. The plugin allows to handle cloud messages.</description>
  <author>EclipseSource</author>
  <license>Revised BSD License (3-clause license)</license>
  <repo>https://github.com/eclipsesource/tabris-plugin-firebase.git</repo>
  <issue>https://github.com/eclipsesource/tabris-plugin-firebase/issues</issue>

  <!-- cordova -->
  <engines>
    <engine name="cordova-android" version=">=7.0.0" />
  </engines>

  <js-module src="www/Messaging.js" name="messaging">
    <clobbers target="firebase.Messaging" />
  </js-module>

  <js-module src="www/Analytics.js" name="analytics">
    <clobbers target="firebase.Analytics" />
  </js-module>


  <platform name="android">

    <!-- The default value "@mipmap/ic_launcher" is the resource used by the tabris-android cordova platform for the app icon -->
    <preference name="ANDROID_NOTIFICATION_ICON" default="@mipmap/ic_launcher" />

    <config-file target="AndroidManifest.xml" parent="/manifest">

      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permission.WAKE_LOCK" />

    </config-file>

    <config-file target="AndroidManifest.xml" parent="/manifest/application">

      <service android:name="com.eclipsesource.firebase.messaging.TabrisFirebaseMessagingService">
        <intent-filter>
          <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
      </service>
      <service android:name="com.eclipsesource.firebase.messaging.TabrisFirebaseInstanceIDService">
        <intent-filter>
          <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
        </intent-filter>
      </service>

      <meta-data
          android:name="com.eclipsesource.tabris.android.HANDLER.com.eclipsesource.tabris.firebase.messaging"
          android:value="com.eclipsesource.firebase.messaging.MessagingHandler" />
      <meta-data
          android:name="com.eclipsesource.tabris.android.HANDLER.com.eclipsesource.tabris.firebase.analytics"
          android:value="com.eclipsesource.firebase.analytics.AnalyticsHandler" />
      <meta-data
          android:name="com.google.firebase.messaging.default_notification_icon"
          android:resource="$ANDROID_NOTIFICATION_ICON" />
      <meta-data android:name="firebase_analytics_collection_enabled" android:value="false" />

      <receiver android:name="com.eclipsesource.firebase.messaging.NotificationOpenedReceiver" />

    </config-file>

    <framework src="src/android/build-extras.gradle" custom="true" type="gradleReference" />

    <framework src="com.google.firebase:firebase-core:16.0.7" />
    <framework src="com.google.firebase:firebase-messaging:17.3.4" />

    <source-file src="src/android/com/eclipsesource/firebase/messaging/MessagingHandler.kt"
                 target-dir="src/com/eclipsesource/firebase/messaging" />
    <source-file src="src/android/com/eclipsesource/firebase/messaging/Messaging.kt"
                 target-dir="src/com/eclipsesource/firebase/messaging" />
    <source-file src="src/android/com/eclipsesource/firebase/messaging/TabrisFirebaseMessagingService.kt"
                 target-dir="src/com/eclipsesource/firebase/messaging" />
    <source-file src="src/android/com/eclipsesource/firebase/messaging/TabrisFirebaseInstanceIDService.kt"
                 target-dir="src/com/eclipsesource/firebase/messaging" />
    <source-file src="src/android/com/eclipsesource/firebase/messaging/NotificationOpenedReceiver.kt"
                 target-dir="src/com/eclipsesource/firebase/messaging" />

    <source-file src="src/android/com/eclipsesource/firebase/analytics/AnalyticsHandler.kt"
                 target-dir="src/com/eclipsesource/firebase/analytics" />
    <source-file src="src/android/com/eclipsesource/firebase/analytics/Analytics.kt"
                 target-dir="src/com/eclipsesource/firebase/analytics" />

    <hook src="scripts/android/copy_google_services.js" type="after_prepare" />

  </platform>

  <platform name="ios">
    <!-- Scripts -->
    <hook type="after_plugin_install" src="scripts/ios/custom-widget.js" />

    <!-- Add entries to TabrisPlugins.plist -->
    <config-file target="*TabrisPlugins.plist" parent="classes">
    	<array>
	    	<string>ESFBMessaging</string>
	    	<string>ESFBAnalytics</string>
    	</array>
    </config-file>

    <config-file target="*Entitlements-Debug.plist" parent="aps-environment">
        <string>development</string>
    </config-file>

    <config-file target="*Entitlements-Release.plist" parent="aps-environment">
        <string>production</string>
    </config-file>

    <config-file target="*-Info.plist" parent="UIBackgroundModes">
        <array>
            <string>remote-notification</string>
        </array>
    </config-file>

    <config-file target="*-Info.plist" parent="FIREBASE_ANALYTICS_COLLECTION_ENABLED">
        <false/>
    </config-file>

    <!-- Frameworks -->
    <framework src="FirebaseAnalytics" type="podspec" spec="~> 4.2.0"/>
    <framework src="FirebaseMessaging" type="podspec" spec="~> 2.2.0"/>

    <!-- Sources -->
    <!-- Analytics -->
    <header-file src="src/ios/src/ESFBAnalytics.h" />
    <source-file src="src/ios/src/ESFBAnalytics.m" />
    <!-- Messaging -->
    <header-file src="src/ios/src/ESFBMessaging.h" />
    <source-file src="src/ios/src/ESFBMessaging.m" />
    <!-- Helper classes -->
    <header-file src="src/ios/src/ESFirebaseHelper.h" />
    <source-file src="src/ios/src/ESFirebaseHelper.m" />
  </platform>

</plugin>
