From b0173f685af0d58c5b02994e5f74474d83e0e4f1 Mon Sep 17 00:00:00 2001 From: stom79 Date: Tue, 18 Dec 2018 18:59:46 +0100 Subject: [PATCH 1/2] Test --- .../gouv/etalab/mastodon/helper/Helper.java | 33 +++++++++++++++++++ .../services/LiveNotificationService.java | 20 ++++++++++- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index 5f59eee4a..632085fc8 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -119,12 +119,14 @@ import com.oguzdev.circularfloatingactionmenu.library.SubActionButton; import org.conscrypt.Conscrypt; import java.io.BufferedReader; +import java.io.BufferedWriter; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; +import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -3144,4 +3146,35 @@ public class Helper { public static boolean isTablet(Context context){ return context.getResources().getBoolean(R.bool.isTablet); } + + + public static void appendLog(String text) { + File logFile = new File("sdcard/mastalab.log.file"); + if (!logFile.exists()) + { + try + { + logFile.createNewFile(); + } + catch (IOException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + try + { + //BufferedWriter for performance, true to set append to file flag + BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, true)); + String date = dateToString(new Date()); + buf.append(date + " - " +text); + buf.newLine(); + buf.close(); + } + catch (IOException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/services/LiveNotificationService.java b/app/src/main/java/fr/gouv/etalab/mastodon/services/LiveNotificationService.java index 15d4361e0..369eecfff 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/services/LiveNotificationService.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/services/LiveNotificationService.java @@ -100,9 +100,11 @@ public class LiveNotificationService extends Service implements NetworkStateRece networkStateReceiver.addListener(this); registerReceiver(networkStateReceiver, new IntentFilter(android.net.ConnectivityManager.CONNECTIVITY_ACTION)); startStream(); + Helper.appendLog("---- onCreate -----"); } private void startStream(){ + Helper.appendLog("-> startStream"); SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); backgroundProcess = sharedpreferences.getBoolean(Helper.SET_KEEP_BACKGROUND_PROCESS, true); boolean liveNotifications = sharedpreferences.getBoolean(Helper.SET_LIVE_NOTIFICATIONS, true); @@ -134,6 +136,7 @@ public class LiveNotificationService extends Service implements NetworkStateRece @Override public int onStartCommand(Intent intent, int flags, int startId) { + Helper.appendLog("---- onStartCommand: "); if( intent == null || intent.getBooleanExtra("stop", false) ) { stopSelf(); } @@ -146,6 +149,7 @@ public class LiveNotificationService extends Service implements NetworkStateRece @Override public void onDestroy() { super.onDestroy(); + Helper.appendLog("---- onDestroy: "); networkStateReceiver.removeListener(this); unregisterReceiver(networkStateReceiver); } @@ -161,10 +165,12 @@ public class LiveNotificationService extends Service implements NetworkStateRece if(backgroundProcess){ restart(); } + Helper.appendLog("---- onTaskRemoved: "); super.onTaskRemoved(rootIntent); } private void restart(){ + Helper.appendLog("---- restart:" ); Intent restartServiceIntent = new Intent(LiveNotificationService.this, LiveNotificationService.class); restartServiceIntent.setPackage(getPackageName()); PendingIntent restartServicePendingIntent = PendingIntent.getService(getApplicationContext(), 1, restartServiceIntent, PendingIntent.FLAG_ONE_SHOT); @@ -178,6 +184,7 @@ public class LiveNotificationService extends Service implements NetworkStateRece private void taks(Account account) { if (account != null) { + Helper.appendLog("-> task: " + account.getAcct() + "@" + account.getInstance()); Headers headers = new Headers(); headers.add("Authorization", "Bearer " + account.getToken()); headers.add("Connection", "Keep-Alive"); @@ -192,6 +199,7 @@ public class LiveNotificationService extends Service implements NetworkStateRece webSocketFutures.get(urlKey).close(); } catch (Exception e) { e.printStackTrace(); + Helper.appendLog("-> err closing socket: " + e.getMessage()); } } if( Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT ) { @@ -200,8 +208,10 @@ public class LiveNotificationService extends Service implements NetworkStateRece AsyncHttpClient.getDefaultInstance().getSSLSocketMiddleware().setConnectAllAddresses(true); } catch (KeyManagementException e) { e.printStackTrace(); + Helper.appendLog("-> err1: " + e.getMessage()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); + Helper.appendLog("-> err2: " + e.getMessage()); } } AsyncHttpClient.getDefaultInstance().websocket("wss://" + account.getInstance() + "/api/v1/streaming/?stream=user&access_token=" + account.getToken(), "wss", new AsyncHttpClient.WebSocketConnectCallback() { @@ -210,6 +220,7 @@ public class LiveNotificationService extends Service implements NetworkStateRece webSocketFutures.put(account.getAcct()+"@"+account.getInstance(), webSocket); if (ex != null) { ex.printStackTrace(); + Helper.appendLog("-> err3: " + ex.getMessage()); return; } webSocket.setStringCallback(new WebSocket.StringCallback() { @@ -217,13 +228,14 @@ public class LiveNotificationService extends Service implements NetworkStateRece try { JSONObject eventJson = new JSONObject(s); onRetrieveStreaming(account, eventJson); - } catch (JSONException ignored) {} + } catch (JSONException ignored) {Helper.appendLog("-> err: " + ignored.getMessage());} } }); webSocket.setClosedCallback(new CompletedCallback() { @Override public void onCompleted(Exception ex) { + Helper.appendLog("-> setClosedCallback: " + ex); try { if (ex != null) webSocket.close(); @@ -264,6 +276,7 @@ public class LiveNotificationService extends Service implements NetworkStateRece final SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); try { + Helper.appendLog("--> event : " + response.get("event").toString() + " - " + account.getAcct()+"@"+account.getInstance()); switch (response.get("event").toString()) { case "notification": event = Helper.EventStreaming.NOTIFICATION; @@ -401,12 +414,15 @@ public class LiveNotificationService extends Service implements NetworkStateRece dataId = response.getString("id"); b.putString("dataId", dataId); } catch (JSONException ignored) { + Helper.appendLog("-> delete: " + ignored.getMessage()); } break; } } catch (Exception e) { e.printStackTrace(); + Helper.appendLog("-> err5: " + e.getMessage()); } + Helper.appendLog("-> canSendBroadCast: " + canSendBroadCast + " - " + account.getAcct() + "@" + account.getInstance()); if( canSendBroadCast) { if (account != null) b.putString("userIdService", account.getId()); @@ -419,11 +435,13 @@ public class LiveNotificationService extends Service implements NetworkStateRece @Override public void networkAvailable() { + Helper.appendLog("-> networkAvailable: "); startStream(); } @Override public void networkUnavailable() { + Helper.appendLog("-> networkUnavailable: " + thread); if( thread != null && thread.isAlive()) thread.interrupt(); } From b704c582df5baf15254d4115229e6287800c45bb Mon Sep 17 00:00:00 2001 From: stom79 Date: Wed, 19 Dec 2018 08:40:37 +0100 Subject: [PATCH 2/2] Split streaming api --- .../gouv/etalab/mastodon/helper/Helper.java | 33 ------------------- .../services/LiveNotificationService.java | 24 ++------------ 2 files changed, 3 insertions(+), 54 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index 632085fc8..5f59eee4a 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -119,14 +119,12 @@ import com.oguzdev.circularfloatingactionmenu.library.SubActionButton; import org.conscrypt.Conscrypt; import java.io.BufferedReader; -import java.io.BufferedWriter; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; -import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -3146,35 +3144,4 @@ public class Helper { public static boolean isTablet(Context context){ return context.getResources().getBoolean(R.bool.isTablet); } - - - public static void appendLog(String text) { - File logFile = new File("sdcard/mastalab.log.file"); - if (!logFile.exists()) - { - try - { - logFile.createNewFile(); - } - catch (IOException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - try - { - //BufferedWriter for performance, true to set append to file flag - BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, true)); - String date = dateToString(new Date()); - buf.append(date + " - " +text); - buf.newLine(); - buf.close(); - } - catch (IOException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/services/LiveNotificationService.java b/app/src/main/java/fr/gouv/etalab/mastodon/services/LiveNotificationService.java index 369eecfff..a2a1908a3 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/services/LiveNotificationService.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/services/LiveNotificationService.java @@ -100,11 +100,9 @@ public class LiveNotificationService extends Service implements NetworkStateRece networkStateReceiver.addListener(this); registerReceiver(networkStateReceiver, new IntentFilter(android.net.ConnectivityManager.CONNECTIVITY_ACTION)); startStream(); - Helper.appendLog("---- onCreate -----"); } private void startStream(){ - Helper.appendLog("-> startStream"); SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); backgroundProcess = sharedpreferences.getBoolean(Helper.SET_KEEP_BACKGROUND_PROCESS, true); boolean liveNotifications = sharedpreferences.getBoolean(Helper.SET_LIVE_NOTIFICATIONS, true); @@ -136,7 +134,6 @@ public class LiveNotificationService extends Service implements NetworkStateRece @Override public int onStartCommand(Intent intent, int flags, int startId) { - Helper.appendLog("---- onStartCommand: "); if( intent == null || intent.getBooleanExtra("stop", false) ) { stopSelf(); } @@ -149,7 +146,6 @@ public class LiveNotificationService extends Service implements NetworkStateRece @Override public void onDestroy() { super.onDestroy(); - Helper.appendLog("---- onDestroy: "); networkStateReceiver.removeListener(this); unregisterReceiver(networkStateReceiver); } @@ -165,12 +161,10 @@ public class LiveNotificationService extends Service implements NetworkStateRece if(backgroundProcess){ restart(); } - Helper.appendLog("---- onTaskRemoved: "); super.onTaskRemoved(rootIntent); } private void restart(){ - Helper.appendLog("---- restart:" ); Intent restartServiceIntent = new Intent(LiveNotificationService.this, LiveNotificationService.class); restartServiceIntent.setPackage(getPackageName()); PendingIntent restartServicePendingIntent = PendingIntent.getService(getApplicationContext(), 1, restartServiceIntent, PendingIntent.FLAG_ONE_SHOT); @@ -184,7 +178,6 @@ public class LiveNotificationService extends Service implements NetworkStateRece private void taks(Account account) { if (account != null) { - Helper.appendLog("-> task: " + account.getAcct() + "@" + account.getInstance()); Headers headers = new Headers(); headers.add("Authorization", "Bearer " + account.getToken()); headers.add("Connection", "Keep-Alive"); @@ -199,7 +192,6 @@ public class LiveNotificationService extends Service implements NetworkStateRece webSocketFutures.get(urlKey).close(); } catch (Exception e) { e.printStackTrace(); - Helper.appendLog("-> err closing socket: " + e.getMessage()); } } if( Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT ) { @@ -208,10 +200,8 @@ public class LiveNotificationService extends Service implements NetworkStateRece AsyncHttpClient.getDefaultInstance().getSSLSocketMiddleware().setConnectAllAddresses(true); } catch (KeyManagementException e) { e.printStackTrace(); - Helper.appendLog("-> err1: " + e.getMessage()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); - Helper.appendLog("-> err2: " + e.getMessage()); } } AsyncHttpClient.getDefaultInstance().websocket("wss://" + account.getInstance() + "/api/v1/streaming/?stream=user&access_token=" + account.getToken(), "wss", new AsyncHttpClient.WebSocketConnectCallback() { @@ -220,7 +210,7 @@ public class LiveNotificationService extends Service implements NetworkStateRece webSocketFutures.put(account.getAcct()+"@"+account.getInstance(), webSocket); if (ex != null) { ex.printStackTrace(); - Helper.appendLog("-> err3: " + ex.getMessage()); + startStream(); return; } webSocket.setStringCallback(new WebSocket.StringCallback() { @@ -228,14 +218,13 @@ public class LiveNotificationService extends Service implements NetworkStateRece try { JSONObject eventJson = new JSONObject(s); onRetrieveStreaming(account, eventJson); - } catch (JSONException ignored) {Helper.appendLog("-> err: " + ignored.getMessage());} + } catch (JSONException ignored) {} } }); webSocket.setClosedCallback(new CompletedCallback() { @Override public void onCompleted(Exception ex) { - Helper.appendLog("-> setClosedCallback: " + ex); try { if (ex != null) webSocket.close(); @@ -276,7 +265,6 @@ public class LiveNotificationService extends Service implements NetworkStateRece final SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); try { - Helper.appendLog("--> event : " + response.get("event").toString() + " - " + account.getAcct()+"@"+account.getInstance()); switch (response.get("event").toString()) { case "notification": event = Helper.EventStreaming.NOTIFICATION; @@ -413,16 +401,12 @@ public class LiveNotificationService extends Service implements NetworkStateRece try { dataId = response.getString("id"); b.putString("dataId", dataId); - } catch (JSONException ignored) { - Helper.appendLog("-> delete: " + ignored.getMessage()); - } + } catch (JSONException ignored) { } break; } } catch (Exception e) { e.printStackTrace(); - Helper.appendLog("-> err5: " + e.getMessage()); } - Helper.appendLog("-> canSendBroadCast: " + canSendBroadCast + " - " + account.getAcct() + "@" + account.getInstance()); if( canSendBroadCast) { if (account != null) b.putString("userIdService", account.getId()); @@ -435,13 +419,11 @@ public class LiveNotificationService extends Service implements NetworkStateRece @Override public void networkAvailable() { - Helper.appendLog("-> networkAvailable: "); startStream(); } @Override public void networkUnavailable() { - Helper.appendLog("-> networkUnavailable: " + thread); if( thread != null && thread.isAlive()) thread.interrupt(); }