diff --git a/README.md b/README.md index d0a5dc4c3..f0cb88111 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,6 @@ Astrid was a popular cross-platform productivity service that was [acquired](htt [Get it on F-Droid](https://f-droid.org/packages/org.tasks) -[Get it on Amazon](https://www.amazon.com/Tasks-Astrid-To-Do-List-Clone/dp/B00QHGTL7O) Please visit [tasks.org](https://tasks.org) for end user documentation and support diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5216effa6..e2f2fad20 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -102,9 +102,6 @@ android { create("googleplay") { setDimension("store") } - create("amazon") { - setDimension("store") - } } viewBinding { @@ -135,7 +132,6 @@ configurations.all { } val googleplayImplementation by configurations -val amazonImplementation by configurations dependencies { implementation("com.gitlab.bitfireAT:dav4jvm:1.0.1") @@ -205,10 +201,6 @@ dependencies { googleplayImplementation("com.google.android.libraries.places:places:2.2.0") googleplayImplementation("com.android.billingclient:billing:1.2.2") - amazonImplementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar")))) - amazonImplementation("com.crashlytics.sdk.android:crashlytics:${Versions.crashlytics}") - amazonImplementation("com.google.firebase:firebase-core:${Versions.firebase}") - kaptAndroidTest("com.google.dagger:dagger-compiler:${Versions.dagger}") kaptAndroidTest("com.jakewharton:butterknife-compiler:${Versions.butterknife}") androidTestImplementation("com.google.dexmaker:dexmaker-mockito:1.2") diff --git a/app/libs/in-app-purchasing-2.0.76.jar b/app/libs/in-app-purchasing-2.0.76.jar deleted file mode 100644 index cd590eb9b..000000000 Binary files a/app/libs/in-app-purchasing-2.0.76.jar and /dev/null differ diff --git a/app/proguard.pro b/app/proguard.pro index 41cfd20b7..e0cdf6c7f 100644 --- a/app/proguard.pro +++ b/app/proguard.pro @@ -59,11 +59,6 @@ -keep class org.threeten.bp.** { *; } # keep ThreeTen (for time zone processing) -keep class at.bitfire.** { *; } # all DAVdroid code is required -# https://developer.amazon.com/docs/in-app-purchasing/iap-obfuscate-the-code.html#proguard --dontwarn com.amazon.** --keep class com.amazon.** {*;} --keepattributes *Annotation* - # https://github.com/google/google-api-java-client-samples/blob/34c3b43cb15f4ee1b636a0e01521cc81a2451dcd/tasks-android-sample/proguard-google-api-client.txt -keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault -keepclassmembers class * { diff --git a/app/src/amazon/AndroidManifest.xml b/app/src/amazon/AndroidManifest.xml deleted file mode 100644 index 6bd025938..000000000 --- a/app/src/amazon/AndroidManifest.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/amazon/java/org/tasks/analytics/Tracker.java b/app/src/amazon/java/org/tasks/analytics/Tracker.java deleted file mode 100644 index 1202646c8..000000000 --- a/app/src/amazon/java/org/tasks/analytics/Tracker.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.tasks.analytics; - -import android.content.Context; -import com.crashlytics.android.Crashlytics; -import com.google.firebase.analytics.FirebaseAnalytics; -import io.fabric.sdk.android.Fabric; -import javax.inject.Inject; -import org.tasks.injection.ApplicationScope; -import org.tasks.injection.ForApplication; -import org.tasks.preferences.Preferences; -import timber.log.Timber; - -@ApplicationScope -public class Tracker { - - private static boolean enabled; - - @Inject - public Tracker(@ForApplication Context context, Preferences preferences) { - enabled = preferences.isTrackingEnabled(); - if (enabled) { - FirebaseAnalytics analytics = FirebaseAnalytics.getInstance(context); - analytics.setAnalyticsCollectionEnabled(true); - Fabric.with(context, new Crashlytics()); - } - } - - public void reportException(Throwable t) { - Timber.e(t); - if (enabled) { - Crashlytics.logException(t); - } - } -} diff --git a/app/src/amazon/java/org/tasks/billing/BillingClientImpl.java b/app/src/amazon/java/org/tasks/billing/BillingClientImpl.java deleted file mode 100644 index d34b9c0c3..000000000 --- a/app/src/amazon/java/org/tasks/billing/BillingClientImpl.java +++ /dev/null @@ -1,110 +0,0 @@ -package org.tasks.billing; - -import static com.google.common.collect.Iterables.transform; -import static com.google.common.collect.Lists.newArrayList; -import static com.google.common.collect.Lists.transform; -import static com.google.common.collect.Sets.newHashSet; - -import android.app.Activity; -import android.content.Context; -import androidx.annotation.Nullable; -import androidx.lifecycle.LifecycleOwner; -import androidx.lifecycle.MutableLiveData; -import androidx.lifecycle.Observer; -import com.amazon.device.iap.PurchasingListener; -import com.amazon.device.iap.PurchasingService; -import com.amazon.device.iap.model.FulfillmentResult; -import com.amazon.device.iap.model.ProductDataResponse; -import com.amazon.device.iap.model.PurchaseResponse; -import com.amazon.device.iap.model.PurchaseUpdatesResponse; -import com.amazon.device.iap.model.PurchaseUpdatesResponse.RequestStatus; -import com.amazon.device.iap.model.UserDataResponse; -import java.util.List; -import javax.inject.Inject; -import org.tasks.analytics.Tracker; -import org.tasks.injection.ForApplication; -import timber.log.Timber; - -public class BillingClientImpl implements BillingClient, PurchasingListener { - - private final MutableLiveData> skuDetails = new MutableLiveData<>(); - private final Inventory inventory; - - @Inject - public BillingClientImpl(@ForApplication Context context, Inventory inventory, Tracker tracker) { - this.inventory = inventory; - PurchasingService.registerListener(context, this); - } - - @Override - public void observeSkuDetails( - LifecycleOwner owner, - Observer> subscriptionObserver, - Observer> iapObserver) { - skuDetails.observe(owner, subscriptionObserver); - } - - @Override - public void queryPurchases() { - PurchasingService.getPurchaseUpdates(true); - } - - @Override - public void querySkuDetails() { - PurchasingService.getProductData(newHashSet(SkuDetails.SKU_PRO)); - } - - @Override - public void consume(String sku) { - throw new UnsupportedOperationException(); - } - - @Override - public void initiatePurchaseFlow( - Activity activity, String sku, String skuType, @Nullable String oldSku) { - PurchasingService.purchase(sku); - } - - @Override - public void addPurchaseCallback(OnPurchasesUpdated onPurchasesUpdated) { - - } - - @Override - public int getErrorMessage() { - return 0; - } - - @Override - public void onUserDataResponse(UserDataResponse userDataResponse) { - Timber.d("onUserDataResponse(%s)", userDataResponse); - } - - @Override - public void onProductDataResponse(ProductDataResponse productDataResponse) { - Timber.d("onProductDataResponse(%s)", productDataResponse); - if (productDataResponse.getRequestStatus() == ProductDataResponse.RequestStatus.SUCCESSFUL) { - skuDetails.setValue( - newArrayList(transform(productDataResponse.getProductData().values(), SkuDetails::new))); - } - } - - @Override - public void onPurchaseResponse(PurchaseResponse purchaseResponse) { - Timber.d("onPurchaseResponse(%s)", purchaseResponse); - if (purchaseResponse.getRequestStatus() == PurchaseResponse.RequestStatus.SUCCESSFUL) { - inventory.add(new Purchase(purchaseResponse.getReceipt())); - PurchasingService.notifyFulfillment( - purchaseResponse.getReceipt().getReceiptId(), FulfillmentResult.FULFILLED); - } - } - - @Override - public void onPurchaseUpdatesResponse(PurchaseUpdatesResponse purchaseUpdatesResponse) { - Timber.d("onPurchaseUpdatesResponse(%s)", purchaseUpdatesResponse); - if (purchaseUpdatesResponse.getRequestStatus() == RequestStatus.SUCCESSFUL) { - inventory.clear(); - inventory.add(transform(purchaseUpdatesResponse.getReceipts(), Purchase::new)); - } - } -} diff --git a/app/src/amazon/java/org/tasks/billing/Purchase.java b/app/src/amazon/java/org/tasks/billing/Purchase.java deleted file mode 100644 index 5131f4e73..000000000 --- a/app/src/amazon/java/org/tasks/billing/Purchase.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.tasks.billing; - -import com.amazon.device.iap.model.Receipt; -import com.google.gson.GsonBuilder; - -public class Purchase { - - private final Receipt receipt; - - public Purchase(String json) { - this(new GsonBuilder().create().fromJson(json, Receipt.class)); - } - - public Purchase(Receipt receipt) { - this.receipt = receipt; - } - - public String getSku() { - return receipt.getSku(); - } - - public String toJson() { - return new GsonBuilder().create().toJson(receipt); - } - - @Override - public String toString() { - return "Purchase{" + "receipt=" + receipt + '}'; - } - - public boolean isCanceled() { - return false; - } - - public int getSubscriptionPrice() { - return 0; - } - - public boolean isMonthly() { - return false; - } - - public boolean isProSubscription() { - return true; - } -} diff --git a/app/src/amazon/java/org/tasks/billing/SignatureVerifier.java b/app/src/amazon/java/org/tasks/billing/SignatureVerifier.java deleted file mode 100644 index e5b3c2781..000000000 --- a/app/src/amazon/java/org/tasks/billing/SignatureVerifier.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.tasks.billing; - -import javax.inject.Inject; - -public class SignatureVerifier { - @Inject - public SignatureVerifier() {} - - public boolean verifySignature(Purchase purchase) { - return true; - } -} diff --git a/app/src/amazon/java/org/tasks/billing/SkuDetails.java b/app/src/amazon/java/org/tasks/billing/SkuDetails.java deleted file mode 100644 index 5bf2dc447..000000000 --- a/app/src/amazon/java/org/tasks/billing/SkuDetails.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.tasks.billing; - -import com.amazon.device.iap.model.Product; -import com.amazon.device.iap.model.ProductType; - -public class SkuDetails { - - static final String SKU_PRO = "tasks_pro"; - - static final String TYPE_INAPP = ProductType.CONSUMABLE.name(); - static final String TYPE_SUBS = ProductType.SUBSCRIPTION.name(); - - private final Product product; - - public SkuDetails(Product product) { - this.product = product; - } - - public String getSku() { - return product.getSku(); - } - - public String getTitle() { - return product.getTitle(); - } - - public String getPrice() { - return product.getPrice(); - } - - public String getDescription() { - return product.getDescription(); - } - - public String getSkuType() { - return product.getProductType().name(); - } -} diff --git a/app/src/amazon/java/org/tasks/gtasks/PlayServices.java b/app/src/amazon/java/org/tasks/gtasks/PlayServices.java deleted file mode 100644 index 4dc82729e..000000000 --- a/app/src/amazon/java/org/tasks/gtasks/PlayServices.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.tasks.gtasks; - -import android.app.Activity; -import android.content.Context; -import com.todoroo.astrid.activity.MainActivity; -import io.reactivex.disposables.Disposable; -import io.reactivex.disposables.Disposables; -import javax.inject.Inject; - -public class PlayServices { - - @Inject - public PlayServices() {} - - public boolean isPlayServicesAvailable() { - return false; - } - - public boolean refreshAndCheck() { - return false; - } - - public void resolve(Activity activity) {} - - public String getStatus() { - return null; - } - - public Disposable check(MainActivity mainActivity) { - return Disposables.empty(); - } - - public void updateSecurityProvider(Context context) {} -} diff --git a/app/src/amazon/java/org/tasks/injection/LocationModule.java b/app/src/amazon/java/org/tasks/injection/LocationModule.java deleted file mode 100644 index d84908115..000000000 --- a/app/src/amazon/java/org/tasks/injection/LocationModule.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.tasks.injection; - -import android.content.Context; -import dagger.Module; -import dagger.Provides; -import org.tasks.location.MapFragment; -import org.tasks.location.MapboxMapFragment; -import org.tasks.location.MapboxSearchProvider; -import org.tasks.location.PlaceSearchProvider; - -@Module -public class LocationModule { - @Provides - @ActivityScope - public PlaceSearchProvider getPlaceSearchProvider(@ForApplication Context context) { - return new MapboxSearchProvider(context); - } - - @Provides - @ActivityScope - public MapFragment getMapFragment(@ForApplication Context context) { - return new MapboxMapFragment(context); - } -} diff --git a/app/src/amazon/java/org/tasks/location/GeofenceApi.java b/app/src/amazon/java/org/tasks/location/GeofenceApi.java deleted file mode 100644 index df276cad0..000000000 --- a/app/src/amazon/java/org/tasks/location/GeofenceApi.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.tasks.location; - -import java.util.List; -import javax.inject.Inject; -import org.tasks.data.Location; - -@SuppressWarnings("EmptyMethod") -public class GeofenceApi { - - @Inject - public GeofenceApi() {} - - public void register(List activeGeofences) {} - - public void cancel(Location geofence) {} - - public void cancel(List geofences) {} - - public void cancel(long taskId) {} - - public void register(long taskId) {} - - public void registerAll() {} -} diff --git a/app/src/amazon/java/org/tasks/location/GeofenceTransitionsIntentService.java b/app/src/amazon/java/org/tasks/location/GeofenceTransitionsIntentService.java deleted file mode 100644 index 3c177f2a9..000000000 --- a/app/src/amazon/java/org/tasks/location/GeofenceTransitionsIntentService.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.tasks.location; - -import android.app.IntentService; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import androidx.annotation.Nullable; - -public class GeofenceTransitionsIntentService extends IntentService { - - public GeofenceTransitionsIntentService() { - super("GeofenceTransitionsIntentService"); - } - - @Override - protected void onHandleIntent(@Nullable Intent intent) {} - - public static class Broadcast extends BroadcastReceiver { - @Override - public void onReceive(Context context, Intent intent) {} - } -} diff --git a/app/src/amazon/res/values/bools.xml b/app/src/amazon/res/values/bools.xml deleted file mode 100644 index 30b01d340..000000000 --- a/app/src/amazon/res/values/bools.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - false - \ No newline at end of file diff --git a/app/src/amazon/res/values/keys.xml b/app/src/amazon/res/values/keys.xml deleted file mode 100644 index 03d6b74d3..000000000 --- a/app/src/amazon/res/values/keys.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - Google Play services error - amzn://apps/android?p=org.tasks - purchases_amazon - https://www.amazon.com/gp/mas/your-account/myapps/yoursubscriptions/ref=d2_ss_app_sb_myas - amazon-support@tasks.org - \ No newline at end of file