Give the storage allowance an effect

Featurekamo-shared-library
Ya
11 Agosti 2026, 00:29 UTC
Mwandishi
Kamo
Ahadi ya
9775c73

Storage was measured across nineteen domains, nightly, with a build-failing coverage test — and nothing anywhere computed an allowance or refused a byte. The plan's storage figure was data nobody read, and the Additional Storage add-on had no product effect at all: paying changed nothing and not paying cost nothing. StorageQuotaService resolves what an organization may hold — the plan's per-user allowance pooled across its seats, plus the blocks it has bought — and ImageService refuses content that would exceed it. The check sits after the dedup lookup, so re-attaching a file the platform already holds is never refused for space; only genuinely new bytes count. It lives here rather than in BillingService because the services that write bytes cannot each call a billing API on their upload path, and it is injected by field rather than through the constructor because ImageService is assembled by hand in several places — a constructor argument is the one edit that compiles everywhere except the tests and then fails the image build. Two deliberate ways of being wrong. "GB" is read as a gibibyte, which is what a file manager means when it prints GB and the more generous reading. And an organization with no live subscription, or a service with no quota bean wired, stores exactly as before: this gate exists to hold a paying customer to what they bought, not to turn a billing gap into data loss. Reads are never gated — filling your storage stops you adding more, never takes away what you have.

Mabadiliko yote

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei