feat: Add unpublished flag for transports

This commit is contained in:
Hocuri
2026-03-15 17:36:01 +01:00
parent a7c4684b89
commit 5d3061f71d
10 changed files with 149 additions and 14 deletions

View File

@@ -528,6 +528,7 @@ impl CommandApi {
/// from a server encoded in a QR code.
/// - [Self::list_transports()] to get a list of all configured transports.
/// - [Self::delete_transport()] to remove a transport.
/// - [Self::set_transport_unpublished()] to set whether contacts see this transport.
async fn add_or_update_transport(
&self,
account_id: u32,
@@ -571,6 +572,33 @@ impl CommandApi {
ctx.delete_transport(&addr).await
}
/// Change whether the transport is unpublished.
///
/// Unpublished transports are not advertised to contacts,
/// and self-sent messages are not sent there,
/// so that we don't cause extra messages to the corresponding inbox,
/// but can still receive messages from contacts who don't know the new relay addresses yet.
///
/// The default is true, but when updating,
/// existing secondary transports are set to unpublished,
/// so that an existing transport address doesn't suddenly get spammed with a lot of messages.
async fn set_transport_unpublished(
&self,
account_id: u32,
addr: String,
unpublished: bool,
) -> Result<()> {
let ctx = self.get_context(account_id).await?;
ctx.set_transport_unpublished(&addr, unpublished).await
}
/// Check whether the transport is unpublished.
/// See [`Self::set_transport_unpublished`] / `setTransportUnpublished` for details.
async fn is_transport_unpublished(&self, account_id: u32, addr: String) -> Result<bool> {
let ctx = self.get_context(account_id).await?;
ctx.is_transport_unpublished(&addr).await
}
/// Signal an ongoing process to stop.
async fn stop_ongoing_process(&self, account_id: u32) -> Result<()> {
let ctx = self.get_context(account_id).await?;