The brief
Mr Sani's 335i had aircon that wasn't cold, even though the compressor was clearly working. He brought it in. A working compressor and no cold air usually means the system is low on refrigerant, there's a leak somewhere, because the compressor can pump all it likes but if there's not enough refrigerant in the system there's nothing to cool the air with. The aircon is a sealed system, and over the years a connection, an O-ring, a hose or the condenser develops a slow leak, so the refrigerant gradually escapes. Once the charge drops low enough the cooling drops off even though the compressor runs. A leaking aircon doesn't fix itself, and just topping it up sends fresh refrigerant straight back out the leak, so the leak has to be found and repaired, the receiver-drier renewed because it's absorbed moisture, and the system properly recharged.
The diagnosis
A leak check on the aircon traced the loss to a leaking connection, the refrigerant escaping slowly, which is why the system was low and the air not cold despite the compressor working. The compressor itself, the condenser and the evaporator were sound otherwise. That's a leak repair, a fresh receiver-drier, and a full recharge, not a top-up that would leak straight back out.
The work
The remaining refrigerant was recovered, the leaking connection repaired with fresh O-rings, and a new genuine BMW-spec receiver-drier fitted because the old one had absorbed moisture. The drive belt was checked, the system pulled down to a long, deep vacuum to confirm it held and to dry it out, and recharged with the correct weight of refrigerant and the right oil charge. A check at the vents confirmed cold air at idle, holding cold under load, with no leak.
The outcome
Cold air at the vents at idle and on the move, strong cooling, the charge holding, and no leak. The 335i went home with the aircon working the way it should. A working compressor with no cold air is a low system, so finding and repairing the leak, renewing the drier and recharging properly fixed the cooling for good, not a top-up that would have leaked away again.