diff --git a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsAdapter.java b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsAdapter.java index e3a36353..a7f99a45 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsAdapter.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/Adapters/DialogsAdapter.java @@ -1500,10 +1500,6 @@ public class DialogsAdapter extends RecyclerListView.SelectionAdapter implements return; } - if (shouldShowFoxAccountInfo()) { - itemInternals.add(new ItemInternal(VIEW_TYPE_FOX_ACCOUNT_INFO)); - } - if (!hasHints && dialogsType == 0 && folderId == 0 && messagesController.isDialogsEndReached(folderId) && !forceUpdatingContacts) { if (messagesController.getAllFoldersDialogsCount() <= 10 && ContactsController.getInstance(currentAccount).doneLoadingContacts && !ContactsController.getInstance(currentAccount).contacts.isEmpty()) { onlineContacts = new ArrayList<>(ContactsController.getInstance(currentAccount).contacts); @@ -1643,12 +1639,24 @@ public class DialogsAdapter extends RecyclerListView.SelectionAdapter implements } if (!stopUpdate) { + boolean foxInfoInserted = false; for (int k = 0; k < array.size(); k++) { if (dialogsType == DialogsActivity.DIALOGS_TYPE_ADD_USERS_TO && array.get(k) instanceof DialogsActivity.DialogsHeader) { itemInternals.add(new ItemInternal(VIEW_TYPE_HEADER_2, array.get(k))); } else { itemInternals.add(new ItemInternal(VIEW_TYPE_DIALOG, array.get(k))); } + // Insert the account-info row right after the archive folder so + // it stays pinned visible even when the archive is auto-scrolled + // out of view (the list auto-scrolls to position 1 in that case). + if (!foxInfoInserted && shouldShowFoxAccountInfo() && array.get(k) instanceof TLRPC.TL_dialogFolder) { + itemInternals.add(new ItemInternal(VIEW_TYPE_FOX_ACCOUNT_INFO)); + foxInfoInserted = true; + } + } + // No archive folder present: just pin it to the very top. + if (!foxInfoInserted && shouldShowFoxAccountInfo()) { + itemInternals.add(0, new ItemInternal(VIEW_TYPE_FOX_ACCOUNT_INFO)); } if (!forceShowEmptyCell && dialogsType != 7 && dialogsType != 8 && !MessagesController.getInstance(currentAccount).isDialogsEndReached(folderId)) { diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java index e4e66868..096f6b03 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java @@ -13613,7 +13613,11 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. phoneNumber = null; } isFragmentPhoneNumber = phoneNumber != null && phoneNumber.matches("888\\d{8}"); - detailCell.setTextAndValue(text, LocaleController.getString(isFragmentPhoneNumber ? R.string.AnonymousNumber : R.string.PhoneMobile), false); + CharSequence phoneText = text; + if (user != null && user.id == getUserConfig().getClientUserId()) { + phoneText = tw.nekomimi.nekogram.NekoConfig.formatOwnPhone(text); + } + detailCell.setTextAndValue(phoneText, LocaleController.getString(isFragmentPhoneNumber ? R.string.AnonymousNumber : R.string.PhoneMobile), false); } else if (position == noteRow) { final TLRPC.UserFull userInfo = getMessagesController().getUserFull(userId); if (userInfo == null) return; @@ -13719,9 +13723,9 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter. } } else if (position == numberRow) { TLRPC.User user = UserConfig.getInstance(currentAccount).getCurrentUser(); - String value; + CharSequence value; if (user != null && user.phone != null && user.phone.length() != 0) { - value = PhoneFormat.getInstance().format("+" + user.phone); + value = tw.nekomimi.nekogram.NekoConfig.formatOwnPhone(PhoneFormat.getInstance().format("+" + user.phone)); } else { value = LocaleController.getString(R.string.NumberUnknown); } diff --git a/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java index c13ccff1..903e0a94 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/SettingsActivity.java @@ -531,7 +531,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter titleView.setText(UserObject.getUserName(user)); final StringBuilder sb = new StringBuilder(); if (user != null) { - sb.append(PhoneFormat.getInstance().format("+" + user.phone)); + sb.append(tw.nekomimi.nekogram.NekoConfig.formatOwnPhone(PhoneFormat.getInstance().format("+" + user.phone))); } final String username = UserObject.getPublicUsername(user); if (username != null) { diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoConfig.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoConfig.java index bb01669d..a23f8290 100644 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoConfig.java +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/NekoConfig.java @@ -150,6 +150,12 @@ public class NekoConfig { public static boolean shouldNOTTrustMe = false; + // How the user's OWN phone number is presented across the app. + public static final int PHONE_SHOW = 0; + public static final int PHONE_BLUR = 1; + public static final int PHONE_HIDE = 2; + public static int hidePhoneNumber = PHONE_SHOW; + public static int userMcc = 0; private static final SharedPreferences.OnSharedPreferenceChangeListener listener = (preferences, key) -> { @@ -199,6 +205,7 @@ public class NekoConfig { askBeforeCall = preferences.getBoolean("askBeforeCall", true); shouldNOTTrustMe = preferences.getBoolean("shouldNOTTrustMe", false); disableNumberRounding = preferences.getBoolean("disableNumberRounding", false); + hidePhoneNumber = preferences.getInt("hidePhoneNumber", PHONE_SHOW); disableAppBarShadow = preferences.getBoolean("disableAppBarShadow", false); mediaPreview = preferences.getBoolean("mediaPreview", true); idType = preferences.getInt("idType", ID_TYPE_API); @@ -668,6 +675,44 @@ public class NekoConfig { editor.apply(); } + public static void setHidePhoneNumber(int mode) { + hidePhoneNumber = mode; + SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("nekoconfig", Activity.MODE_PRIVATE); + SharedPreferences.Editor editor = preferences.edit(); + editor.putInt("hidePhoneNumber", hidePhoneNumber); + editor.apply(); + } + + /** + * Transform the user's OWN already-formatted phone number according to the + * {@link #hidePhoneNumber} setting: + *