diff --git a/app/build.gradle b/app/build.gradle index 58c3c6f4..4a31b20d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -36,9 +36,6 @@ android { ext.supportLibraryVersion = '26.1.0' dependencies { - androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { - exclude group: 'com.android.support', module: 'support-annotations' - }) compile('com.mikepenz:materialdrawer:5.9.5@aar') { transitive = true } @@ -59,15 +56,14 @@ dependencies { compile "com.mikepenz:google-material-typeface:3.0.1.0.original@aar" compile "com.theartofdev.edmodo:android-image-cropper:2.5.1" compile "org.jsoup:jsoup:1.10.3" - compile "org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.1" - compile("org.eclipse.paho:org.eclipse.paho.android.service:1.1.1") { - exclude module: "support-v4" - } - testCompile "junit:junit:4.12" + //room compile "android.arch.persistence.room:runtime:1.0.0-beta2" annotationProcessor 'android.arch.persistence.room:compiler:1.0.0-beta2' - googleCompile 'com.google.firebase:firebase-crash:11.0.4' -} -apply plugin: 'com.google.gms.google-services' \ No newline at end of file + testCompile "junit:junit:4.12" + androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + exclude group: 'com.android.support', module: 'support-annotations' + }) + +} \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json deleted file mode 100644 index bfd19f88..00000000 --- a/app/google-services.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "project_info": { - "project_number": "268851337880", - "firebase_url": "https://tusky-62772.firebaseio.com", - "project_id": "tusky-62772", - "storage_bucket": "tusky-62772.appspot.com" - }, - "client": [ - { - "client_info": { - "mobilesdk_app_id": "1:268851337880:android:fc4111b1d145a00e", - "android_client_info": { - "package_name": "com.keylesspalace.tusky" - } - }, - "oauth_client": [ - { - "client_id": "268851337880-eie2ssto2d21bfihn9d1qupcrke8oebf.apps.googleusercontent.com", - "client_type": 1, - "android_info": { - "package_name": "com.keylesspalace.tusky", - "certificate_hash": "18d196307d6e928e99c2e0bb9818c01c38aff2f9" - } - }, - { - "client_id": "268851337880-n19d05m282nirs1fc9kdd5n4of6je4fk.apps.googleusercontent.com", - "client_type": 3 - } - ], - "api_key": [ - { - "current_key": "AIzaSyCbJtSjuk4I3Jy8PdUaO3TaQOXubcOUElo" - } - ], - "services": { - "analytics_service": { - "status": 1 - }, - "appinvite_service": { - "status": 2, - "other_platform_oauth_client": [ - { - "client_id": "268851337880-n19d05m282nirs1fc9kdd5n4of6je4fk.apps.googleusercontent.com", - "client_type": 3 - } - ] - }, - "ads_service": { - "status": 2 - } - } - } - ], - "configuration_version": "1" -} \ No newline at end of file diff --git a/app/src/google/AndroidManifest.xml b/app/src/google/AndroidManifest.xml deleted file mode 100644 index c41b8dd6..00000000 --- a/app/src/google/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - diff --git a/app/src/main/java/com/keylesspalace/tusky/util/PushNotificationClient.java b/app/src/main/java/com/keylesspalace/tusky/util/PushNotificationClient.java deleted file mode 100644 index da3eddde..00000000 --- a/app/src/main/java/com/keylesspalace/tusky/util/PushNotificationClient.java +++ /dev/null @@ -1,257 +0,0 @@ -package com.keylesspalace.tusky.util; - -import android.app.NotificationManager; -import android.content.Context; -import android.support.annotation.NonNull; -import android.support.v4.util.ArraySet; -import android.text.Spanned; -import android.util.Log; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.keylesspalace.tusky.R; -import com.keylesspalace.tusky.entity.Notification; -import com.keylesspalace.tusky.json.SpannedTypeAdapter; -import com.keylesspalace.tusky.json.StringWithEmoji; -import com.keylesspalace.tusky.json.StringWithEmojiTypeAdapter; - -import org.eclipse.paho.android.service.MqttAndroidClient; -import org.eclipse.paho.client.mqttv3.DisconnectedBufferOptions; -import org.eclipse.paho.client.mqttv3.IMqttActionListener; -import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; -import org.eclipse.paho.client.mqttv3.IMqttToken; -import org.eclipse.paho.client.mqttv3.MqttCallbackExtended; -import org.eclipse.paho.client.mqttv3.MqttClient; -import org.eclipse.paho.client.mqttv3.MqttConnectOptions; -import org.eclipse.paho.client.mqttv3.MqttException; -import org.eclipse.paho.client.mqttv3.MqttMessage; - -import java.io.InputStream; -import java.util.ArrayDeque; - -import static android.content.Context.NOTIFICATION_SERVICE; - -public class PushNotificationClient { - private static final String TAG = "PushNotificationClient"; - private static final int NOTIFY_ID = 666; - - private static class QueuedAction { - enum Type { - SUBSCRIBE, - UNSUBSCRIBE, - DISCONNECT, - } - - Type type; - String topic; - - QueuedAction(Type type, String topic) { - this.type = type; - this.topic = topic; - } - } - - private MqttAndroidClient mqttAndroidClient; - private ArrayDeque queuedActions; - private ArraySet subscribedTopics; - - public PushNotificationClient(final @NonNull Context applicationContext, - @NonNull String serverUri) { - queuedActions = new ArrayDeque<>(); - subscribedTopics = new ArraySet<>(); - - // Create the MQTT client. - String clientId = MqttClient.generateClientId(); - mqttAndroidClient = new MqttAndroidClient(applicationContext, serverUri, clientId); - mqttAndroidClient.setCallback(new MqttCallbackExtended() { - @Override - public void connectComplete(boolean reconnect, String serverURI) { - if (reconnect) { - flushQueuedActions(); - for (String topic : subscribedTopics) { - subscribeToTopic(topic); - } - } - } - - @Override - public void connectionLost(Throwable cause) { - onConnectionLost(); - } - - @Override - public void messageArrived(String topic, MqttMessage message) throws Exception { - onMessageReceived(applicationContext, new String(message.getPayload())); - } - - @Override - public void deliveryComplete(IMqttDeliveryToken token) { - // This client is read-only, so this is unused. - } - }); - } - - private void queueAction(QueuedAction.Type type, String topic) { - // Search queue for duplicates and if one is found, return before it's added to the queue. - for (QueuedAction action : queuedActions) { - if (action.type == type) { - switch (type) { - case SUBSCRIBE: - case UNSUBSCRIBE: - if (!action.topic.equals(topic)) { - return; - } - break; - case DISCONNECT: - return; - } - } - } - // Add the new unique action. - queuedActions.add(new QueuedAction(type, topic)); - } - - private void flushQueuedActions() { - while (!queuedActions.isEmpty()) { - QueuedAction action = queuedActions.pop(); - switch (action.type) { - case SUBSCRIBE: subscribeToTopic(action.topic); break; - case UNSUBSCRIBE: unsubscribeToTopic(action.topic); break; - case DISCONNECT: disconnect(); break; - } - } - } - - /** Connect to the MQTT broker. */ - public void connect(Context context) { - MqttConnectOptions options = new MqttConnectOptions(); - options.setAutomaticReconnect(true); - options.setCleanSession(false); - try { - String password = context.getString(R.string.tusky_api_keystore_password); - InputStream keystore = context.getResources().openRawResource(R.raw.keystore_tusky_api); - try { - options.setSocketFactory(mqttAndroidClient.getSSLSocketFactory(keystore, password)); - } finally { - IOUtils.closeQuietly(keystore); - } - mqttAndroidClient.connect(options).setActionCallback(new IMqttActionListener() { - @Override - public void onSuccess(IMqttToken asyncActionToken) { - DisconnectedBufferOptions bufferOptions = new DisconnectedBufferOptions(); - bufferOptions.setBufferEnabled(true); - bufferOptions.setBufferSize(100); - bufferOptions.setPersistBuffer(false); - bufferOptions.setDeleteOldestMessages(false); - mqttAndroidClient.setBufferOpts(bufferOptions); - onConnectionSuccess(); - flushQueuedActions(); - } - - @Override - public void onFailure(IMqttToken asyncActionToken, Throwable exception) { - Log.e(TAG, "An exception occurred while connecting. " + exception.getMessage() - + " " + exception.getCause()); - onConnectionFailure(); - } - }); - } catch (MqttException e) { - Log.e(TAG, "An exception occurred while connecpting. " + e.getMessage()); - onConnectionFailure(); - } - } - - private void onConnectionSuccess() { - Log.v(TAG, "The connection succeeded."); - } - - private void onConnectionFailure() { - Log.v(TAG, "The connection failed."); - } - - private void onConnectionLost() { - Log.v(TAG, "The connection was lost."); - } - - /** Disconnect from the MQTT broker. */ - public void disconnect() { - if (!mqttAndroidClient.isConnected()) { - queueAction(QueuedAction.Type.DISCONNECT, null); - return; - } - try { - mqttAndroidClient.disconnect(); - } catch (MqttException ex) { - Log.e(TAG, "An exception occurred while disconnecting."); - onDisconnectFailed(); - } - } - - private void onDisconnectFailed() { - Log.v(TAG, "Failed while disconnecting from the broker."); - } - - /** Subscribe to the push notification topic. */ - public void subscribeToTopic(final String topic) { - if (!mqttAndroidClient.isConnected()) { - queueAction(QueuedAction.Type.SUBSCRIBE, topic); - return; - } - if (subscribedTopics.contains(topic)) { - return; - } - try { - mqttAndroidClient.subscribe(topic, 0, null, new IMqttActionListener() { - @Override - public void onSuccess(IMqttToken asyncActionToken) { - subscribedTopics.add(topic); - onConnectionSuccess(); - } - - @Override - public void onFailure(IMqttToken asyncActionToken, Throwable exception) { - Log.e(TAG, "An exception occurred while subscribing." + exception.getMessage()); - onConnectionFailure(); - } - }); - } catch (MqttException e) { - Log.e(TAG, "An exception occurred while subscribing." + e.getMessage()); - onConnectionFailure(); - } - } - - /** Unsubscribe from the push notification topic. */ - public void unsubscribeToTopic(String topic) { - if (!mqttAndroidClient.isConnected()) { - queueAction(QueuedAction.Type.UNSUBSCRIBE, topic); - return; - } - try { - mqttAndroidClient.unsubscribe(topic); - subscribedTopics.remove(topic); - } catch (MqttException e) { - Log.e(TAG, "An exception occurred while unsubscribing." + e.getMessage()); - onConnectionFailure(); - } - } - - private void onMessageReceived(final Context context, String message) { - Log.v(TAG, "Notification received: " + message); - - Gson gson = new GsonBuilder() - .registerTypeAdapter(Spanned.class, new SpannedTypeAdapter()) - .registerTypeAdapter(StringWithEmoji.class, new StringWithEmojiTypeAdapter()) - .create(); - Notification notification = gson.fromJson(message, Notification.class); - - NotificationMaker.make(context, NOTIFY_ID, notification); - } - - public void clearNotifications(Context context) { - ((NotificationManager) (context.getSystemService(NOTIFICATION_SERVICE))).cancel(NOTIFY_ID); - } - - public String getDeviceToken() { - return mqttAndroidClient.getClientId(); - } -} diff --git a/build.gradle b/build.gradle index a569e888..24700cb0 100644 --- a/build.gradle +++ b/build.gradle @@ -6,10 +6,6 @@ buildscript { } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' - - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files - classpath 'com.google.gms:google-services:3.1.0' } }