v1.0.9 — Badge channel affiché uniquement en cas de conflit de version
Feedback UX post-1.0.8 : le badge channel bleu était toujours visible dès
qu'une entrée manifest avait un channel non-default. Sur les setups
mono-channel (99 % des cas, y compris les clients firefighter/police qui
ne voient QUE leur channel + les entries default), ça polluait chaque row
avec un badge sans valeur informative — le badge ne sert qu'à distinguer
deux rows partageant un numéro de version.
Fix : nouveau flag HasVersionConflict sur VersionRowViewModel, positionné
par RebuildList après construction (group by Version, count >= 2 → true).
HasChannelBadge devient (ChannelBadge non vide AND HasVersionConflict) —
badge visible seulement quand une AUTRE row visible partage le même numéro.
Résultat :
• Client firefighter voit v1.5.4.32 (default) → pas de badge (row unique)
• Client firefighter voit v1.5.4.32 (default) + v1.5.4.32 (firefighter)
→ les DEUX rows affichent leur badge (« default » n'a pas de badge par
convention, mais firefighter a le sien → distingue visuellement)
• Client dev/opérateur voit tous les channels → badge apparaît sur toute
row en conflit
Notification via [NotifyPropertyChangedFor(HasChannelBadge)] sur la
property auto-générée HasVersionConflict — les bindings XAML se rafraîchissent
correctement quand le flag change entre deux RebuildList (ex : upload
d'une entrée concurrente côté serveur puis refresh manifest client).
Bump : 1.0.8 → 1.0.9 (patch UX).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -657,6 +657,15 @@ public sealed partial class MainViewModel : ObservableObject
|
||||
}
|
||||
}
|
||||
|
||||
// Marque les rows qui partagent un numéro de version avec au moins UNE
|
||||
// autre row visible → active leur badge channel (sinon caché pour ne pas
|
||||
// polluer l'UI mono-channel). Group by Version, count >= 2 → conflict.
|
||||
foreach (var grp in rows.GroupBy(r => r.Version, StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
bool hasConflict = grp.Count() >= 2;
|
||||
foreach (var r in grp) r.HasVersionConflict = hasConflict;
|
||||
}
|
||||
|
||||
// Featured : plus haute installée, sinon plus haute distante
|
||||
var featured = rows.FirstOrDefault(r => r.IsInstalled) ?? rows.FirstOrDefault();
|
||||
FeaturedVersion = featured;
|
||||
|
||||
Reference in New Issue
Block a user