From b2a8c9c45fa5040a7ab595644661f068f73d77b8 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Wed, 26 Jul 2017 11:39:02 -0400 Subject: [PATCH] Remove PebbleReceiver --- uhabits-android/build.gradle | 1 - .../uhabits/receivers/PebbleReceiverTest.java | 177 ------------------ uhabits-android/src/main/AndroidManifest.xml | 7 - .../uhabits/receivers/PebbleReceiver.java | 172 ----------------- 4 files changed, 357 deletions(-) delete mode 100644 uhabits-android/src/androidTest/java/org/isoron/uhabits/receivers/PebbleReceiverTest.java delete mode 100644 uhabits-android/src/main/java/org/isoron/uhabits/receivers/PebbleReceiver.java diff --git a/uhabits-android/build.gradle b/uhabits-android/build.gradle index b780c2918..c08a03ed7 100644 --- a/uhabits-android/build.gradle +++ b/uhabits-android/build.gradle @@ -98,7 +98,6 @@ dependencies { implementation "com.android.support:design:$SUPPORT_LIBRARY_VERSION" implementation "com.android.support:preference-v14:$SUPPORT_LIBRARY_VERSION" implementation "com.android.support:support-v4:$SUPPORT_LIBRARY_VERSION" - implementation "com.getpebble:pebblekit:3.0.0" implementation "com.github.paolorotolo:appintro:3.4.0" implementation "com.google.dagger:dagger:$DAGGER_VERSION" implementation "com.jakewharton:butterknife:8.6.1-SNAPSHOT" diff --git a/uhabits-android/src/androidTest/java/org/isoron/uhabits/receivers/PebbleReceiverTest.java b/uhabits-android/src/androidTest/java/org/isoron/uhabits/receivers/PebbleReceiverTest.java deleted file mode 100644 index 9eebeb7e3..000000000 --- a/uhabits-android/src/androidTest/java/org/isoron/uhabits/receivers/PebbleReceiverTest.java +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright (C) 2016 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.receivers; - -import android.content.*; -import android.support.annotation.*; -import android.support.test.runner.*; -import android.test.suitebuilder.annotation.*; - -import com.getpebble.android.kit.*; -import com.getpebble.android.kit.util.*; - -import org.isoron.uhabits.*; -import org.isoron.uhabits.core.models.*; -import org.json.*; -import org.junit.*; -import org.junit.runner.*; - -import static android.os.Build.VERSION.SDK_INT; -import static android.os.Build.VERSION_CODES.KITKAT; -import static com.getpebble.android.kit.Constants.MSG_DATA; -import static org.hamcrest.MatcherAssert.*; -import static org.hamcrest.core.IsEqual.*; - -@RunWith(AndroidJUnit4.class) -@MediumTest -public class PebbleReceiverTest extends BaseAndroidTest -{ - private Habit habit1; - - private Habit habit2; - - @Override - public void setUp() - { - super.setUp(); - - fixtures.purgeHabits(habitList); - - habit1 = fixtures.createEmptyHabit(); - habit1.setName("Exercise"); - - habit2 = fixtures.createEmptyHabit(); - habit2.setName("Meditate"); - } - - @Test - public void testCount() throws Exception - { - if(SDK_INT <= KITKAT) return; - - onPebbleReceived((dict) -> { - assertThat(dict.getString(0), equalTo("COUNT")); - assertThat(dict.getInteger(1), equalTo(2L)); - }); - - PebbleDictionary dict = buildCountRequest(); - sendFromPebbleToAndroid(dict); - awaitLatch(); - } - - @Test - public void testFetch() throws Exception - { - if(SDK_INT <= KITKAT) return; - - onPebbleReceived((dict) -> { - assertThat(dict.getString(0), equalTo("HABIT")); - assertThat(dict.getInteger(1), equalTo(habit2.getId())); - assertThat(dict.getString(2), equalTo(habit2.getName())); - assertThat(dict.getInteger(3), equalTo(0L)); - }); - - PebbleDictionary dict = buildFetchRequest(1); - sendFromPebbleToAndroid(dict); - awaitLatch(); - } - -// @Test -// public void testToggle() throws Exception -// { -// int v = habit1.getCheckmarks().getTodayValue(); -// assertThat(v, equalTo(Checkmark.UNCHECKED)); -// -// onPebbleReceived((dict) -> { -// assertThat(dict.getString(0), equalTo("OK")); -// int value = habit1.getCheckmarks().getTodayValue(); -// assertThat(value, equalTo(200)); //Checkmark.CHECKED_EXPLICITLY)); -// }); -// -// PebbleDictionary dict = buildToggleRequest(habit1.getId()); -// sendFromPebbleToAndroid(dict); -// awaitLatch(); -// } - - @NonNull - protected PebbleDictionary buildCountRequest() - { - PebbleDictionary dict = new PebbleDictionary(); - dict.addString(0, "COUNT"); - return dict; - } - - @NonNull - protected PebbleDictionary buildFetchRequest(int position) - { - PebbleDictionary dict = new PebbleDictionary(); - dict.addString(0, "FETCH"); - dict.addInt32(1, position); - return dict; - } - - protected void onPebbleReceived(PebbleProcessor processor) - { - BroadcastReceiver pebbleReceiver = new BroadcastReceiver() - { - @Override - public void onReceive(Context context, Intent intent) - { - try - { - String jsonData = intent.getStringExtra(MSG_DATA); - PebbleDictionary dict = PebbleDictionary.fromJson(jsonData); - processor.process(dict); - latch.countDown(); - targetContext.unregisterReceiver(this); - } - catch (JSONException e) - { - throw new RuntimeException(e); - } - } - }; - - IntentFilter filter = new IntentFilter(Constants.INTENT_APP_SEND); - targetContext.registerReceiver(pebbleReceiver, filter); - } - - protected void sendFromPebbleToAndroid(PebbleDictionary dict) - { - Intent intent = new Intent(Constants.INTENT_APP_RECEIVE); - intent.putExtra(Constants.APP_UUID, PebbleReceiver.WATCHAPP_UUID); - intent.putExtra(Constants.TRANSACTION_ID, 0); - intent.putExtra(Constants.MSG_DATA, dict.toJsonString()); - targetContext.sendBroadcast(intent); - } - - private PebbleDictionary buildToggleRequest(long habitId) - { - PebbleDictionary dict = new PebbleDictionary(); - dict.addString(0, "TOGGLE"); - dict.addInt32(1, (int) habitId); - return dict; - } - - interface PebbleProcessor - { - void process(PebbleDictionary dict); - } -} diff --git a/uhabits-android/src/main/AndroidManifest.xml b/uhabits-android/src/main/AndroidManifest.xml index 9cd1a37a6..b7cbb4520 100644 --- a/uhabits-android/src/main/AndroidManifest.xml +++ b/uhabits-android/src/main/AndroidManifest.xml @@ -182,13 +182,6 @@ - - - - - - - - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.receivers; - -import android.content.*; -import android.support.annotation.*; -import android.util.*; - -import com.getpebble.android.kit.*; -import com.getpebble.android.kit.PebbleKit.*; -import com.getpebble.android.kit.util.*; - -import org.isoron.uhabits.*; -import org.isoron.uhabits.core.commands.*; -import org.isoron.uhabits.core.models.*; -import org.isoron.uhabits.core.preferences.*; -import org.isoron.uhabits.core.tasks.*; -import org.isoron.uhabits.core.utils.*; -import org.isoron.uhabits.sync.*; - -import java.util.*; - -public class PebbleReceiver extends PebbleDataReceiver -{ - public static final UUID WATCHAPP_UUID = - UUID.fromString("82629d99-8ea6-4631-a022-9ca77a12a058"); - - @NonNull - private Context context; - - private HabitList habitList; - - private CommandRunner commandRunner; - - private TaskRunner taskRunner; - - private HabitList filteredHabits; - - private Preferences prefs; - - public PebbleReceiver() - { - super(WATCHAPP_UUID); - } - - @Override - public void receiveData(@Nullable Context context, - int transactionId, - @Nullable PebbleDictionary data) - { - if (context == null) throw new RuntimeException("context is null"); - if (data == null) throw new RuntimeException("data is null"); - - this.context = context; - - HabitsApplication app = - (HabitsApplication) context.getApplicationContext(); - - HabitsApplicationComponent component = app.getComponent(); - commandRunner = component.getCommandRunner(); - taskRunner = component.getTaskRunner(); - habitList = component.getHabitList(); - prefs = component.getPreferences(); - - if (prefs.isSyncEnabled()) - context.startService(new Intent(context, SyncService.class)); - - HabitMatcher build = new HabitMatcherBuilder() - .setArchivedAllowed(false) - .setCompletedAllowed(false) - .build(); - - filteredHabits = habitList.getFiltered(build); - - PebbleKit.sendAckToPebble(context, transactionId); - Log.d("PebbleReceiver", "<-- " + data.getString(0)); - - taskRunner.execute(() -> { - switch (data.getString(0)) - { - case "COUNT": - sendCount(); - break; - - case "FETCH": - processFetch(data); - break; - - case "TOGGLE": - processToggle(data); - break; - } - }); - } - - private void processFetch(@NonNull PebbleDictionary dict) - { - Long position = dict.getInteger(1); - if (position == null) return; - if (position < 0 || position >= filteredHabits.size()) return; - - Habit habit = filteredHabits.getByPosition(position.intValue()); - sendHabit(habit); - } - - private void processToggle(@NonNull PebbleDictionary dict) - { - Long habitId = dict.getInteger(1); - if (habitId == null) return; - - Habit habit = habitList.getById(habitId); - if (habit == null) return; - - Timestamp today = DateUtils.getToday(); - commandRunner.execute( - new ToggleRepetitionCommand(habitList, habit, today), habitId); - - sendOK(); - } - - private void sendCount() - { - PebbleDictionary dict = new PebbleDictionary(); - dict.addString(0, "COUNT"); - dict.addInt32(1, filteredHabits.size()); - sendDict(dict); - - Log.d("PebbleReceiver", - String.format("--> COUNT %d", filteredHabits.size())); - } - - private void sendDict(@NonNull PebbleDictionary dict) - { - PebbleKit.sendDataToPebble(context, PebbleReceiver.WATCHAPP_UUID, dict); - } - - private void sendHabit(@NonNull Habit habit) - { - if (habit.getId() == null) return; - - PebbleDictionary response = new PebbleDictionary(); - response.addString(0, "HABIT"); - response.addInt32(1, habit.getId().intValue()); - response.addString(2, habit.getName()); - response.addInt32(3, habit.getCheckmarks().getTodayValue()); - sendDict(response); - } - - private void sendOK() - { - PebbleDictionary dict = new PebbleDictionary(); - dict.addString(0, "OK"); - sendDict(dict); - } -}