diff --git a/app/src/main/java/com/github/gotify/messages/MessagesActivity.java b/app/src/main/java/com/github/gotify/messages/MessagesActivity.java index 0b680a1b..07ea9a51 100644 --- a/app/src/main/java/com/github/gotify/messages/MessagesActivity.java +++ b/app/src/main/java/com/github/gotify/messages/MessagesActivity.java @@ -43,8 +43,10 @@ import com.github.gotify.Utils; import com.github.gotify.api.Api; import com.github.gotify.api.ApiException; +import com.github.gotify.api.Callback; import com.github.gotify.api.ClientFactory; import com.github.gotify.client.ApiClient; +import com.github.gotify.client.api.ApplicationApi; import com.github.gotify.client.api.ClientApi; import com.github.gotify.client.api.MessageApi; import com.github.gotify.client.model.Application; @@ -171,6 +173,7 @@ public void onDrawerClosed(View drawerView) { new SelectApplicationAndUpdateMessages(true) .execute(selectAppIdOnDrawerClose); selectAppIdOnDrawerClose = null; + invalidateOptionsMenu(); } } }); @@ -192,6 +195,10 @@ public void onDrawerClosed(View drawerView) { } public void onRefreshAll(View view) { + refreshAll(); + } + + public void refreshAll() { try { picassoHandler.evict(); } catch (IOException e) { @@ -560,6 +567,7 @@ protected void onPostExecute(Boolean update) { @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.messages_action, menu); + menu.findItem(R.id.action_delete_app).setVisible(appId != MessageState.ALL_MESSAGES); return super.onCreateOptionsMenu(menu); } @@ -568,9 +576,32 @@ public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.action_delete_all) { new DeleteMessages().execute(appId); } + if (item.getItemId() == R.id.action_delete_app) { + android.app.AlertDialog.Builder alert = new android.app.AlertDialog.Builder(this); + alert.setTitle(R.string.delete_app); + alert.setMessage(R.string.ack); + alert.setPositiveButton(R.string.yes, (dialog, which) -> deleteApp(appId)); + alert.setNegativeButton(R.string.no, (dialog, which) -> dialog.dismiss()); + alert.show(); + } return super.onContextItemSelected(item); } + private void deleteApp(Long appId) { + ApiClient client = + ClientFactory.clientToken(settings.url(), settings.sslSettings(), settings.token()); + + client.createService(ApplicationApi.class) + .deleteApp(appId) + .enqueue( + Callback.callInUI( + this, + (ignored) -> refreshAll(), + (e) -> + Utils.showSnackBar( + this, getString(R.string.error_delete_app)))); + } + private class LoadMore extends AsyncTask> { @Override diff --git a/app/src/main/res/menu/messages_action.xml b/app/src/main/res/menu/messages_action.xml index 3aa89356..5382c587 100644 --- a/app/src/main/res/menu/messages_action.xml +++ b/app/src/main/res/menu/messages_action.xml @@ -3,4 +3,8 @@ android:title="@string/delete_all" android:id="@+id/action_delete_all" android:orderInCategory="100"/> + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 39c28489..5b07d3d9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -25,6 +25,8 @@ Connection closed, trying to establish a new one. Received %d messages while being disconnected Delete all + Delete this application + Could not delete this app Delete logs Copy logs Logs copied @@ -48,6 +50,8 @@ Refresh all Do you really want to logout? Yes + No + Are you sure? Missed messages New Messages Listening to %s