Merge remote-tracking branch 'upstream/main'

This commit is contained in:
adbenitez
2026-02-13 02:19:21 +01:00
7 changed files with 67 additions and 56 deletions
@@ -271,12 +271,6 @@ public class ConversationListItem extends RelativeLayout
} else {
deliveryStatusIndicator.setNone();
}
if (state == DcMsg.DC_STATE_OUT_FAILED) {
deliveryStatusIndicator.setTint(Color.RED);
} else {
deliveryStatusIndicator.resetTint();
}
}
int unreadCount = thread.getUnreadCount();
@@ -123,12 +123,6 @@ public class ConversationUpdateItem extends BaseConversationItem
else if (messageRecord.isPreparing()) deliveryStatusView.setPreparing();
else if (messageRecord.isPending()) deliveryStatusView.setPending();
else deliveryStatusView.setNone();
if (messageRecord.isFailed()) {
deliveryStatusView.setTint(Color.RED);
} else {
deliveryStatusView.setTint(textColor);
}
}
@Override
@@ -3,7 +3,9 @@ package org.thoughtcrime.securesms.relay;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
@@ -47,6 +49,9 @@ public class RelayListActivity extends BaseActionBarActivity
/** QR provided via Intent extras needs to be saved to pass it to QrCodeHandler when authorization finishes */
private String qrData = null;
/** Relay selected for context menu via onRelayLongClick() */
private EnteredLoginParam contextMenuRelay = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -143,14 +148,54 @@ public class RelayListActivity extends BaseActionBarActivity
}
@Override
public void onRelayEdit(EnteredLoginParam relay) {
public void onRelayLongClick(View view, EnteredLoginParam relay) {
contextMenuRelay = relay;
registerForContextMenu(view);
openContextMenu(view);
unregisterForContextMenu(view);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.relay_item_context, menu);
boolean nonNullAddr = contextMenuRelay != null && contextMenuRelay.addr != null;
boolean isMain = nonNullAddr && contextMenuRelay.addr.equals(adapter.getMainRelay());
menu.findItem(R.id.menu_delete_relay).setVisible(!isMain);
}
@Override
public void onContextMenuClosed(android.view.Menu menu) {
super.onContextMenuClosed(menu);
contextMenuRelay = null;
}
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
if (contextMenuRelay == null) return super.onContextItemSelected(item);
int itemId = item.getItemId();
if (itemId == R.id.menu_edit_relay) {
onRelayEdit(contextMenuRelay);
contextMenuRelay = null;
return true;
} else if (itemId == R.id.menu_delete_relay) {
onRelayDelete(contextMenuRelay);
contextMenuRelay = null;
return true;
}
return super.onContextItemSelected(item);
}
private void onRelayEdit(EnteredLoginParam relay) {
Intent intent = new Intent(this, EditRelayActivity.class);
intent.putExtra(EditRelayActivity.EXTRA_ADDR, relay.addr);
startActivity(intent);
}
@Override
public void onRelayDelete(EnteredLoginParam relay) {
private void onRelayDelete(EnteredLoginParam relay) {
new AlertDialog.Builder(this)
.setTitle(R.string.remove_transport)
.setMessage(getString(R.string.confirm_remove_transport, relay.addr))
@@ -25,8 +25,7 @@ public class RelayListAdapter extends RecyclerView.Adapter<RelayListAdapter.Rela
public interface OnRelayClickListener {
void onRelayClick(EnteredLoginParam relay);
void onRelayEdit(EnteredLoginParam relay);
void onRelayDelete(EnteredLoginParam relay);
void onRelayLongClick(View view, EnteredLoginParam relay);
}
public RelayListAdapter(OnRelayClickListener listener) {
@@ -67,16 +66,12 @@ public class RelayListAdapter extends RecyclerView.Adapter<RelayListAdapter.Rela
private final TextView titleText;
private final TextView subtitleText;
private final ImageView mainIndicator;
private final ImageView editButton;
private final ImageView deleteButton;
public RelayViewHolder(@NonNull View itemView) {
super(itemView);
titleText = itemView.findViewById(R.id.title);
subtitleText = itemView.findViewById(R.id.subtitle);
mainIndicator = itemView.findViewById(R.id.main_indicator);
editButton = itemView.findViewById(R.id.edit_button);
deleteButton = itemView.findViewById(R.id.delete_button);
}
public void bind(EnteredLoginParam relay, boolean isMain, OnRelayClickListener listener) {
@@ -84,7 +79,6 @@ public class RelayListAdapter extends RecyclerView.Adapter<RelayListAdapter.Rela
titleText.setText(parts.length == 2? parts[1] : parts[0]);
subtitleText.setText(parts.length == 2? parts[0] : "");
mainIndicator.setVisibility(isMain ? View.VISIBLE : View.INVISIBLE);
deleteButton.setVisibility(isMain ? View.GONE : View.VISIBLE);
itemView.setOnClickListener(v -> {
if (listener != null) {
@@ -92,16 +86,11 @@ public class RelayListAdapter extends RecyclerView.Adapter<RelayListAdapter.Rela
}
});
editButton.setOnClickListener(v -> {
itemView.setOnLongClickListener(v -> {
if (listener != null) {
listener.onRelayEdit(relay);
}
});
deleteButton.setOnClickListener(v -> {
if (listener != null) {
listener.onRelayDelete(relay);
listener.onRelayLongClick(v, relay);
}
return true;
});
}
}