Compare commits

..

1 Commits

Author SHA1 Message Date
link2xt
d7987dbad3 ci: use --locked flag with cargo build 2026-05-15 03:16:09 +02:00
5 changed files with 21 additions and 26 deletions

View File

@@ -183,7 +183,7 @@ jobs:
cache-bin: false
- name: Build C library
run: cargo build -p deltachat_ffi
run: cargo build -p deltachat_ffi --locked
- name: Upload C library
uses: actions/upload-artifact@v7
@@ -212,7 +212,7 @@ jobs:
cache-bin: false
- name: Build deltachat-rpc-server
run: cargo build -p deltachat-rpc-server
run: cargo build -p deltachat-rpc-server --locked
- name: Upload deltachat-rpc-server
uses: actions/upload-artifact@v7

View File

@@ -7056,6 +7056,11 @@ void dc_event_unref(dc_event_t* event);
/// `%1$s` will be replaced by a possibly more detailed, typically english, error description.
#define DC_STR_ERROR 112
/// "Not supported by your provider."
///
/// Used in the connectivity view.
#define DC_STR_NOT_SUPPORTED_BY_PROVIDER 113
/// "Messages"
///
/// Used as a subtitle in quota context; can be plural always.

View File

@@ -3,13 +3,13 @@
use std::collections::BTreeMap;
use std::time::Duration;
use anyhow::{Context as _, Result};
use anyhow::{Context as _, Result, anyhow};
use async_imap::types::{Quota, QuotaResource};
use crate::EventType;
use crate::context::Context;
use crate::imap::session::Session as ImapSession;
use crate::tools::{self, time_elapsed};
use crate::{EventType, stock_str};
/// quota icon in connectivity is "yellow".
pub const QUOTA_WARN_THRESHOLD_PERCENTAGE: u64 = 80;
@@ -17,25 +17,13 @@ pub const QUOTA_WARN_THRESHOLD_PERCENTAGE: u64 = 80;
/// quota icon in connectivity is "red".
pub const QUOTA_ERROR_THRESHOLD_PERCENTAGE: u64 = 95;
/// [QuotaInfo] error.
#[derive(Debug, thiserror::Error)]
pub enum Error {
/// Quota info not supported by the provider
#[error("Quota info not supported by the provider")]
NotSupportedByProvider,
/// Any other error: network, parsing, etc.
#[error("{0:#}")]
Other(#[from] anyhow::Error),
}
/// Server quota information with an update timestamp.
#[derive(Debug)]
pub struct QuotaInfo {
/// Recently loaded quota information.
/// set to `Err()` if the provider does not support quota or on other errors,
/// set to `Ok()` for valid quota information.
pub(crate) recent: Result<BTreeMap<String, Vec<QuotaResource>>, Error>,
pub(crate) recent: Result<BTreeMap<String, Vec<QuotaResource>>>,
/// When the structure was modified.
pub(crate) modified: tools::Time,
@@ -88,11 +76,9 @@ impl Context {
info!(self, "Transport {transport_id}: Updating quota.");
let quota = if session.can_check_quota() {
get_unique_quota_roots_and_usage(session, folder)
.await
.map_err(Error::Other)
get_unique_quota_roots_and_usage(session, folder).await
} else {
Err(Error::NotSupportedByProvider)
Err(anyhow!(stock_str::not_supported_by_provider(self)))
};
self.quota.write().await.insert(

View File

@@ -418,11 +418,7 @@ impl Context {
};
match &quota.recent {
Err(e) => {
// If not supported by the provider,
// just skip the "quota" section.
if !matches!(e, crate::quota::Error::NotSupportedByProvider) {
ret += &escaper::encode_minimal(&e.to_string());
}
ret += &escaper::encode_minimal(&e.to_string());
}
Ok(quota) => {
if quota.is_empty() {

View File

@@ -189,6 +189,9 @@ pub enum StockMessage {
#[strum(props(fallback = "Error: %1$s"))]
Error = 112,
#[strum(props(fallback = "Not supported by your provider."))]
NotSupportedByProvider = 113,
#[strum(props(fallback = "Messages"))]
Messages = 114,
@@ -1134,6 +1137,11 @@ pub(crate) fn error(context: &Context, error: &str) -> String {
translated(context, StockMessage::Error).replace1(error)
}
/// Stock string: `Not supported by your provider.`.
pub(crate) fn not_supported_by_provider(context: &Context) -> String {
translated(context, StockMessage::NotSupportedByProvider)
}
/// Stock string: `Messages`.
/// Used as a subtitle in quota context; can be plural always.
pub(crate) fn messages(context: &Context) -> String {