diff --git a/app/src/main/assets/changelogs/357.txt b/app/src/main/assets/changelogs/357.txt new file mode 100644 index 000000000..d8df46a2e --- /dev/null +++ b/app/src/main/assets/changelogs/357.txt @@ -0,0 +1,3 @@ +Changed: +- One logout entry in menu (it will removed the account from the app) +- Improve memory management diff --git a/app/src/main/java/app/fedilab/android/activities/MutedInstanceActivity.java b/app/src/main/java/app/fedilab/android/activities/MutedInstanceActivity.java index 99b24e1ae..72be71f04 100644 --- a/app/src/main/java/app/fedilab/android/activities/MutedInstanceActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/MutedInstanceActivity.java @@ -19,7 +19,6 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; -import android.database.sqlite.SQLiteDatabase; import android.graphics.drawable.ColorDrawable; import android.os.AsyncTask; import android.os.Build; @@ -60,14 +59,11 @@ import app.fedilab.android.asynctasks.PostActionAsyncTask; import app.fedilab.android.asynctasks.RetrieveDomainsAsyncTask; import app.fedilab.android.client.API; import app.fedilab.android.client.APIResponse; -import app.fedilab.android.client.Entities.Account; import app.fedilab.android.client.Entities.Error; import app.fedilab.android.drawers.DomainsListAdapter; import app.fedilab.android.helper.Helper; import app.fedilab.android.interfaces.OnPostActionInterface; import app.fedilab.android.interfaces.OnRetrieveDomainsInterface; -import app.fedilab.android.sqlite.AccountDAO; -import app.fedilab.android.sqlite.Sqlite; import es.dmoral.toasty.Toasty; @@ -159,11 +155,7 @@ public class MutedInstanceActivity extends BaseActivity implements OnRetrieveDom alertDialog.show(); break; case R.id.action_export_instances: - SQLiteDatabase db = Sqlite.getInstance(MutedInstanceActivity.this, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); - String instance = sharedpreferences.getString(Helper.PREF_INSTANCE, Helper.getLiveInstance(MutedInstanceActivity.this)); - String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); - Account account = new AccountDAO(MutedInstanceActivity.this, db).getUniqAccount(userId, instance); - Helper.exportInstanceBlock(MutedInstanceActivity.this, account.getAcct() + "_" + account.getInstance()); + Helper.exportInstanceBlock(MutedInstanceActivity.this); break; case R.id.action_import_instances: if (ContextCompat.checkSelfPermission(MutedInstanceActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != diff --git a/app/src/main/java/app/fedilab/android/activities/PeertubeActivity.java b/app/src/main/java/app/fedilab/android/activities/PeertubeActivity.java index 3857aec32..271b01193 100644 --- a/app/src/main/java/app/fedilab/android/activities/PeertubeActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/PeertubeActivity.java @@ -646,7 +646,7 @@ public class PeertubeActivity extends BaseActivity implements OnRetrievePeertube if (share_details) { extra_text = "@" + peertube.getAccount().getAcct(); extra_text += "\r\n\r\n" + peertube.getName(); - extra_text += "\n\n" + Helper.shortnameToUnicode(":link:", true) + " " + url + "\r\n-\n"; + extra_text += "\n\n" + Helper.shortnameToUnicode(":link:") + " " + url + "\r\n-\n"; final String contentToot; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) contentToot = Html.fromHtml(peertube.getDescription(), Html.FROM_HTML_MODE_LEGACY).toString(); diff --git a/app/src/main/java/app/fedilab/android/activities/ShowAccountActivity.java b/app/src/main/java/app/fedilab/android/activities/ShowAccountActivity.java index 874575f87..52f4723e9 100644 --- a/app/src/main/java/app/fedilab/android/activities/ShowAccountActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/ShowAccountActivity.java @@ -592,7 +592,7 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt } } - account_dn.setText(Helper.shortnameToUnicode(account.getDisplay_name(), true)); + account_dn.setText(Helper.shortnameToUnicode(account.getDisplay_name())); if (!ischannel || account.getAcct().split("-").length < 4) { account_un.setText(String.format("@%s", account.getAcct())); account_un.setOnLongClickListener(v -> { diff --git a/app/src/main/java/app/fedilab/android/client/API.java b/app/src/main/java/app/fedilab/android/client/API.java index 8f0fc6a0f..ef5f22726 100644 --- a/app/src/main/java/app/fedilab/android/client/API.java +++ b/app/src/main/java/app/fedilab/android/client/API.java @@ -279,10 +279,10 @@ public class API { instanceSocial.setHttps_rank(resobj.get("https_rank").toString()); instanceSocial.setHttps_score(Integer.parseInt(resobj.get("https_score").toString())); if (!resobj.isNull("added_at")) { - instanceSocial.setAdded_at(Helper.mstStringToDate(context, resobj.get("added_at").toString())); + instanceSocial.setAdded_at(Helper.mstStringToDate(resobj.get("added_at").toString())); } - instanceSocial.setChecked_at(Helper.mstStringToDate(context, resobj.get("checked_at").toString())); - instanceSocial.setUpdated_at(Helper.mstStringToDate(context, resobj.get("updated_at").toString())); + instanceSocial.setChecked_at(Helper.mstStringToDate(resobj.get("checked_at").toString())); + instanceSocial.setUpdated_at(Helper.mstStringToDate(resobj.get("updated_at").toString())); } catch (Exception e) { @@ -315,7 +315,7 @@ public class API { peertube.setDislike(Integer.parseInt(resobj.get("dislikes").toString())); peertube.setDuration(Integer.parseInt(resobj.get("duration").toString())); try { - peertube.setCreated_at(Helper.mstStringToDate(context, resobj.get("createdAt").toString())); + peertube.setCreated_at(Helper.mstStringToDate(resobj.get("createdAt").toString())); } catch (ParseException e) { e.printStackTrace(); } @@ -352,7 +352,7 @@ public class API { peertube.setDuration(Integer.parseInt(resobj.get("duration").toString())); peertube.setAccount(parseAccountResponsePeertube(context, instance, resobj.getJSONObject("account"))); try { - peertube.setCreated_at(Helper.mstStringToDate(context, resobj.get("createdAt").toString())); + peertube.setCreated_at(Helper.mstStringToDate(resobj.get("createdAt").toString())); } catch (ParseException e) { e.printStackTrace(); } @@ -406,7 +406,7 @@ public class API { status.setContent(context, comment.get("text").toString()); status.setIn_reply_to_id(comment.get("inReplyToCommentId").toString()); status.setAccount(parseAccountResponsePeertube(context, instance, comment.getJSONObject("account"))); - status.setCreated_at(Helper.mstStringToDate(context, comment.get("createdAt").toString())); + status.setCreated_at(Helper.mstStringToDate(comment.get("createdAt").toString())); status.setMentions(new ArrayList<>()); status.setEmojis(new ArrayList<>()); status.setMedia_attachments(new ArrayList<>()); @@ -459,7 +459,7 @@ public class API { schedule.setStatus(status); schedule.setAttachmentList(attachements); schedule.setId(jsonObject.get("id").toString()); - schedule.setScheduled_at(Helper.mstStringToDate(context, jsonObject.get("scheduled_at").toString())); + schedule.setScheduled_at(Helper.mstStringToDate(jsonObject.get("scheduled_at").toString())); } catch (JSONException | ParseException e) { e.printStackTrace(); } @@ -487,7 +487,7 @@ public class API { schedule.setAttachmentList(attachements); schedules.add(schedule); schedule.setId(jsonArray.getJSONObject(i).get("id").toString()); - schedule.setScheduled_at(Helper.mstStringToDate(context, jsonArray.getJSONObject(i).get("scheduled_at").toString())); + schedule.setScheduled_at(Helper.mstStringToDate(jsonArray.getJSONObject(i).get("scheduled_at").toString())); i++; } } catch (JSONException | ParseException e) { @@ -609,16 +609,16 @@ public class API { announcement.setId(resobj.getString("id")); announcement.setContent(context, resobj.getString("content")); if (resobj.getString("published_at").compareTo("null") != 0) { - announcement.setCreated_at(Helper.mstStringToDate(context, resobj.getString("published_at"))); + announcement.setCreated_at(Helper.mstStringToDate(resobj.getString("published_at"))); } if (resobj.getString("updated_at").compareTo("null") != 0) { - announcement.setUpdatedAt(Helper.mstStringToDate(context, resobj.getString("updated_at"))); + announcement.setUpdatedAt(Helper.mstStringToDate(resobj.getString("updated_at"))); } if (resobj.getString("starts_at").compareTo("null") != 0) { - announcement.setStartAt(Helper.mstStringToDate(context, resobj.getString("starts_at"))); + announcement.setStartAt(Helper.mstStringToDate(resobj.getString("starts_at"))); } if (resobj.getString("ends_at").compareTo("null") != 0) { - announcement.setEndAt(Helper.mstStringToDate(context, resobj.getString("ends_at"))); + announcement.setEndAt(Helper.mstStringToDate(resobj.getString("ends_at"))); } @@ -685,7 +685,7 @@ public class API { Poll poll = new Poll(); try { poll.setId(resobj.getString("id")); - poll.setExpires_at(Helper.mstStringToDate(context, resobj.getString("expires_at"))); + poll.setExpires_at(Helper.mstStringToDate(resobj.getString("expires_at"))); poll.setExpired(resobj.getBoolean("expired")); poll.setMultiple(resobj.getBoolean("multiple")); poll.setVotes_count(resobj.getInt("votes_count")); @@ -728,7 +728,7 @@ public class API { status.setUri(resobj.get("id").toString()); } if (resobj.has("created_at")) { - status.setCreated_at(Helper.mstStringToDate(context, resobj.get("created_at").toString())); + status.setCreated_at(Helper.mstStringToDate(resobj.get("created_at").toString())); } else { status.setCreated_at(new Date()); } @@ -886,7 +886,7 @@ public class API { Poll poll = new Poll(); poll.setId(resobj.getJSONObject("poll").getString("id")); try { - poll.setExpires_at(Helper.mstStringToDate(context, resobj.getJSONObject("poll").getString("expires_at"))); + poll.setExpires_at(Helper.mstStringToDate(resobj.getJSONObject("poll").getString("expires_at"))); } catch (Exception e) { poll.setExpires_at(new Date()); } @@ -979,7 +979,7 @@ public class API { status.setId(resobj.get("id").toString()); status.setUri("https://" + instance + "/notes/" + resobj.get("id").toString()); - status.setCreated_at(Helper.mstStringToDate(context, resobj.get("createdAt").toString())); + status.setCreated_at(Helper.mstStringToDate(resobj.get("createdAt").toString())); status.setIn_reply_to_id(resobj.get("replyId").toString()); status.setSensitive(false); resobj.get("cw"); @@ -1173,7 +1173,7 @@ public class API { account.setDisplay_name(resobj.get("displayName").toString()); account.setHost(resobj.get("host").toString()); if (resobj.has("createdAt")) - account.setCreated_at(Helper.mstStringToDate(context, resobj.get("createdAt").toString())); + account.setCreated_at(Helper.mstStringToDate(resobj.get("createdAt").toString())); else account.setCreated_at(new Date()); @@ -1227,9 +1227,9 @@ public class API { } - report.setCreated_at(Helper.mstStringToDate(context, resobj.getString("created_at"))); + report.setCreated_at(Helper.mstStringToDate(resobj.getString("created_at"))); if (!resobj.isNull("updated_at")) { - report.setUpdated_at(Helper.mstStringToDate(context, resobj.getString("updated_at"))); + report.setUpdated_at(Helper.mstStringToDate(resobj.getString("updated_at"))); } if (MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON) { if (!resobj.isNull("account")) { @@ -1291,7 +1291,7 @@ public class API { accountAdmin.setUsername(resobj.getString("nickname")); } if (!resobj.isNull("created_at")) { - accountAdmin.setCreated_at(Helper.mstStringToDate(context, resobj.getString("created_at"))); + accountAdmin.setCreated_at(Helper.mstStringToDate(resobj.getString("created_at"))); } if (!resobj.isNull("email")) { accountAdmin.setEmail(resobj.getString("email")); @@ -1378,7 +1378,7 @@ public class API { account.setDisplay_name(resobj.get("display_name").toString()); account.setLocked(Boolean.parseBoolean(resobj.get("locked").toString())); if (resobj.has("created_at") && !resobj.isNull("created_at")) { - account.setCreated_at(Helper.mstStringToDate(context, resobj.get("created_at").toString())); + account.setCreated_at(Helper.mstStringToDate(resobj.get("created_at").toString())); } else { account.setCreated_at(new Date()); } @@ -1609,13 +1609,13 @@ public class API { try { notification.setId(resobj.get("id").toString()); notification.setType(resobj.get("type").toString()); - notification.setCreated_at(Helper.mstStringToDate(context, resobj.get("created_at").toString())); + notification.setCreated_at(Helper.mstStringToDate(resobj.get("created_at").toString())); notification.setAccount(parseAccountResponse(context, resobj.getJSONObject("account"))); try { notification.setStatus(parseStatuses(context, resobj.getJSONObject("status"))); } catch (Exception ignored) { } - notification.setCreated_at(Helper.mstStringToDate(context, resobj.get("created_at").toString())); + notification.setCreated_at(Helper.mstStringToDate(resobj.get("created_at").toString())); } catch (JSONException ignored) { } catch (ParseException e) { e.printStackTrace(); @@ -1797,7 +1797,7 @@ public class API { identityProof.setProof_url(jsonObject.getString("proof_url")); identityProof.setProvider(jsonObject.getString("provider")); identityProof.setProvider_username(jsonObject.getString("provider_username")); - identityProof.setUpdated_at(Helper.mstStringToDate(context, jsonObject.getString("updated_at"))); + identityProof.setUpdated_at(Helper.mstStringToDate(jsonObject.getString("updated_at"))); } catch (JSONException | ParseException e) { e.printStackTrace(); @@ -5854,7 +5854,7 @@ public class API { filter.setPhrase(resobj.get("phrase").toString()); resobj.get("expires_at"); if (!resobj.get("expires_at").toString().equals("null")) - filter.setSetExpires_at(Helper.mstStringToDate(context, resobj.get("expires_at").toString())); + filter.setSetExpires_at(Helper.mstStringToDate(resobj.get("expires_at").toString())); filter.setWhole_word(Boolean.parseBoolean(resobj.get("whole_word").toString())); filter.setIrreversible(Boolean.parseBoolean(resobj.get("irreversible").toString())); String contextString = resobj.get("context").toString(); diff --git a/app/src/main/java/app/fedilab/android/client/Entities/Notification.java b/app/src/main/java/app/fedilab/android/client/Entities/Notification.java index af36bde2d..82e66ad4d 100644 --- a/app/src/main/java/app/fedilab/android/client/Entities/Notification.java +++ b/app/src/main/java/app/fedilab/android/client/Entities/Notification.java @@ -102,7 +102,7 @@ public class Notification implements Parcelable { switch (notification.getType()) { case "mention": if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), context.getString(R.string.notif_mention)); + typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), context.getString(R.string.notif_mention)); else typeString = String.format("@%s %s", notification.getAccount().getUsername(), context.getString(R.string.notif_mention)); break; @@ -111,25 +111,25 @@ public class Notification implements Parcelable { break; case "reblog": if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), context.getString(R.string.notif_reblog)); + typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), context.getString(R.string.notif_reblog)); else typeString = String.format("@%s %s", notification.getAccount().getUsername(), context.getString(R.string.notif_reblog)); break; case "favourite": if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), context.getString(R.string.notif_favourite)); + typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), context.getString(R.string.notif_favourite)); else typeString = String.format("@%s %s", notification.getAccount().getUsername(), context.getString(R.string.notif_favourite)); break; case "follow": if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), context.getString(R.string.notif_follow)); + typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), context.getString(R.string.notif_follow)); else typeString = String.format("@%s %s", notification.getAccount().getUsername(), context.getString(R.string.notif_follow)); break; case "follow_request": if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), context.getString(R.string.notif_follow_request)); + typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), context.getString(R.string.notif_follow_request)); else typeString = String.format("@%s %s", notification.getAccount().getUsername(), context.getString(R.string.notif_follow_request)); break; diff --git a/app/src/main/java/app/fedilab/android/client/GNUAPI.java b/app/src/main/java/app/fedilab/android/client/GNUAPI.java index 6daac8847..855454e06 100644 --- a/app/src/main/java/app/fedilab/android/client/GNUAPI.java +++ b/app/src/main/java/app/fedilab/android/client/GNUAPI.java @@ -164,7 +164,7 @@ public class GNUAPI { group.setId(resobj.get("id").toString()); //group.setFollowers_count(resobj.getInt("admin_count")); //group.setBlocked(resobj.getBoolean("blocked")); - group.setCreated_at(Helper.mstStringToDate(context, resobj.getString("created"))); + group.setCreated_at(Helper.mstStringToDate(resobj.getString("created"))); group.setNote(resobj.getString("description")); group.setDisplay_name(resobj.getString("fullname")); //group.setHomepage(resobj.getString("homepage")); @@ -227,7 +227,7 @@ public class GNUAPI { } catch (Exception ignored) { status.setUri(resobj.get("id").toString()); } - status.setCreated_at(Helper.mstStringToDate(context, resobj.get("created_at").toString())); + status.setCreated_at(Helper.mstStringToDate(resobj.get("created_at").toString())); if (resobj.has("in_reply_to_status_id")) status.setIn_reply_to_id(resobj.get("in_reply_to_status_id").toString()); if (resobj.has("in_reply_to_user_id")) @@ -400,7 +400,7 @@ public class GNUAPI { else account.setSocial("GNU"); account.setEmojis(new ArrayList<>()); - account.setCreated_at(Helper.mstStringToDate(context, resobj.get("created_at").toString())); + account.setCreated_at(Helper.mstStringToDate(resobj.get("created_at").toString())); } catch (JSONException | ParseException e) { e.printStackTrace(); } diff --git a/app/src/main/java/app/fedilab/android/client/PeertubeAPI.java b/app/src/main/java/app/fedilab/android/client/PeertubeAPI.java index 44fc4c962..ea5e5cf84 100644 --- a/app/src/main/java/app/fedilab/android/client/PeertubeAPI.java +++ b/app/src/main/java/app/fedilab/android/client/PeertubeAPI.java @@ -130,8 +130,8 @@ public class PeertubeAPI { try { peertubeNotification.setId(resobj.get("id").toString()); peertubeNotification.setType(resobj.getInt("type")); - peertubeNotification.setUpdatedAt(Helper.mstStringToDate(context, resobj.get("updatedAt").toString())); - peertubeNotification.setCreatedAt(Helper.mstStringToDate(context, resobj.get("createdAt").toString())); + peertubeNotification.setUpdatedAt(Helper.mstStringToDate(resobj.get("updatedAt").toString())); + peertubeNotification.setCreatedAt(Helper.mstStringToDate(resobj.get("createdAt").toString())); peertubeNotification.setRead(resobj.getBoolean("read")); if (resobj.has("comment")) { @@ -264,7 +264,7 @@ public class PeertubeAPI { } try { - peertube.setCreated_at(Helper.mstStringToDate(context, resobj.get("createdAt").toString())); + peertube.setCreated_at(Helper.mstStringToDate(resobj.get("createdAt").toString())); } catch (ParseException e) { e.printStackTrace(); } @@ -333,13 +333,13 @@ public class PeertubeAPI { } peertube.setSensitive(Boolean.parseBoolean(resobj.get("nsfw").toString())); try { - peertube.setCreated_at(Helper.mstStringToDate(context, resobj.get("createdAt").toString())); + peertube.setCreated_at(Helper.mstStringToDate(resobj.get("createdAt").toString())); } catch (ParseException e) { e.printStackTrace(); } try { - peertube.setCreated_at(Helper.mstStringToDate(context, resobj.get("createdAt").toString())); + peertube.setCreated_at(Helper.mstStringToDate(resobj.get("createdAt").toString())); } catch (ParseException e) { e.printStackTrace(); } @@ -442,7 +442,7 @@ public class PeertubeAPI { account.setSocial("PEERTUBE"); if (accountObject.has("createdAt")) - account.setCreated_at(Helper.mstStringToDate(context, accountObject.get("createdAt").toString())); + account.setCreated_at(Helper.mstStringToDate(accountObject.get("createdAt").toString())); else account.setCreated_at(new Date()); if (accountObject.has("followersCount")) diff --git a/app/src/main/java/app/fedilab/android/drawers/AccountSearchDevAdapter.java b/app/src/main/java/app/fedilab/android/drawers/AccountSearchDevAdapter.java index 79c361a39..ea00b52db 100644 --- a/app/src/main/java/app/fedilab/android/drawers/AccountSearchDevAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/AccountSearchDevAdapter.java @@ -112,10 +112,10 @@ public class AccountSearchDevAdapter extends BaseAdapter implements OnPostAction if (account.getSocial() == null || !account.getSocial().contains("OPENCOLLECTIVE")) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - holder.account_dn.setText(Helper.shortnameToUnicode(account.getDisplay_name(), true)); + holder.account_dn.setText(Helper.shortnameToUnicode(account.getDisplay_name())); holder.account_un.setText(String.format("@%s", account.getAcct())); } else { - holder.account_dn.setText(Helper.shortnameToUnicode(account.getDisplay_name(), true)); + holder.account_dn.setText(Helper.shortnameToUnicode(account.getDisplay_name())); holder.account_un.setText(String.format("@%s", account.getAcct())); } if (account.isFollowing()) { @@ -124,7 +124,7 @@ public class AccountSearchDevAdapter extends BaseAdapter implements OnPostAction holder.account_follow.show(); } } else { - holder.account_dn.setText(Helper.shortnameToUnicode(account.getDisplay_name(), true)); + holder.account_dn.setText(Helper.shortnameToUnicode(account.getDisplay_name())); holder.account_un.setText(account.getAcct()); holder.account_follow.hide(); } diff --git a/app/src/main/java/app/fedilab/android/drawers/AccountsAdminListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/AccountsAdminListAdapter.java index 612fda5c8..e1345cbf3 100644 --- a/app/src/main/java/app/fedilab/android/drawers/AccountsAdminListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/AccountsAdminListAdapter.java @@ -71,7 +71,7 @@ public class AccountsAdminListAdapter extends RecyclerView.Adapter implements On Account.makeAccountNameEmoji(context, AccountsAdminListAdapter.this, account); if (account.getdisplayNameSpan() == null || account.getdisplayNameSpan().toString().trim().equals("")) { if (account.getDisplay_name() != null && !account.getDisplay_name().trim().equals("")) - holder.account_dn.setText(Helper.shortnameToUnicode(account.getDisplay_name(), true)); + holder.account_dn.setText(Helper.shortnameToUnicode(account.getDisplay_name())); else if (account.getDisplay_name() != null) { holder.account_dn.setText(account.getDisplay_name().replace("@", "")); } @@ -80,7 +80,7 @@ public class AccountsAdminListAdapter extends RecyclerView.Adapter implements On if (account.getdisplayNameSpan() == null || account.getdisplayNameSpan().toString().trim().equals("")) { if (account.getDisplay_name() != null && !account.getDisplay_name().trim().equals("")) - holder.account_dn.setText(Helper.shortnameToUnicode(account.getDisplay_name(), true)); + holder.account_dn.setText(Helper.shortnameToUnicode(account.getDisplay_name())); else if (account.getDisplay_name() != null) { holder.account_dn.setText(account.getDisplay_name().replace("@", "")); } diff --git a/app/src/main/java/app/fedilab/android/drawers/AccountsFollowRequestAdapter.java b/app/src/main/java/app/fedilab/android/drawers/AccountsFollowRequestAdapter.java index ebc446360..d3b3828fb 100644 --- a/app/src/main/java/app/fedilab/android/drawers/AccountsFollowRequestAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/AccountsFollowRequestAdapter.java @@ -87,7 +87,7 @@ public class AccountsFollowRequestAdapter extends RecyclerView.Adapter implement holder.btn_authorize.setVisibility(View.GONE); holder.btn_reject.setVisibility(View.GONE); } - holder.account_dn.setText(Helper.shortnameToUnicode(account.getDisplay_name(), true)); + holder.account_dn.setText(Helper.shortnameToUnicode(account.getDisplay_name())); holder.account_un.setText(account.getAcct()); //Profile picture Glide.with(holder.account_pp.getContext()) diff --git a/app/src/main/java/app/fedilab/android/drawers/AccountsInAListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/AccountsInAListAdapter.java index 0a6fa1655..e7799fc9c 100644 --- a/app/src/main/java/app/fedilab/android/drawers/AccountsInAListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/AccountsInAListAdapter.java @@ -89,7 +89,7 @@ public class AccountsInAListAdapter extends RecyclerView.Adapter implements OnLi final Account account = accounts.get(position); - holder.account_un.setText(Helper.shortnameToUnicode(account.getDisplay_name(), true)); + holder.account_un.setText(Helper.shortnameToUnicode(account.getDisplay_name())); holder.account_ac.setText(account.getAcct()); if (account.getDisplay_name().equals(account.getAcct())) holder.account_ac.setVisibility(View.GONE); diff --git a/app/src/main/java/app/fedilab/android/drawers/AccountsListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/AccountsListAdapter.java index 0e61ee7a7..e206fd7d9 100644 --- a/app/src/main/java/app/fedilab/android/drawers/AccountsListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/AccountsListAdapter.java @@ -171,7 +171,7 @@ public class AccountsListAdapter extends RecyclerView.Adapter implements OnPostA } if (account.getdisplayNameSpan() == null || account.getdisplayNameSpan().toString().trim().equals("")) { if (account.getDisplay_name() != null && !account.getDisplay_name().trim().equals("")) - holder.account_dn.setText(Helper.shortnameToUnicode(account.getDisplay_name(), true)); + holder.account_dn.setText(Helper.shortnameToUnicode(account.getDisplay_name())); else holder.account_dn.setText(account.getUsername().replace("@", "")); } else diff --git a/app/src/main/java/app/fedilab/android/drawers/AccountsSearchAdapter.java b/app/src/main/java/app/fedilab/android/drawers/AccountsSearchAdapter.java index 34a6bfcc9..09643163d 100644 --- a/app/src/main/java/app/fedilab/android/drawers/AccountsSearchAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/AccountsSearchAdapter.java @@ -153,7 +153,7 @@ public class AccountsSearchAdapter extends ArrayAdapter implements Filt holder.account_dn.setVisibility(View.GONE); } else { holder.account_un.setText(String.format("@%s", account.getAcct())); - holder.account_dn.setText(Helper.shortnameToUnicode(account.getDisplay_name(), true)); + holder.account_dn.setText(Helper.shortnameToUnicode(account.getDisplay_name())); holder.account_dn.setVisibility(View.VISIBLE); } //Profile picture diff --git a/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java index bd507e287..a980c2329 100644 --- a/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java @@ -265,7 +265,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On case "mention": holder.status_action_container.setVisibility(View.VISIBLE); if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), context.getString(R.string.notif_mention)); + typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), context.getString(R.string.notif_mention)); else typeString = String.format("@%s %s", notification.getAccount().getUsername(), context.getString(R.string.notif_mention)); imgH = ContextCompat.getDrawable(context, R.drawable.ic_chat_bubble_outline); @@ -287,7 +287,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On case "reblog": holder.status_action_container.setVisibility(View.GONE); if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), context.getString(R.string.notif_reblog)); + typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), context.getString(R.string.notif_reblog)); else typeString = String.format("@%s %s", notification.getAccount().getUsername(), context.getString(R.string.notif_reblog)); imgH = ContextCompat.getDrawable(context, R.drawable.ic_repeat_head); @@ -297,7 +297,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On case "favourite": holder.status_action_container.setVisibility(View.GONE); if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), context.getString(R.string.notif_favourite)); + typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), context.getString(R.string.notif_favourite)); else typeString = String.format("@%s %s", notification.getAccount().getUsername(), context.getString(R.string.notif_favourite)); imgH = ContextCompat.getDrawable(context, R.drawable.ic_star_border_header); @@ -308,7 +308,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On holder.status_action_container.setVisibility(View.GONE); holder.status_date.setVisibility(View.GONE); if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), context.getString(R.string.notif_follow_request)); + typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), context.getString(R.string.notif_follow_request)); else typeString = String.format("@%s %s", notification.getAccount().getUsername(), context.getString(R.string.notif_follow_request)); imgH = ContextCompat.getDrawable(context, R.drawable.ic_follow_notif_header); @@ -318,7 +318,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On holder.status_action_container.setVisibility(View.GONE); holder.status_date.setVisibility(View.GONE); if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), context.getString(R.string.notif_follow)); + typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), context.getString(R.string.notif_follow)); else typeString = String.format("@%s %s", notification.getAccount().getUsername(), context.getString(R.string.notif_follow)); imgH = ContextCompat.getDrawable(context, R.drawable.ic_follow_notif_header); diff --git a/app/src/main/java/app/fedilab/android/drawers/PixelfedListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/PixelfedListAdapter.java index 3290a7881..4477ecd41 100644 --- a/app/src/main/java/app/fedilab/android/drawers/PixelfedListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/PixelfedListAdapter.java @@ -840,7 +840,7 @@ public class PixelfedListAdapter extends RecyclerView.Adapter implements OnPostA extra_text = "@" + extra_text + "@" + Helper.getLiveInstance(context); else extra_text = "@" + extra_text; - extra_text += " " + Helper.shortnameToUnicode(":link:", true) + " " + url + "\r\n-\n"; + extra_text += " " + Helper.shortnameToUnicode(":link:") + " " + url + "\r\n-\n"; final String contentToot; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) contentToot = Html.fromHtml((status.getReblog() != null) ? status.getReblog().getContent() : status.getContent(), Html.FROM_HTML_MODE_LEGACY).toString(); diff --git a/app/src/main/java/app/fedilab/android/drawers/ReportsListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/ReportsListAdapter.java index 4c68cf896..dcd63603e 100644 --- a/app/src/main/java/app/fedilab/android/drawers/ReportsListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/ReportsListAdapter.java @@ -71,7 +71,7 @@ public class ReportsListAdapter extends RecyclerView.Adapter implements OnRetrie Account.makeAccountNameEmoji(context, ReportsListAdapter.this, target_account); if (account.getdisplayNameSpan() == null || account.getdisplayNameSpan().toString().trim().equals("")) { if (account.getDisplay_name() != null && !account.getDisplay_name().trim().equals("")) - holder.account_dn_reporter.setText(Helper.shortnameToUnicode(account.getDisplay_name(), true)); + holder.account_dn_reporter.setText(Helper.shortnameToUnicode(account.getDisplay_name())); else holder.account_dn_reporter.setText(account.getUsername().replace("@", "")); } else @@ -79,7 +79,7 @@ public class ReportsListAdapter extends RecyclerView.Adapter implements OnRetrie if (target_account.getdisplayNameSpan() == null || target_account.getdisplayNameSpan().toString().trim().equals("")) { if (target_account.getDisplay_name() != null && !target_account.getDisplay_name().trim().equals("")) - holder.account_dn.setText(Helper.shortnameToUnicode(target_account.getDisplay_name(), true)); + holder.account_dn.setText(Helper.shortnameToUnicode(target_account.getDisplay_name())); else { if (target_account.getUsername() != null) { holder.account_dn.setText(target_account.getUsername().replace("@", "")); diff --git a/app/src/main/java/app/fedilab/android/drawers/SearchListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/SearchListAdapter.java index 4c06c3e4d..e57027c7b 100644 --- a/app/src/main/java/app/fedilab/android/drawers/SearchListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/SearchListAdapter.java @@ -157,7 +157,7 @@ public class SearchListAdapter extends BaseAdapter { final String content, displayName, username, ppurl; if (status.getReblog() != null) { content = status.getReblog().getContent(); - displayName = Helper.shortnameToUnicode(status.getReblog().getAccount().getDisplay_name(), true); + displayName = Helper.shortnameToUnicode(status.getReblog().getAccount().getDisplay_name()); username = status.getReblog().getAccount().getUsername(); holder.status_reblog_user.setText(String.format("%s @%s", displayName, username)); ppurl = status.getReblog().getAccount().getAvatar(); @@ -167,7 +167,7 @@ public class SearchListAdapter extends BaseAdapter { } else { ppurl = status.getAccount().getAvatar(); content = status.getContent(); - displayName = Helper.shortnameToUnicode(status.getAccount().getDisplay_name(), true); + displayName = Helper.shortnameToUnicode(status.getAccount().getDisplay_name()); username = status.getAccount().getUsername(); holder.status_reblog_user.setVisibility(View.GONE); holder.status_account_displayname.setText(displayName); diff --git a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java index 49e09c519..4bd349527 100644 --- a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java @@ -579,9 +579,9 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct if (social == UpdateAccountInfoAsyncTask.SOCIAL.PIXELFED && type == RetrieveFeedsAsyncTask.Type.CONTEXT) { return COMPACT_STATUS; } else { - if (instanceType == null || instanceType.compareTo("NITTER") != 0) { + if( instanceType == null || instanceType.compareTo("NITTER") != 0 ) { return statuses.get(position).getViewType(); - } else { + }else{ return COMPACT_STATUS; } } @@ -1009,8 +1009,8 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct iconColor = ThemeHelper.getAttColor(context, R.attr.iconColor); } - if (type == RetrieveFeedsAsyncTask.Type.ANNOUNCEMENTS || social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA) { - if (type == RetrieveFeedsAsyncTask.Type.ANNOUNCEMENTS) { + if( type == RetrieveFeedsAsyncTask.Type.ANNOUNCEMENTS || social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA ){ + if( type == RetrieveFeedsAsyncTask.Type.ANNOUNCEMENTS ) { holder.status_account_profile.setVisibility(View.GONE); holder.status_account_displayname_owner.setVisibility(View.GONE); holder.status_account_username.setVisibility(View.GONE); @@ -1033,18 +1033,18 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct }).setOnEmojiClickListener((emoji, imageView) -> { String emojiStr = imageView.getUnicode(); boolean alreadyAdded = false; - for (Reaction reaction : status.getReactions()) { - if (reaction.getName().compareTo(emojiStr) == 0) { + for(Reaction reaction: status.getReactions()){ + if( reaction.getName().compareTo(emojiStr) == 0){ alreadyAdded = true; - reaction.setCount(reaction.getCount() - 1); - if (reaction.getCount() == 0) { + reaction.setCount(reaction.getCount()-1); + if( reaction.getCount() == 0) { status.getReactions().remove(reaction); } notifyStatusChanged(status); break; } } - if (!alreadyAdded) { + if( !alreadyAdded){ Reaction reaction = new Reaction(); reaction.setMe(true); reaction.setCount(1); @@ -1053,17 +1053,17 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct notifyStatusChanged(status); } API.StatusAction statusAction; - if (type == RetrieveFeedsAsyncTask.Type.ANNOUNCEMENTS) { + if( type == RetrieveFeedsAsyncTask.Type.ANNOUNCEMENTS ) { statusAction = alreadyAdded ? API.StatusAction.REMOVE_REACTION : API.StatusAction.ADD_REACTION; - } else { + }else{ statusAction = alreadyAdded ? API.StatusAction.REMOVE_PLEROMA_REACTION : API.StatusAction.ADD_PLEROMA_REACTION; } - new PostActionAsyncTask(context, statusAction, status.getId(), null, emojiStr, StatusListAdapter.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + new PostActionAsyncTask(context, statusAction, status.getId(), null,emojiStr, StatusListAdapter.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); }) .build(holder.fake_edittext); emojiPopup.toggle(); }); - if (social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA) { + if( social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA) { holder.status_add_custom_emoji.setVisibility(View.GONE); } holder.status_add_custom_emoji.setOnClickListener(v -> { @@ -1090,18 +1090,18 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct gridView.setNumColumns(5); gridView.setOnItemClickListener((parent, view, position, id) -> { boolean alreadyAdded = false; - for (Reaction reaction : status.getReactions()) { - if (reaction.getName().compareTo(emojis.get(position).getShortcode()) == 0) { + for(Reaction reaction: status.getReactions()){ + if( reaction.getName().compareTo(emojis.get(position).getShortcode()) == 0){ alreadyAdded = true; - reaction.setCount(reaction.getCount() - 1); - if (reaction.getCount() == 0) { + reaction.setCount(reaction.getCount()-1); + if( reaction.getCount() == 0) { status.getReactions().remove(reaction); } notifyStatusChanged(status); break; } } - if (!alreadyAdded) { + if( !alreadyAdded){ Reaction reaction = new Reaction(); reaction.setMe(true); reaction.setCount(1); @@ -1111,12 +1111,12 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct notifyStatusChanged(status); } API.StatusAction statusAction; - if (type == RetrieveFeedsAsyncTask.Type.ANNOUNCEMENTS) { + if( type == RetrieveFeedsAsyncTask.Type.ANNOUNCEMENTS ) { statusAction = alreadyAdded ? API.StatusAction.REMOVE_REACTION : API.StatusAction.ADD_REACTION; - } else { + }else{ statusAction = alreadyAdded ? API.StatusAction.REMOVE_PLEROMA_REACTION : API.StatusAction.ADD_PLEROMA_REACTION; } - new PostActionAsyncTask(context, statusAction, status.getId(), null, emojis.get(position).getShortcode(), StatusListAdapter.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + new PostActionAsyncTask(context, statusAction, status.getId(), null, emojis.get(position).getShortcode(), StatusListAdapter.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); alertDialogEmoji.dismiss(); }); gridView.setPadding(paddingDp, paddingDp, paddingDp, paddingDp); @@ -1363,7 +1363,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct extra_text = "@" + extra_text + "@" + Helper.getLiveInstance(context); else extra_text = "@" + extra_text; - extra_text += " " + Helper.shortnameToUnicode(":link:", true) + " " + url + "\r\n-\n"; + extra_text += " " + Helper.shortnameToUnicode(":link:") + " " + url + "\r\n-\n"; final String contentToot; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) contentToot = Html.fromHtml((status.getReblog() != null) ? status.getReblog().getContent() : status.getContent(), Html.FROM_HTML_MODE_LEGACY).toString(); @@ -2940,7 +2940,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct extra_text = "@" + extra_text + "@" + Helper.getLiveInstance(context); else extra_text = "@" + extra_text; - extra_text += " " + Helper.shortnameToUnicode(":link:", true) + " " + url + "\r\n-\n"; + extra_text += " " + Helper.shortnameToUnicode(":link:") + " " + url + "\r\n-\n"; final String contentToot; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) contentToot = Html.fromHtml((status.getReblog() != null) ? status.getReblog().getContent() : status.getContent(), Html.FROM_HTML_MODE_LEGACY).toString(); @@ -3365,7 +3365,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct Glide.with(imageView.getContext()) .load(!attachment.getType().toLowerCase().equals("audio") ? url : R.drawable.ic_audio_wave) .thumbnail(0.1f) - // .override(640, 480) + // .override(640, 480) .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(10))) .transition(DrawableTransitionOptions.withCrossFade()) .into(imageView); @@ -3373,7 +3373,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct Glide.with(imageView.getContext()) .load(!attachment.getType().toLowerCase().equals("audio") ? url : R.drawable.ic_audio_wave) .thumbnail(0.1f) - // .override(640, 480) + // .override(640, 480) .apply(new RequestOptions().transform(new BlurTransformation(50, 3), new RoundedCorners(10))) .transition(DrawableTransitionOptions.withCrossFade()) .into(imageView); diff --git a/app/src/main/java/app/fedilab/android/helper/Helper.java b/app/src/main/java/app/fedilab/android/helper/Helper.java index 0fd4e8bf4..b2cc71083 100644 --- a/app/src/main/java/app/fedilab/android/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/helper/Helper.java @@ -28,7 +28,6 @@ import android.app.PendingIntent; import android.content.ContentResolver; import android.content.ContentUris; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Resources; @@ -43,8 +42,6 @@ import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.PorterDuffXfermode; -import android.graphics.Rect; -import android.graphics.RectF; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.media.AudioAttributes; @@ -75,10 +72,8 @@ import android.util.TypedValue; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; -import android.view.MotionEvent; import android.view.SubMenu; import android.view.View; -import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.WindowManager; import android.webkit.CookieManager; @@ -254,7 +249,7 @@ import static com.koushikdutta.async.util.StreamUtility.copyStream; * - Reusable methods are implemented in this section */ -@SuppressWarnings("WeakerAccess") +@SuppressWarnings({"WeakerAccess", "ResultOfMethodCallIgnored"}) public class Helper { @@ -591,10 +586,9 @@ public class Helper { * Converts emojis in input to unicode * * @param input String - * @param removeIfUnsupported boolean * @return String */ - public static String shortnameToUnicode(String input, boolean removeIfUnsupported) { + public static String shortnameToUnicode(String input) { Matcher matcher = SHORTNAME_PATTERN.matcher(input); while (matcher.find()) { @@ -718,11 +712,10 @@ public class Helper { /** * Convert String date from Mastodon * - * @param context Context * @param date String * @return Date */ - public static Date mstStringToDate(Context context, String date) throws ParseException { + public static Date mstStringToDate(String date) throws ParseException { if (date == null) return null; @@ -748,29 +741,6 @@ public class Helper { } } - /** - * Convert String date from Mastodon - * - * @param context Context - * @param date String - * @return Date - */ - public static Date opencollectivetStringToDate(Context context, String date) throws ParseException { - Locale userLocale; - if (date == null) - return null; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - userLocale = context.getResources().getConfiguration().getLocales().get(0); - } else { - userLocale = context.getResources().getConfiguration().locale; - } - String STRING_DATE_FORMAT; - STRING_DATE_FORMAT = "yyyy-MM-dd HH:mm"; - SimpleDateFormat simpleDateFormat = new SimpleDateFormat(STRING_DATE_FORMAT, userLocale); - simpleDateFormat.setTimeZone(TimeZone.getTimeZone("gmt")); - simpleDateFormat.setLenient(true); - return simpleDateFormat.parse(date); - } /** * Convert a date in String -> format yyyy-MM-dd HH:mm:ss @@ -1090,23 +1060,16 @@ public class Helper { final String fileName = URLUtil.guessFileName(url, null, null); builder.setMessage(context.getResources().getString(R.string.download_file, fileName)); builder.setCancelable(false) - .setPositiveButton(context.getString(R.string.yes), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - request.allowScanningByMediaScanner(); - request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName); - request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); - DownloadManager dm = (DownloadManager) context.getSystemService(DOWNLOAD_SERVICE); - assert dm != null; - dm.enqueue(request); - dialog.dismiss(); - } - + .setPositiveButton(context.getString(R.string.yes), (dialog, id) -> { + request.allowScanningByMediaScanner(); + request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName); + request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); + DownloadManager dm = (DownloadManager) context.getSystemService(DOWNLOAD_SERVICE); + assert dm != null; + dm.enqueue(request); + dialog.dismiss(); }) - .setNegativeButton(context.getString(R.string.cancel), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }); + .setNegativeButton(context.getString(R.string.cancel), (dialog, id) -> dialog.cancel()); AlertDialog alert = builder.create(); if (alert.getWindow() != null) alert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); @@ -1298,95 +1261,6 @@ public class Helper { notificationManager.notify(0, summaryNotification); } - /** - * Manage downloads with URLs - * - * @param context Context - * @param url String download url - */ - public static void manageMoveFileDownload(final Context context, final String preview_url, final String url, Bitmap bitmap, File fileVideo, boolean isSharing) { - - final String fileName = URLUtil.guessFileName(url, null, null); - final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); - String myDir = sharedpreferences.getString(Helper.SET_FOLDER_RECORD, Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath()); - String mime = getMimeType(url); - try { - File file; - if (bitmap != null) { - file = new File(myDir, fileName); - //noinspection ResultOfMethodCallIgnored - file.createNewFile(); - - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - if (mime != null && (mime.contains("png") || mime.contains(".PNG"))) - bitmap.compress(Bitmap.CompressFormat.PNG, 0, bos); - else - bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos); - byte[] bitmapdata = bos.toByteArray(); - - FileOutputStream fos = new FileOutputStream(file); - fos.write(bitmapdata); - fos.flush(); - fos.close(); - } else { - File fileVideoTargeded = new File(myDir, fileName); - copy(fileVideo, fileVideoTargeded); - file = fileVideoTargeded; - } - // prepare intent which is triggered if the - // notification is selected - final Intent intent = new Intent(); - intent.setAction(android.content.Intent.ACTION_VIEW); - Uri uri = Uri.parse("file://" + file.getAbsolutePath()); - intent.setDataAndType(uri, getMimeType(url)); - - if (!isSharing) - Glide.with(context) - .asBitmap() - .load(preview_url) - .listener(new RequestListener() { - - @Override - public boolean onResourceReady(Bitmap resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) { - return false; - } - - @Override - public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) { - SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); - String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); - String instance = sharedpreferences.getString(Helper.PREF_INSTANCE, Helper.getLiveInstance(context)); - Account account = new AccountDAO(context, db).getUniqAccount(userId, instance); - notify_user(context, account, intent, BitmapFactory.decodeResource(context.getResources(), - R.mipmap.ic_launcher_bubbles), NotifType.STORE, context.getString(R.string.save_over), context.getString(R.string.download_from, fileName)); - Toasty.success(context, context.getString(R.string.toast_saved), Toast.LENGTH_LONG).show(); - return false; - } - }) - .into(new SimpleTarget() { - @Override - public void onResourceReady(@NonNull Bitmap resource, Transition transition) { - SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); - String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); - String instance = sharedpreferences.getString(Helper.PREF_INSTANCE, Helper.getLiveInstance(context)); - Account account = new AccountDAO(context, db).getUniqAccount(userId, instance); - notify_user(context, account, intent, resource, NotifType.STORE, context.getString(R.string.save_over), context.getString(R.string.download_from, fileName)); - Toasty.success(context, context.getString(R.string.toast_saved), Toast.LENGTH_LONG).show(); - } - }); - else { - Intent shareIntent = new Intent(Intent.ACTION_SEND); - if (bitmap != null) - shareIntent.setType("image/*"); - else - shareIntent.setType("video/*"); - shareIntent.putExtra(Intent.EXTRA_STREAM, uri); - shareIntent.putExtra(Intent.EXTRA_TEXT, R.string.share_with); - context.startActivity(shareIntent); - } - } catch (Exception ignored) { - } - } /** * Copy a file by transferring bytes from in to out @@ -1472,8 +1346,6 @@ public class Helper { return; final SharedPreferences sharedpreferences = activity.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); - if (!menuAccountsOpened) { arrow.setImageResource(R.drawable.ic_arrow_drop_up); SQLiteDatabase db = Sqlite.getInstance(activity, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); @@ -1522,51 +1394,41 @@ public class Helper { } }); - item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - if (!activity.isFinishing()) { - menuAccountsOpened = false; - Toasty.info(activity, activity.getString(R.string.toast_account_changed, "@" + account.getAcct() + "@" + account.getInstance()), Toast.LENGTH_LONG).show(); - changeUser(activity, account.getId(), account.getInstance(), false); - arrow.setImageResource(R.drawable.ic_arrow_drop_down); - return true; - } - return false; + item.setOnMenuItemClickListener(item1 -> { + if (!activity.isFinishing()) { + menuAccountsOpened = false; + Toasty.info(activity, activity.getString(R.string.toast_account_changed, "@" + account.getAcct() + "@" + account.getInstance()), Toast.LENGTH_LONG).show(); + changeUser(activity, account.getId(), account.getInstance(), false); + arrow.setImageResource(R.drawable.ic_arrow_drop_down); + return true; } + return false; }); item.setActionView(R.layout.update_account); ImageView deleteButton = item.getActionView().findViewById(R.id.account_remove_button); - deleteButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - final SharedPreferences sharedpreferences = activity.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); - int style; - if (theme == Helper.THEME_DARK) { - style = R.style.DialogDark; - } else if (theme == Helper.THEME_BLACK) { - style = R.style.DialogBlack; - } else { - style = R.style.Dialog; - } - new AlertDialog.Builder(activity, style) - .setTitle(activity.getString(R.string.delete_account_title)) - .setMessage(activity.getString(R.string.delete_account_message, "@" + account.getAcct() + "@" + account.getInstance())) - .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - new RemoveAccountAsyncTask(activity, account).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - item.setVisible(false); - } - }) - .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - // do nothing - } - }) - .setIcon(android.R.drawable.ic_dialog_alert) - .show(); + deleteButton.setOnClickListener(v -> { + final SharedPreferences sharedpreferences1 = activity.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); + int theme1 = sharedpreferences1.getInt(Helper.SET_THEME, Helper.THEME_DARK); + int style; + if (theme1 == Helper.THEME_DARK) { + style = R.style.DialogDark; + } else if (theme1 == Helper.THEME_BLACK) { + style = R.style.DialogBlack; + } else { + style = R.style.Dialog; } + new AlertDialog.Builder(activity, style) + .setTitle(activity.getString(R.string.delete_account_title)) + .setMessage(activity.getString(R.string.delete_account_message, "@" + account.getAcct() + "@" + account.getInstance())) + .setPositiveButton(android.R.string.yes, (dialog, which) -> { + new RemoveAccountAsyncTask(activity, account).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + item.setVisible(false); + }) + .setNegativeButton(android.R.string.no, (dialog, which) -> { + // do nothing + }) + .setIcon(android.R.drawable.ic_dialog_alert) + .show(); }); } @@ -1574,14 +1436,11 @@ public class Helper { currentSubmenu = mainMenu.addSubMenu(""); MenuItem addItem = currentSubmenu.add(R.string.add_account); addItem.setIcon(R.drawable.ic_person_add); - addItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - Intent intent = new Intent(activity, LoginActivity.class); - intent.putExtra("addAccount", true); - activity.startActivity(intent); - return true; - } + addItem.setOnMenuItemClickListener(item -> { + Intent intent = new Intent(activity, LoginActivity.class); + intent.putExtra("addAccount", true); + activity.startActivity(intent); + return true; }); } else { navigationView.getMenu().clear(); @@ -1779,8 +1638,6 @@ public class Helper { final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); String logo = sharedpreferences.getString(Helper.LOGO_LAUNCHER, "bubbles"); switch (logo) { - case "bubbles": - return R.drawable.ic_plain_bubbles; case "fediverse": return R.drawable.ic_plain_fediverse; case "hero": @@ -1800,8 +1657,6 @@ public class Helper { final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); String logo = sharedpreferences.getString(Helper.LOGO_LAUNCHER, "bubbles"); switch (logo) { - case "bubbles": - return R.drawable.fedilab_logo_bubbles; case "fediverse": return R.drawable.fedilab_logo_fediverse; case "hero": @@ -1817,19 +1672,6 @@ public class Helper { } } - @SuppressWarnings("SameParameterValue") - private static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int roundPixelSize) { - Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.RGB_565); - Canvas canvas = new Canvas(output); - final Paint paint = new Paint(); - final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); - final RectF rectF = new RectF(rect); - paint.setAntiAlias(true); - canvas.drawRoundRect(rectF, (float) roundPixelSize, (float) roundPixelSize, paint); - paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); - canvas.drawBitmap(bitmap, rect, rect, paint); - return output; - } public static Map sortByValue(Map map) { List> list = new LinkedList<>(map.entrySet()); @@ -1841,8 +1683,7 @@ public class Helper { }); Map result = new LinkedHashMap<>(); - for (Iterator> it = list.iterator(); it.hasNext(); ) { - Map.Entry entry = it.next(); + for (Map.Entry entry : list) { result.put(entry.getKey(), entry.getValue()); } return result; @@ -1858,7 +1699,6 @@ public class Helper { } SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); int l_c = prefs.getInt("theme_link_color", -1); - final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); if (l_c == -1) { l_c = ThemeHelper.getAttColor(context, R.attr.linkColor); } @@ -1873,22 +1713,22 @@ public class Helper { for (int startPosition = -1; (startPosition = spannableString.toString().indexOf(targetedAccount, startPosition + 1)) != -1; startPosition++) { int endPosition = startPosition + targetedAccount.length(); spannableString.setSpan(new ClickableSpan() { - @Override - public void onClick(@NotNull View textView) { - Intent intent = new Intent(context, ShowAccountActivity.class); - Bundle b = new Bundle(); - b.putString("accountId", mention.getId()); - intent.putExtras(b); - context.startActivity(intent); - } + @Override + public void onClick(@NotNull View textView) { + Intent intent = new Intent(context, ShowAccountActivity.class); + Bundle b = new Bundle(); + b.putString("accountId", mention.getId()); + intent.putExtras(b); + context.startActivity(intent); + } - @Override - public void updateDrawState(@NotNull TextPaint ds) { - super.updateDrawState(ds); - ds.setUnderlineText(false); - ds.setColor(link_color); - } - }, + @Override + public void updateDrawState(@NotNull TextPaint ds) { + super.updateDrawState(ds); + ds.setUnderlineText(false); + ds.setColor(link_color); + } + }, startPosition, endPosition, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); } @@ -1938,7 +1778,7 @@ public class Helper { ImageView finalIcon = icon; Glide.with(activity) .asDrawable() - .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(270))) + .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(270))) .listener(new RequestListener() { @Override @@ -1992,7 +1832,7 @@ public class Helper { ImageView itemIconAcc = new ImageView(activity); Glide.with(activity) .asDrawable() - .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(270))) + .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(270))) .load(!disableGif ? accountChoice.getAvatar() : accountChoice.getAvatar_static()) .listener(new RequestListener() { @@ -2026,30 +1866,27 @@ public class Helper { .setLayoutParams(layoutparmansAcc) .build(); - subActionButtonAcc.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (!accountChoice.getToken().equals("null")) { - SharedPreferences.Editor editor = sharedpreferences.edit(); - editor.putString(Helper.PREF_KEY_OAUTH_TOKEN, accountChoice.getToken()); - editor.putString(Helper.PREF_KEY_ID, accountChoice.getId()); - editor.putString(Helper.PREF_INSTANCE, accountChoice.getInstance().trim()); - editor.putBoolean(Helper.PREF_IS_MODERATOR, accountChoice.isModerator()); - editor.putBoolean(Helper.PREF_IS_ADMINISTRATOR, accountChoice.isAdmin()); - editor.commit(); - if (accountChoice.getSocial() != null && accountChoice.getSocial().equals("PEERTUBE")) - Toasty.info(activity, activity.getString(R.string.toast_account_changed, "@" + accountChoice.getAcct()), Toast.LENGTH_LONG).show(); - else - Toasty.info(activity, activity.getString(R.string.toast_account_changed, "@" + accountChoice.getUsername() + "@" + accountChoice.getInstance()), Toast.LENGTH_LONG).show(); - Intent changeAccount = new Intent(activity, MainActivity.class); - changeAccount.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - activity.startActivity(changeAccount); - } else { //The account was logged out - Intent intent = new Intent(activity, LoginActivity.class); - intent.putExtra("instance", accountChoice.getInstance()); - intent.putExtra("social", accountChoice.getSocial()); - activity.startActivity(intent); - } + subActionButtonAcc.setOnClickListener(v -> { + if (!accountChoice.getToken().equals("null")) { + SharedPreferences.Editor editor = sharedpreferences.edit(); + editor.putString(Helper.PREF_KEY_OAUTH_TOKEN, accountChoice.getToken()); + editor.putString(Helper.PREF_KEY_ID, accountChoice.getId()); + editor.putString(Helper.PREF_INSTANCE, accountChoice.getInstance().trim()); + editor.putBoolean(Helper.PREF_IS_MODERATOR, accountChoice.isModerator()); + editor.putBoolean(Helper.PREF_IS_ADMINISTRATOR, accountChoice.isAdmin()); + editor.commit(); + if (accountChoice.getSocial() != null && accountChoice.getSocial().equals("PEERTUBE")) + Toasty.info(activity, activity.getString(R.string.toast_account_changed, "@" + accountChoice.getAcct()), Toast.LENGTH_LONG).show(); + else + Toasty.info(activity, activity.getString(R.string.toast_account_changed, "@" + accountChoice.getUsername() + "@" + accountChoice.getInstance()), Toast.LENGTH_LONG).show(); + Intent changeAccount = new Intent(activity, MainActivity.class); + changeAccount.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); + activity.startActivity(changeAccount); + } else { //The account was logged out + Intent intent = new Intent(activity, LoginActivity.class); + intent.putExtra("instance", accountChoice.getInstance()); + intent.putExtra("social", accountChoice.getSocial()); + activity.startActivity(intent); } }); actionMenuAccBuilder.addSubActionView(subActionButtonAcc); @@ -2065,49 +1902,40 @@ public class Helper { if (accounts.size() > 2) { actionButtonAcc.setFocusableInTouchMode(true); actionButtonAcc.setFocusable(true); - actionButtonAcc.setOnTouchListener(new View.OnTouchListener() { - @Override - public boolean onTouch(View v, MotionEvent event) { - if (actionMenuAcc.isOpen()) - actionMenuAcc.close(true); - else - actionMenuAcc.open(true); - return false; - } + actionButtonAcc.setOnTouchListener((v, event) -> { + if (actionMenuAcc.isOpen()) + actionMenuAcc.close(true); + else + actionMenuAcc.open(true); + return false; }); - actionButtonAcc.setOnFocusChangeListener(new View.OnFocusChangeListener() { - @Override - public void onFocusChange(View v, boolean hasFocus) { - try { - actionMenuAcc.close(true); - } catch (Exception ignored) { - } - + actionButtonAcc.setOnFocusChangeListener((v, hasFocus) -> { + try { + actionMenuAcc.close(true); + } catch (Exception ignored) { } + }); } else { - actionButtonAcc.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - for (final Account accountChoice : accounts) { - if (!currrentUserId.equals(accountChoice.getId())) { - if (!accountChoice.getToken().equals("null")) { - SharedPreferences.Editor editor = sharedpreferences.edit(); - editor.putString(Helper.PREF_KEY_OAUTH_TOKEN, accountChoice.getToken()); - editor.putString(Helper.PREF_KEY_ID, accountChoice.getId()); - editor.putString(Helper.PREF_INSTANCE, accountChoice.getInstance().trim()); - editor.putBoolean(Helper.PREF_IS_MODERATOR, accountChoice.isModerator()); - editor.putBoolean(Helper.PREF_IS_ADMINISTRATOR, accountChoice.isAdmin()); - editor.commit(); - Intent changeAccount = new Intent(activity, MainActivity.class); - changeAccount.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - activity.startActivity(changeAccount); - } else { //The account was logged out - Intent intent = new Intent(activity, LoginActivity.class); - intent.putExtra("instance", accountChoice.getInstance()); - intent.putExtra("social", accountChoice.getSocial()); - activity.startActivity(intent); - } + actionButtonAcc.setOnClickListener(v -> { + for (final Account accountChoice : accounts) { + if (!currrentUserId.equals(accountChoice.getId())) { + if (!accountChoice.getToken().equals("null")) { + SharedPreferences.Editor editor = sharedpreferences.edit(); + editor.putString(Helper.PREF_KEY_OAUTH_TOKEN, accountChoice.getToken()); + editor.putString(Helper.PREF_KEY_ID, accountChoice.getId()); + editor.putString(Helper.PREF_INSTANCE, accountChoice.getInstance().trim()); + editor.putBoolean(Helper.PREF_IS_MODERATOR, accountChoice.isModerator()); + editor.putBoolean(Helper.PREF_IS_ADMINISTRATOR, accountChoice.isAdmin()); + editor.commit(); + Intent changeAccount = new Intent(activity, MainActivity.class); + changeAccount.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); + activity.startActivity(changeAccount); + } else { //The account was logged out + Intent intent = new Intent(activity, LoginActivity.class); + intent.putExtra("instance", accountChoice.getInstance()); + intent.putExtra("social", accountChoice.getSocial()); + activity.startActivity(intent); } } } @@ -2132,9 +1960,6 @@ public class Helper { if (urlHeader.startsWith("/")) { urlHeader = Helper.getLiveInstanceWithProtocol(activity) + account.getHeader(); } - ImageView owner_accounts = headerLayout.findViewById(R.id.owner_accounts); - ImageView header_option_info = headerLayout.findViewById(R.id.header_option_info); - ImageView header_option_menu = headerLayout.findViewById(R.id.header_option_menu); if (!urlHeader.contains("missing.png")) { ImageView backgroundImage = headerLayout.findViewById(R.id.back_ground_image); Glide.with(activity) @@ -2181,7 +2006,7 @@ public class Helper { long length = 0; if (directory == null || directory.length() == 0) return -1; - for (File file : directory.listFiles()) { + for (File file : Objects.requireNonNull(directory.listFiles())) { if (file.isFile()) { try { length += file.length(); @@ -2200,6 +2025,7 @@ public class Helper { public static boolean deleteDir(File dir) { if (dir != null && dir.isDirectory()) { String[] children = dir.list(); + assert children != null; for (String aChildren : children) { if (!aChildren.equals("databases") && !aChildren.equals("shared_prefs")) { boolean success = deleteDir(new File(dir, aChildren)); @@ -2226,13 +2052,13 @@ public class Helper { SpannableString spannableString; - fullContent = Helper.shortnameToUnicode(fullContent, true); + fullContent = Helper.shortnameToUnicode(fullContent); SpannableString spannableStringT = new SpannableString(fullContent); - Pattern aLink = Pattern.compile("(<\\s?a\\s?href=\"https?:\\/\\/([\\da-z\\.-]+\\.[a-z\\.]{2,10})\\/(@[\\/\\w._-]*)\"\\s?[^.]*<\\s?\\/\\s?a\\s?>)"); + Pattern aLink = Pattern.compile("(<\\s?a\\s?href=\"https?://([\\da-z.-]+\\.[a-z.]{2,10})/(@[/\\w._-]*)\"\\s?[^.]*<\\s?/\\s?a\\s?>)"); Matcher matcherALink = aLink.matcher(spannableStringT.toString()); ArrayList accountsMentionUnknown = new ArrayList<>(); while (matcherALink.find()) { - String acct = matcherALink.group(3).replace("@", ""); + String acct = Objects.requireNonNull(matcherALink.group(3)).replace("@", ""); String instance = matcherALink.group(2); Account account = new Account(); account.setAcct(acct); @@ -2242,14 +2068,11 @@ public class Helper { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) spannableString = new SpannableString(Html.fromHtml(spannableStringT.toString(), Html.TO_HTML_PARAGRAPH_LINES_INDIVIDUAL)); else - //noinspection deprecation spannableString = new SpannableString(Html.fromHtml(spannableStringT.toString())); URLSpan[] urls = spannableString.getSpans(0, spannableString.length(), URLSpan.class); for (URLSpan span : urls) spannableString.removeSpan(span); - SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); Matcher matcher; if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) matcher = Patterns.WEB_URL.matcher(spannableString); @@ -2291,7 +2114,7 @@ public class Helper { if (matchEnd <= spannableString.toString().length() && matchEnd >= matchStart) spannableString.setSpan(new ClickableSpan() { @Override - public void onClick(View textView) { + public void onClick(@NonNull View textView) { Intent intent = new Intent(context, HashTagActivity.class); Bundle b = new Bundle(); b.putString("tag", tag.substring(1)); @@ -2561,7 +2384,6 @@ public class Helper { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { current = context.getResources().getConfiguration().getLocales().get(0); } else { - //noinspection deprecation current = context.getResources().getConfiguration().locale; } locale = current.toString(); @@ -2596,8 +2418,10 @@ public class Helper { Date newDateD = formatter.parse(newDate); Date dateRefD = formatter.parse(dateRef); if (shouldBeGreater) { + assert newDateD != null; return (newDateD.after(dateRefD)); } else { + assert newDateD != null; return (newDateD.before(dateRefD)); } } catch (java.text.ParseException e) { @@ -2851,7 +2675,7 @@ public class Helper { * @param serializedArray String serialized array * @return List list */ - public static List restoreArrayFromString(String serializedArray) { + public static List restoreArrayFromString(String serializedArray) { Gson gson = new Gson(); try { return gson.fromJson(serializedArray, List.class); @@ -3203,7 +3027,7 @@ public class Helper { int hour = pTime / 3600; int min = (pTime - (hour * 3600)) / 60; int sec = pTime - (hour * 3600) - (min * 60); - String strHour = "0", strMin = "0", strSec = "0"; + String strHour = "0", strMin = "0", strSec; if (hour > 0) strHour = String.format(Locale.getDefault(), "%02d", hour); @@ -3234,14 +3058,14 @@ public class Helper { .asDrawable() .load(url) .thumbnail(0.1f) - .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(10))) + .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(10))) .into(imageView); } else { Glide.with(imageView.getContext()) .asGif() .load(url) .thumbnail(0.1f) - .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(10))) + .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(10))) .into(imageView); } } catch (Exception e) { @@ -3250,19 +3074,19 @@ public class Helper { Glide.with(imageView.getContext()) .asDrawable() .load(R.drawable.missing) - .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(10))) + .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(10))) .into(imageView); } else if (MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE) { Glide.with(imageView.getContext()) .asDrawable() .load(R.drawable.missing_peertube) - .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(10))) + .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(10))) .into(imageView); } else if (MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.GNU || MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.FRIENDICA) { Glide.with(imageView.getContext()) .asDrawable() .load(R.drawable.gnu_default_avatar) - .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(10))) + .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(10))) .into(imageView); } } catch (Exception ignored) { @@ -3287,7 +3111,7 @@ public class Helper { .asBitmap() .load(url) .thumbnail(0.1f) - .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(10))) + .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(10))) .into(imageView); } catch (Exception e) { try { @@ -3295,19 +3119,19 @@ public class Helper { Glide.with(imageView.getContext()) .asDrawable() .load(R.drawable.missing) - .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(10))) + .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(10))) .into(imageView); } else if (MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE) { Glide.with(imageView.getContext()) .asDrawable() .load(R.drawable.missing_peertube) - .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(10))) + .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(10))) .into(imageView); } else if (MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.GNU || MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.FRIENDICA) { Glide.with(imageView.getContext()) .asDrawable() .load(R.drawable.gnu_default_avatar) - .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(10))) + .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(10))) .into(imageView); } } catch (Exception ignored) { @@ -3318,7 +3142,7 @@ public class Helper { Glide.with(imageView.getContext()) .load(url) .thumbnail(0.1f) - .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(10))) + .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(10))) .into(imageView); } catch (Exception e) { try { @@ -3326,19 +3150,19 @@ public class Helper { Glide.with(imageView.getContext()) .asDrawable() .load(R.drawable.missing) - .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(10))) + .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(10))) .into(imageView); } else if (MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE) { Glide.with(imageView.getContext()) .asDrawable() .load(R.drawable.missing_peertube) - .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(10))) + .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(10))) .into(imageView); } else if (MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.GNU || MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.FRIENDICA) { Glide.with(imageView.getContext()) .asDrawable() .load(R.drawable.gnu_default_avatar) - .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(10))) + .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(10))) .into(imageView); } } catch (Exception ignored) { @@ -3454,8 +3278,8 @@ public class Helper { try { MediaMetadataRetriever retriever = new MediaMetadataRetriever(); retriever.setDataSource(getRealPathFromURI(context, uriFile)); - int width = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH)); - int height = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT)); + int width = Integer.parseInt(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH)); + int height = Integer.parseInt(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT)); retriever.release(); int newHeight = height; if (width > DEFAULT_VIDEO_WIDTH) { @@ -3549,8 +3373,8 @@ public class Helper { try { MediaMetadataRetriever retriever = new MediaMetadataRetriever(); retriever.setDataSource(getRealPathFromURI(context, uriFile)); - int width = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH)); - int height = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT)); + int width = Integer.parseInt(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH)); + int height = Integer.parseInt(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT)); retriever.release(); int newHeight = height; if (width > DEFAULT_VIDEO_WIDTH) { @@ -3598,6 +3422,7 @@ public class Helper { return bs; } + @SuppressLint("Recycle") public static String getRealPathFromURI(Context context, Uri uri) throws URISyntaxException { String selection = null; String[] selectionArgs = null; @@ -3610,7 +3435,7 @@ public class Helper { } else if (isDownloadsDocument(uri)) { final String id = DocumentsContract.getDocumentId(uri); uri = ContentUris.withAppendedId( - Uri.parse("content://downloads/public_downloads"), Long.valueOf(id)); + Uri.parse("content://downloads/public_downloads"), Long.parseLong(id)); } else if (isMediaDocument(uri)) { final String docId = DocumentsContract.getDocumentId(uri); final String[] split = docId.split(":"); @@ -3638,10 +3463,11 @@ public class Helper { String[] projection = { MediaStore.Images.Media.DATA }; - Cursor cursor = null; + Cursor cursor; try { cursor = context.getContentResolver() .query(uri, projection, selection, selectionArgs, null); + assert cursor != null; int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); if (cursor.moveToFirst()) { return cursor.getString(column_index); @@ -3759,9 +3585,9 @@ public class Helper { int totalCurrent = 0; ArrayList reply = new ArrayList<>(); int index = 0; - for (int i = 0; i < splitContent.length; i++) { - if ((totalCurrent + splitContent[i].length() + 1) < maxCharsPerMessage) { - totalCurrent += (splitContent[i].length() + 1); + for (String s : splitContent) { + if ((totalCurrent + s.length() + 1) < maxCharsPerMessage) { + totalCurrent += (s.length() + 1); } else { if (content.length() > totalCurrent && totalCurrent > 0) { String tempContent = content.substring(0, (totalCurrent)); @@ -3769,7 +3595,7 @@ public class Helper { reply.add(index, tempContent); index++; - totalCurrent = splitContent[i].length() + 1; + totalCurrent = s.length() + 1; } } } @@ -3914,92 +3740,10 @@ public class Helper { } } - /** - * It's important to set overflowDescription atribute in styles, so we can grab the reference - * to the overflow icon. Check: res/values/styles.xml - * - * @param activity - * @param colorFilter - */ - private static void setOverflowButtonColor(final Activity activity, final PorterDuffColorFilter colorFilter) { - @SuppressLint("PrivateResource") final String overflowDescription = activity.getString(R.string.abc_action_menu_overflow_description); - final ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView(); - final ViewTreeObserver viewTreeObserver = decorView.getViewTreeObserver(); - viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { - @Override - public void onGlobalLayout() { - final ArrayList outViews = new ArrayList<>(); - decorView.findViewsWithText(outViews, overflowDescription, - View.FIND_VIEWS_WITH_CONTENT_DESCRIPTION); - if (outViews.isEmpty()) { - return; - } - androidx.appcompat.widget.AppCompatImageView overflow = (androidx.appcompat.widget.AppCompatImageView) outViews.get(0); - overflow.setColorFilter(colorFilter); - removeOnGlobalLayoutListener(decorView, this); - } - }); - } private static void removeOnGlobalLayoutListener(View v, ViewTreeObserver.OnGlobalLayoutListener listener) { v.getViewTreeObserver().removeOnGlobalLayoutListener(listener); } - - public static String getLocalesTwoChars(int stringLocaleId) { - switch (stringLocaleId) { - case R.string.default_language: - return Locale.getDefault().getLanguage(); - case R.string.english: - return "en"; - case R.string.french: - return "fr"; - case R.string.arabic: - return "ar"; - case R.string.kabyle: - return "kab"; - case R.string.italian: - return "it"; - case R.string.catalan: - return "ca"; - case R.string.german: - return "de"; - case R.string.spanish: - return "es"; - case R.string.welsh: - return "cy"; - case R.string.polish: - return "pl"; - case R.string.traditional_chinese: - return "zh-TW"; - case R.string.simplified_chinese: - return "zh-CN"; - case R.string.basque: - return "eu"; - case R.string.hindi: - return "hi"; - case R.string.japanese: - return "ja"; - case R.string.dutch: - return "nl"; - case R.string.galician: - return "gl"; - case R.string.greek: - return "el"; - case R.string.portuguese: - return "pt"; - case R.string.serbian: - return "sr"; - case R.string.ukrainian: - return "uk"; - case R.string.russian: - return "ru"; - case R.string.norwegian: - return "no"; - default: - return Locale.getDefault().getLanguage(); - } - } - public static int languageSpinnerPosition(Context context) { SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); String defaultLocaleString = sharedpreferences.getString(Helper.SET_DEFAULT_LOCALE_NEW, "NOT_DEFINED"); @@ -4089,9 +3833,6 @@ public class Helper { return false; } - public static boolean isTablet(Context context) { - return context.getResources().getBoolean(R.bool.isTablet); - } public static String getFilePathFromURI(Context context, Uri contentUri) { //copy file and send new file path @@ -4108,6 +3849,7 @@ public class Helper { if (uri == null) return null; String fileName = null; String path = uri.getPath(); + assert path != null; int cut = path.lastIndexOf('/'); if (cut != -1) { fileName = path.substring(cut + 1); @@ -4145,18 +3887,6 @@ public class Helper { } - public static T getKeyByValue(Map map, E value) { - for (Map.Entry entry : map.entrySet()) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - if (Objects.equals(value, entry.getValue())) { - return entry.getKey(); - } - } - } - return null; - } - - public static void download(Context context, String file, String url) { @@ -4250,8 +3980,8 @@ public class Helper { /** * Download from Glid cache * - * @param context - * @param url + * @param context Context + * @param url String */ public static void manageMove(Context context, String url, boolean share) { Glide.with(context) @@ -4268,9 +3998,10 @@ public class Helper { /** * Notify after moving a file from Glide cache * - * @param context - * @param url - * @param sourceFile + * @param context Context + * @param url String + * @param sourceFile File + * @param share boolean */ private static void notifyDownload(Context context, String url, File sourceFile, boolean share) { @@ -4310,9 +4041,7 @@ public class Helper { shareIntent.setType(mime); try { context.startActivity(shareIntent); - } catch (Exception ignored) { - ignored.printStackTrace(); - } + } catch (Exception ignored) {} } } catch (Throwable e) { e.printStackTrace(); @@ -4447,7 +4176,7 @@ public class Helper { return client; } - public static void exportInstanceBlock(Context context, String username) { + public static void exportInstanceBlock(Context context) { String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.ENGLISH).format(new Date()); String backupDBPath = "instance_mute_" + timeStamp + ".csv"; @@ -4501,66 +4230,58 @@ public class Helper { scrollView.addView(linearLayout_main); dialogBuilder.setView(scrollView); HashMap domainBlocked = new HashMap<>(); - dialogBuilder.setPositiveButton(R.string.validate, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int id) { - for (int i = 0; i < linearLayout_main.getChildCount(); i++) { - LinearLayout linearLayout = (LinearLayout) linearLayout_main.getChildAt(i); - CheckBox checkBox = linearLayout.findViewById(R.id.popup_domain); - EditText editText = linearLayout.findViewById(R.id.popup_comment); - if (checkBox.isChecked()) { - String comment = null; - String domain = checkBox.getText().toString().trim(); - if (editText.getText() != null) { - comment = editText.getText().toString().trim(); - } - domainBlocked.put(domain, comment); + dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> { + for (int i = 0; i < linearLayout_main.getChildCount(); i++) { + LinearLayout linearLayout = (LinearLayout) linearLayout_main.getChildAt(i); + CheckBox checkBox = linearLayout.findViewById(R.id.popup_domain); + EditText editText = linearLayout.findViewById(R.id.popup_comment); + if (checkBox.isChecked()) { + String comment = null; + String domain = checkBox.getText().toString().trim(); + if (editText.getText() != null) { + comment = editText.getText().toString().trim(); } + domainBlocked.put(domain, comment); } - if (domainBlocked.size() > 0) { - new Thread() { - public void run() { - try { + } + if (domainBlocked.size() > 0) { + new Thread() { + public void run() { + try { - FileWriter fw = new FileWriter(filename); - fw.append("INSTANCE"); + FileWriter fw = new FileWriter(filename); + fw.append("INSTANCE"); + fw.append(','); + fw.append("COMMENT"); + fw.append('\n'); + Iterator it = domainBlocked.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry pair = (Map.Entry) it.next(); + fw.append((String) pair.getKey()); fw.append(','); - fw.append("COMMENT"); + fw.append((String) pair.getValue()); fw.append('\n'); - Iterator it = domainBlocked.entrySet().iterator(); - while (it.hasNext()) { - Map.Entry pair = (Map.Entry) it.next(); - fw.append((String) pair.getKey()); - fw.append(','); - fw.append((String) pair.getValue()); - fw.append('\n'); - it.remove(); - } - fw.close(); - } catch (Exception ignored) { + it.remove(); } - final Intent intent = new Intent(); - intent.setAction(android.content.Intent.ACTION_VIEW); - Uri uri = Uri.fromFile(new File(filename)); - intent.setDataAndType(uri, "text/csv"); - SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); - String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); - String instance = sharedpreferences.getString(Helper.PREF_INSTANCE, Helper.getLiveInstance(context)); - Account account = new AccountDAO(context, db).getUniqAccount(userId, instance); - Helper.notify_user(context, account, intent, BitmapFactory.decodeResource(context.getResources(), - R.mipmap.ic_launcher_bubbles), Helper.NotifType.STORE, context.getString(R.string.muted_instance_exported), context.getString(R.string.download_from, backupDBPath)); + fw.close(); + } catch (Exception ignored) { } - }.start(); - } - dialog.dismiss(); - } - }); - dialogBuilder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int id) { - dialog.dismiss(); + final Intent intent = new Intent(); + intent.setAction(Intent.ACTION_VIEW); + Uri uri = Uri.fromFile(new File(filename)); + intent.setDataAndType(uri, "text/csv"); + SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); + String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); + String instance = sharedpreferences.getString(Helper.PREF_INSTANCE, Helper.getLiveInstance(context)); + Account account = new AccountDAO(context, db).getUniqAccount(userId, instance); + Helper.notify_user(context, account, intent, BitmapFactory.decodeResource(context.getResources(), + R.mipmap.ic_launcher_bubbles), NotifType.STORE, context.getString(R.string.muted_instance_exported), context.getString(R.string.download_from, backupDBPath)); + } + }.start(); } + dialog.dismiss(); }); + dialogBuilder.setNegativeButton(R.string.cancel, (dialog, id) -> dialog.dismiss()); AlertDialog alertDialog = dialogBuilder.create(); alertDialog.show(); } @@ -4605,43 +4326,35 @@ public class Helper { scrollView.addView(linearLayout_main); dialogBuilder.setView(scrollView); HashMap domainBlocked = new HashMap<>(); - dialogBuilder.setPositiveButton(R.string.validate, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int id) { - for (int i = 0; i < linearLayout_main.getChildCount(); i++) { - LinearLayout linearLayout = (LinearLayout) linearLayout_main.getChildAt(i); - CheckBox checkBox = linearLayout.findViewById(R.id.popup_domain); - if (checkBox.isChecked()) { - String domain = checkBox.getText().toString().trim(); - domainBlocked.put(domain, null); - } + dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> { + for (int i = 0; i < linearLayout_main.getChildCount(); i++) { + LinearLayout linearLayout = (LinearLayout) linearLayout_main.getChildAt(i); + CheckBox checkBox = linearLayout.findViewById(R.id.popup_domain); + if (checkBox.isChecked()) { + String domain = checkBox.getText().toString().trim(); + domainBlocked.put(domain, null); } - if (domainBlocked.size() > 0) { - new Thread() { - public void run() { - Iterator it = domainBlocked.entrySet().iterator(); - while (it.hasNext()) { - Map.Entry pair = (Map.Entry) it.next(); - try { - sleep(200); - } catch (InterruptedException e) { - e.printStackTrace(); - } - new PostActionAsyncTask(context, API.StatusAction.BLOCK_DOMAIN, pair.getKey().toString().trim(), ((MutedInstanceActivity) context)).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - it.remove(); + } + if (domainBlocked.size() > 0) { + new Thread() { + public void run() { + Iterator it1 = domainBlocked.entrySet().iterator(); + while (it1.hasNext()) { + Map.Entry pair = (Map.Entry) it1.next(); + try { + sleep(200); + } catch (InterruptedException e) { + e.printStackTrace(); } + new PostActionAsyncTask(context, API.StatusAction.BLOCK_DOMAIN, pair.getKey().toString().trim(), ((MutedInstanceActivity) context)).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + it1.remove(); } - }.start(); - } - dialog.dismiss(); - } - }); - dialogBuilder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int id) { - dialog.dismiss(); + } + }.start(); } + dialog.dismiss(); }); + dialogBuilder.setNegativeButton(R.string.cancel, (dialog, id) -> dialog.dismiss()); AlertDialog alertDialog = dialogBuilder.create(); alertDialog.show(); @@ -4661,10 +4374,6 @@ public class Helper { @Override protected void onPostExecute(List domains) { - if (domains == null) { - return; - } - } }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); @@ -4774,7 +4483,6 @@ public class Helper { NONE } - public enum NotifType { FOLLLOW, MENTION, @@ -4786,10 +4494,6 @@ public class Helper { TOOT } - public enum MediaType { - MEDIA, - PROFILE - } public static class CacheTask extends AsyncTask { private float cacheSize; @@ -4834,54 +4538,45 @@ public class Helper { final SwitchCompat clean_all = dialogView.findViewById(R.id.clean_all); final float finalCacheSize = cacheSize; builder - .setPositiveButton(R.string.clear, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - // continue with delete - AsyncTask.execute(new Runnable() { - @Override - public void run() { - try { - String path = contextReference.get().getCacheDir().getParentFile().getPath(); - File dir = new File(path); - if (dir.isDirectory()) { - Helper.deleteDir(dir); - } - SQLiteDatabase db = Sqlite.getInstance(contextReference.get(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); - new StatusCacheDAO(contextReference.get(), db).removeDuplicate(); - if (clean_all.isChecked()) { - if (cache_timeline.isChecked()) { - new TimelineCacheDAO(contextReference.get(), db).removeAll(); - } - if (cache_owntoots.isChecked()) { - new StatusCacheDAO(contextReference.get(), db).removeAll(ARCHIVE_CACHE); - } - if (cache_bookmarks.isChecked()) { - new StatusCacheDAO(contextReference.get(), db).removeAll(BOOKMARK_CACHE); - } - } else { - if (cache_timeline.isChecked()) { - new TimelineCacheDAO(contextReference.get(), db).removeAllConnected(); - } - if (cache_owntoots.isChecked()) { - new StatusCacheDAO(contextReference.get(), db).removeAllStatus(ARCHIVE_CACHE); - } - if (cache_bookmarks.isChecked()) { - new StatusCacheDAO(contextReference.get(), db).removeAllStatus(BOOKMARK_CACHE); - } - } - } catch (Exception ignored) { + .setPositiveButton(R.string.clear, (dialog, which) -> { + // continue with delete + AsyncTask.execute(() -> { + try { + String path = Objects.requireNonNull(contextReference.get().getCacheDir().getParentFile()).getPath(); + File dir = new File(path); + if (dir.isDirectory()) { + Helper.deleteDir(dir); + } + SQLiteDatabase db = Sqlite.getInstance(contextReference.get(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); + new StatusCacheDAO(contextReference.get(), db).removeDuplicate(); + if (clean_all.isChecked()) { + if (cache_timeline.isChecked()) { + new TimelineCacheDAO(contextReference.get(), db).removeAll(); + } + if (cache_owntoots.isChecked()) { + new StatusCacheDAO(contextReference.get(), db).removeAll(ARCHIVE_CACHE); + } + if (cache_bookmarks.isChecked()) { + new StatusCacheDAO(contextReference.get(), db).removeAll(BOOKMARK_CACHE); + } + } else { + if (cache_timeline.isChecked()) { + new TimelineCacheDAO(contextReference.get(), db).removeAllConnected(); + } + if (cache_owntoots.isChecked()) { + new StatusCacheDAO(contextReference.get(), db).removeAllStatus(ARCHIVE_CACHE); + } + if (cache_bookmarks.isChecked()) { + new StatusCacheDAO(contextReference.get(), db).removeAllStatus(BOOKMARK_CACHE); } } - }); - Toasty.success(contextReference.get(), contextReference.get().getString(R.string.toast_cache_clear, String.format("%s %s", String.format(Locale.getDefault(), "%.2f", finalCacheSize), contextReference.get().getString(R.string.cache_units))), Toast.LENGTH_LONG).show(); - dialog.dismiss(); - } - }) - .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - } + } catch (Exception ignored) { + } + }); + Toasty.success(contextReference.get(), contextReference.get().getString(R.string.toast_cache_clear, String.format("%s %s", String.format(Locale.getDefault(), "%.2f", finalCacheSize), contextReference.get().getString(R.string.cache_units))), Toast.LENGTH_LONG).show(); + dialog.dismiss(); }) + .setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss()) .setIcon(android.R.drawable.ic_dialog_alert) .show(); } diff --git a/app/src/main/java/app/fedilab/android/jobs/NotificationsSyncJob.java b/app/src/main/java/app/fedilab/android/jobs/NotificationsSyncJob.java index 0f4b0d76f..19648c6f6 100644 --- a/app/src/main/java/app/fedilab/android/jobs/NotificationsSyncJob.java +++ b/app/src/main/java/app/fedilab/android/jobs/NotificationsSyncJob.java @@ -196,7 +196,7 @@ public class NotificationsSyncJob extends Job { if (notificationUrl == null) { notificationUrl = notification.getAccount().getAvatar(); if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - title = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), getContext().getString(R.string.notif_mention)); + title = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), getContext().getString(R.string.notif_mention)); else title = String.format("@%s %s", notification.getAccount().getAcct(), getContext().getString(R.string.notif_mention)); } @@ -209,7 +209,7 @@ public class NotificationsSyncJob extends Job { if (notificationUrl == null) { notificationUrl = notification.getAccount().getAvatar(); if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - title = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), getContext().getString(R.string.notif_reblog)); + title = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), getContext().getString(R.string.notif_reblog)); else title = String.format("@%s %s", notification.getAccount().getAcct(), getContext().getString(R.string.notif_reblog)); @@ -223,7 +223,7 @@ public class NotificationsSyncJob extends Job { if (notificationUrl == null) { notificationUrl = notification.getAccount().getAvatar(); if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - title = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), getContext().getString(R.string.notif_favourite)); + title = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), getContext().getString(R.string.notif_favourite)); else title = String.format("@%s %s", notification.getAccount().getAcct(), getContext().getString(R.string.notif_favourite)); } @@ -236,7 +236,7 @@ public class NotificationsSyncJob extends Job { if (notificationUrl == null) { notificationUrl = notification.getAccount().getAvatar(); if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - title = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), getContext().getString(R.string.notif_follow_request)); + title = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), getContext().getString(R.string.notif_follow_request)); else title = String.format("@%s %s", notification.getAccount().getAcct(), getContext().getString(R.string.notif_follow_request)); targeted_account = notification.getAccount().getId(); @@ -250,7 +250,7 @@ public class NotificationsSyncJob extends Job { if (notificationUrl == null) { notificationUrl = notification.getAccount().getAvatar(); if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - title = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), getContext().getString(R.string.notif_follow)); + title = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), getContext().getString(R.string.notif_follow)); else title = String.format("@%s %s", notification.getAccount().getAcct(), getContext().getString(R.string.notif_follow)); targeted_account = notification.getAccount().getId(); diff --git a/app/src/main/java/app/fedilab/android/services/LiveNotificationDelayedService.java b/app/src/main/java/app/fedilab/android/services/LiveNotificationDelayedService.java index 0e1d01d60..f16f31ffa 100644 --- a/app/src/main/java/app/fedilab/android/services/LiveNotificationDelayedService.java +++ b/app/src/main/java/app/fedilab/android/services/LiveNotificationDelayedService.java @@ -340,7 +340,7 @@ public class LiveNotificationDelayedService extends Service { notifType = Helper.NotifType.MENTION; if (notif_mention) { if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), getString(R.string.notif_mention)); + message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), getString(R.string.notif_mention)); else message = String.format("@%s %s", notification.getAccount().getAcct(), getString(R.string.notif_mention)); if (notification.getStatus() != null) { @@ -364,7 +364,7 @@ public class LiveNotificationDelayedService extends Service { notifType = Helper.NotifType.BOOST; if (notif_share) { if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), getString(R.string.notif_reblog)); + message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), getString(R.string.notif_reblog)); else message = String.format("@%s %s", notification.getAccount().getAcct(), getString(R.string.notif_reblog)); } else { @@ -375,7 +375,7 @@ public class LiveNotificationDelayedService extends Service { notifType = Helper.NotifType.FAV; if (notif_add) { if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), getString(R.string.notif_favourite)); + message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), getString(R.string.notif_favourite)); else message = String.format("@%s %s", notification.getAccount().getAcct(), getString(R.string.notif_favourite)); } else { @@ -386,7 +386,7 @@ public class LiveNotificationDelayedService extends Service { notifType = Helper.NotifType.FOLLLOW; if (notif_follow) { if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), getString(R.string.notif_follow_request)); + message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), getString(R.string.notif_follow_request)); else message = String.format("@%s %s", notification.getAccount().getAcct(), getString(R.string.notif_follow_request)); targeted_account = notification.getAccount().getId(); @@ -398,7 +398,7 @@ public class LiveNotificationDelayedService extends Service { notifType = Helper.NotifType.FOLLLOW; if (notif_follow) { if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), getString(R.string.notif_follow)); + message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), getString(R.string.notif_follow)); else message = String.format("@%s %s", notification.getAccount().getAcct(), getString(R.string.notif_follow)); targeted_account = notification.getAccount().getId(); diff --git a/app/src/main/java/app/fedilab/android/services/LiveNotificationService.java b/app/src/main/java/app/fedilab/android/services/LiveNotificationService.java index 54b7d6f94..b1c92dee8 100644 --- a/app/src/main/java/app/fedilab/android/services/LiveNotificationService.java +++ b/app/src/main/java/app/fedilab/android/services/LiveNotificationService.java @@ -376,7 +376,7 @@ public class LiveNotificationService extends Service implements NetworkStateRece notifType = Helper.NotifType.MENTION; if (notif_mention) { if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), getString(R.string.notif_mention)); + message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), getString(R.string.notif_mention)); else message = String.format("@%s %s", notification.getAccount().getAcct(), getString(R.string.notif_mention)); if (notification.getStatus() != null) { @@ -400,7 +400,7 @@ public class LiveNotificationService extends Service implements NetworkStateRece notifType = Helper.NotifType.BOOST; if (notif_share) { if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), getString(R.string.notif_reblog)); + message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), getString(R.string.notif_reblog)); else message = String.format("@%s %s", notification.getAccount().getAcct(), getString(R.string.notif_reblog)); } else { @@ -411,7 +411,7 @@ public class LiveNotificationService extends Service implements NetworkStateRece notifType = Helper.NotifType.FAV; if (notif_add) { if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), getString(R.string.notif_favourite)); + message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), getString(R.string.notif_favourite)); else message = String.format("@%s %s", notification.getAccount().getAcct(), getString(R.string.notif_favourite)); } else { @@ -422,7 +422,7 @@ public class LiveNotificationService extends Service implements NetworkStateRece notifType = Helper.NotifType.FOLLLOW; if (notif_follow) { if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), getString(R.string.notif_follow_request)); + message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), getString(R.string.notif_follow_request)); else message = String.format("@%s %s", notification.getAccount().getAcct(), getString(R.string.notif_follow_request)); targeted_account = notification.getAccount().getId(); @@ -434,7 +434,7 @@ public class LiveNotificationService extends Service implements NetworkStateRece notifType = Helper.NotifType.FOLLLOW; if (notif_follow) { if (notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0) - message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true), getString(R.string.notif_follow)); + message = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name()), getString(R.string.notif_follow)); else message = String.format("@%s %s", notification.getAccount().getAcct(), getString(R.string.notif_follow)); targeted_account = notification.getAccount().getId();