diff --git a/android/app/build.gradle b/android/app/build.gradle index 3182eff24..5a6063e01 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,8 +1,21 @@ +def taskRequests = getGradle().getStartParameter().getTaskRequests().toString() +def isPlay = !(taskRequests.contains("Foss") || taskRequests.contains("foss")) + apply plugin: "com.android.application" apply plugin: 'kotlin-android' -apply plugin: "io.fabric" -apply plugin: "com.google.firebase.firebase-perf" + apply plugin: 'com.bugsnag.android.gradle' +apply plugin: 'com.google.gms.google-services' + +if(isPlay){ + apply plugin: "io.fabric" + apply plugin: "com.google.firebase.firebase-perf" +} + +android.applicationVariants.all { variant -> + def googleTask = tasks.findByName("process${variant.name.capitalize()}GoogleServices") + googleTask.enabled = !"foss".equals(variant.flavorName) +} import com.android.build.OutputFile @@ -139,7 +152,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode VERSIONCODE as Integer - versionName "4.8.0" + versionName "4.7.0" vectorDrawables.useSupportLibrary = true manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String] missingDimensionStrategy "RNNotifications.reactNativeVersion", "reactNative60" // See note below! @@ -179,6 +192,19 @@ android { } // applicationVariants are e.g. debug, release + + flavorDimensions 'type' + productFlavors { + foss { + dimension = 'type' + buildConfigField 'boolean', 'PLAY_BUILD', "false" + } + play { + dimension = 'type' + buildConfigField 'boolean', 'PLAY_BUILD', "true" + } + } + applicationVariants.all { variant -> variant.outputs.each { output -> // For each separate APK per architecture, set a unique version code as described here: @@ -214,10 +240,10 @@ dependencies { implementation fileTree(dir: "libs", include: ["*.jar"]) //noinspection GradleDynamicVersion implementation "com.facebook.react:react-native:+" // From node_modules - implementation "com.google.firebase:firebase-messaging:18.0.0" - implementation "com.google.firebase:firebase-core:16.0.9" - implementation "com.google.firebase:firebase-perf:17.0.2" - implementation('com.crashlytics.sdk.android:crashlytics:2.9.9@aar') { + playImplementation "com.google.firebase:firebase-messaging:18.0.0" + playImplementation "com.google.firebase:firebase-core:16.0.9" + playImplementation "com.google.firebase:firebase-perf:17.0.2" + playImplementation('com.crashlytics.sdk.android:crashlytics:2.9.9@aar') { transitive = true } implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" @@ -251,5 +277,4 @@ task copyDownloadableDepsToLibs(type: Copy) { into 'libs' } -apply plugin: 'com.google.gms.google-services' apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) \ No newline at end of file diff --git a/android/app/src/foss/java/chat/rocket/reactnative/CustomPushNotification.java b/android/app/src/foss/java/chat/rocket/reactnative/CustomPushNotification.java new file mode 100644 index 000000000..f71f457a5 --- /dev/null +++ b/android/app/src/foss/java/chat/rocket/reactnative/CustomPushNotification.java @@ -0,0 +1,47 @@ +package chat.rocket.reactnative; + +import android.app.Notification; +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.app.RemoteInput; +import android.content.Intent; +import android.content.Context; +import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.drawable.Icon; +import android.os.Build; +import android.os.Bundle; +import android.app.Person; + +import com.google.gson.*; +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.resource.bitmap.RoundedCorners; +import com.bumptech.glide.request.RequestOptions; +import java.util.concurrent.ExecutionException; +import java.lang.InterruptedException; + +import com.facebook.react.bridge.ReactApplicationContext; +import com.wix.reactnativenotifications.core.AppLaunchHelper; +import com.wix.reactnativenotifications.core.AppLifecycleFacade; +import com.wix.reactnativenotifications.core.JsIOHelper; +import com.wix.reactnativenotifications.core.notification.PushNotification; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.ArrayList; +import java.util.Date; + +import static com.wix.reactnativenotifications.Defs.NOTIFICATION_RECEIVED_EVENT_NAME; + +public class CustomPushNotification extends PushNotification { + public static ReactApplicationContext reactApplicationContext; + + public CustomPushNotification(Context context, Bundle bundle, AppLifecycleFacade appLifecycleFacade, AppLaunchHelper appLaunchHelper, JsIOHelper jsIoHelper) { + super(context, bundle, appLifecycleFacade, appLaunchHelper, jsIoHelper); + reactApplicationContext = new ReactApplicationContext(context); + } + +} diff --git a/android/app/src/foss/java/chat/rocket/reactnative/DismissNotification.java b/android/app/src/foss/java/chat/rocket/reactnative/DismissNotification.java new file mode 100644 index 000000000..48350be51 --- /dev/null +++ b/android/app/src/foss/java/chat/rocket/reactnative/DismissNotification.java @@ -0,0 +1,12 @@ +package chat.rocket.reactnative; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +public class DismissNotification extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + + } +} diff --git a/android/app/src/main/java/chat/rocket/reactnative/Ejson.java b/android/app/src/foss/java/chat/rocket/reactnative/Ejson.java similarity index 100% rename from android/app/src/main/java/chat/rocket/reactnative/Ejson.java rename to android/app/src/foss/java/chat/rocket/reactnative/Ejson.java diff --git a/android/app/src/foss/java/chat/rocket/reactnative/ReplyBroadcast.java b/android/app/src/foss/java/chat/rocket/reactnative/ReplyBroadcast.java new file mode 100644 index 000000000..2c96a457c --- /dev/null +++ b/android/app/src/foss/java/chat/rocket/reactnative/ReplyBroadcast.java @@ -0,0 +1,37 @@ +package chat.rocket.reactnative; + +import android.app.Notification; +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.app.RemoteInput; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.res.Resources; +import android.os.Build; +import android.os.Bundle; +import android.util.Log; +import java.io.IOException; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import java.util.HashMap; +import java.util.Map; + +import okhttp3.Call; +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; + +import chat.rocket.userdefaults.RNUserDefaultsModule; +import com.wix.reactnativenotifications.core.NotificationIntentAdapter; + +public class ReplyBroadcast extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + + } +} diff --git a/android/app/src/main/java/chat/rocket/reactnative/MainApplication.java b/android/app/src/main/java/chat/rocket/reactnative/MainApplication.java index 530a2a857..58b68aef6 100644 --- a/android/app/src/main/java/chat/rocket/reactnative/MainApplication.java +++ b/android/app/src/main/java/chat/rocket/reactnative/MainApplication.java @@ -53,11 +53,13 @@ public class MainApplication extends Application implements ReactApplication, IN protected List getPackages() { @SuppressWarnings("UnnecessaryLocalVariable") List packages = new PackageList(this).getPackages(); - packages.add(new RNFirebaseCrashlyticsPackage()); - packages.add(new RNFirebaseAnalyticsPackage()); - packages.add(new RNFirebasePerformancePackage()); + if(BuildConfig.PLAY_BUILD) { + packages.add(new RNFirebaseCrashlyticsPackage()); + packages.add(new RNFirebaseAnalyticsPackage()); + packages.add(new RNFirebasePerformancePackage()); + packages.add(new RNNotificationsPackage(MainApplication.this)); + } packages.add(new KeyboardInputPackage(MainApplication.this)); - packages.add(new RNNotificationsPackage(MainApplication.this)); packages.add(new WatermelonDBPackage()); packages.add(new RNCViewPagerPackage()); // packages.add(new ModuleRegistryAdapter(mModuleRegistryProvider)); diff --git a/android/app/google-services.json b/android/app/src/play/google-services.json similarity index 100% rename from android/app/google-services.json rename to android/app/src/play/google-services.json diff --git a/android/app/src/main/java/chat/rocket/reactnative/CustomPushNotification.java b/android/app/src/play/java/chat/rocket/reactnative/CustomPushNotification.java similarity index 100% rename from android/app/src/main/java/chat/rocket/reactnative/CustomPushNotification.java rename to android/app/src/play/java/chat/rocket/reactnative/CustomPushNotification.java diff --git a/android/app/src/main/java/chat/rocket/reactnative/DismissNotification.java b/android/app/src/play/java/chat/rocket/reactnative/DismissNotification.java similarity index 100% rename from android/app/src/main/java/chat/rocket/reactnative/DismissNotification.java rename to android/app/src/play/java/chat/rocket/reactnative/DismissNotification.java diff --git a/android/app/src/play/java/chat/rocket/reactnative/Ejson.java b/android/app/src/play/java/chat/rocket/reactnative/Ejson.java new file mode 100644 index 000000000..48c370370 --- /dev/null +++ b/android/app/src/play/java/chat/rocket/reactnative/Ejson.java @@ -0,0 +1,43 @@ +package chat.rocket.reactnative; + +import android.content.SharedPreferences; + +import chat.rocket.userdefaults.RNUserDefaultsModule; + +public class Ejson { + String host; + String rid; + String type; + Sender sender; + + private String TOKEN_KEY = "reactnativemeteor_usertoken-"; + private SharedPreferences sharedPreferences = RNUserDefaultsModule.getPreferences(CustomPushNotification.reactApplicationContext); + + public String getAvatarUri() { + if (type == null) { + return null; + } + return serverURL() + "/avatar/" + this.sender.username + "?rc_token=" + token() + "&rc_uid=" + userId(); + } + + public String token() { + return sharedPreferences.getString(TOKEN_KEY.concat(userId()), ""); + } + + public String userId() { + return sharedPreferences.getString(TOKEN_KEY.concat(serverURL()), ""); + } + + public String serverURL() { + String url = this.host; + if (url != null && url.endsWith("/")) { + url = url.substring(0, url.length() - 1); + } + return url; + } + + public class Sender { + String username; + String _id; + } +} \ No newline at end of file diff --git a/android/app/src/main/java/chat/rocket/reactnative/ReplyBroadcast.java b/android/app/src/play/java/chat/rocket/reactnative/ReplyBroadcast.java similarity index 100% rename from android/app/src/main/java/chat/rocket/reactnative/ReplyBroadcast.java rename to android/app/src/play/java/chat/rocket/reactnative/ReplyBroadcast.java