diff --git a/CHANGELOG.md b/CHANGELOG.md index 50f6e1aad..785161c90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,7 +16,8 @@ * Removed padlocks, as encrypted is the default "normal" state. Instead, unencrypted email is marked with a small email / letter (✉️) icon * Classic email chats/threads get a big email / letter icon making it easy to recognize * After some time, add a device message asking to donate. Can't wait? Donate today at https://delta.chat/donate -* Update to core 2.0.0 +* Allow to sort profiles up in the profile switcher +* Update to core 2.1.0 ## v1.58.4 2025-05 diff --git a/jni/deltachat-core-rust b/jni/deltachat-core-rust index 192a6a2b9..402e42f85 160000 --- a/jni/deltachat-core-rust +++ b/jni/deltachat-core-rust @@ -1 +1 @@ -Subproject commit 192a6a2b9dd9413eb175e1c3e88b93a6b59d515a +Subproject commit 402e42f858514e5c1fbab3c88ad3d5f884009b8b diff --git a/src/main/java/com/b44t/messenger/rpc/Rpc.java b/src/main/java/com/b44t/messenger/rpc/Rpc.java index 0fc5cc82d..7bb4a76ff 100644 --- a/src/main/java/com/b44t/messenger/rpc/Rpc.java +++ b/src/main/java/com/b44t/messenger/rpc/Rpc.java @@ -164,6 +164,10 @@ public class Rpc { return gson.fromJson(getResult("create_broadcast", accountId, chatName), Integer.class); } + public void setAccountsOrder(List order) throws RpcException { + getResult("set_accounts_order", order); + } + private static class Request { private final String jsonrpc = "2.0"; public final String method; diff --git a/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java b/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java index 008760d2b..b9256b1b2 100644 --- a/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java @@ -41,6 +41,8 @@ import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.ViewUtil; +import java.util.Arrays; + public class AccountSelectionListFragment extends DialogFragment implements DcEventCenter.DcEventDelegate { private static final String TAG = AccountSelectionListFragment.class.getSimpleName(); @@ -134,9 +136,35 @@ public class AccountSelectionListFragment extends DialogFragment implements DcEv onToggleMute(accountId); } else if (itemId == R.id.menu_set_tag) { onSetTag(accountId); + } else if (itemId == R.id.menu_move_to_top) { + onMoveToTop(accountId); } } + private void onMoveToTop(int accountId) { + Activity activity = getActivity(); + if (activity == null) return; + + int[] accountIds = DcHelper.getAccounts(activity).getAll(); + Integer[] ids = new Integer[accountIds.length]; + ids[0] = accountId; + int j = 1; + for (int accId : accountIds) { + if (accId != accountId) { + ids[j++] = accId; + } + } + + Rpc rpc = DcHelper.getRpc(activity); + try { + rpc.setAccountsOrder(Arrays.asList(ids)); + } catch (RpcException e) { + Log.e(TAG, "Error calling rpc.setAccountsOrder()", e); + } + + refreshData(); + } + private void onSetTag(int accountId) { Activity activity = getActivity(); if (activity == null) return; diff --git a/src/main/res/menu/account_item_context.xml b/src/main/res/menu/account_item_context.xml index 32a27fae3..f29516dd5 100644 --- a/src/main/res/menu/account_item_context.xml +++ b/src/main/res/menu/account_item_context.xml @@ -8,6 +8,9 @@ + +