on master help sign in
Remove unannotatable StrokeDashArray animation for delivered messages

Avalonia has no registered animator for collection-type properties, causing a runtime crash. Delivered messages now show a static solid border instead.

commit25c6d894efd1dffd4e5860c6732b5d495548cd4e authoriko <mail@iko.soy> dateWed 22 Apr 2026, 22:19 (6 months ago) parent26f4907
1 file changed−34
client/ViewChat.fs−34
client/ViewChat.fs−34
@@ -55,37 +55,6 @@ module ViewChat =
5555 | None -> ()
5656 , Avalonia.Threading.DispatcherPriority.Background) |> ignore
5757
58− let private ensureSolidifyStyle =
59− lazy
60− (let s =
61− Avalonia.Styling.Style(fun sel ->
62− sel.OfType<Avalonia.Controls.Shapes.Rectangle>().Class("solidifying"))
63−
64− let anim = Avalonia.Animation.Animation()
65− anim.Duration <- System.TimeSpan.FromMilliseconds 600.
66− anim.IterationCount <- Avalonia.Animation.IterationCount(1UL)
67− anim.FillMode <- Avalonia.Animation.FillMode.Forward
68−
69− for i in 0..10 do
70− let t = float i / 10.
71− let dash = 4. + 2. * t
72− let gap = 2. - 2. * t
73− let kf = Avalonia.Animation.KeyFrame()
74− kf.Cue <- Avalonia.Animation.Cue(float32 t)
75−
76− kf.Setters.Add(
77− Avalonia.Styling.Setter(
78− Avalonia.Controls.Shapes.Shape.StrokeDashArrayProperty,
79− box (Avalonia.Collections.AvaloniaList<float>([| dash; gap |]))))
80−
81− kf.Setters.Add(
82− Avalonia.Styling.Setter(Avalonia.Controls.Shapes.Shape.StrokeDashOffsetProperty, box 0.))
83−
84− anim.Children.Add(kf)
85−
86− s.Animations.Add(anim)
87− Avalonia.Application.Current.Styles.Add(s))
88−
8958 let private messageItem m =
9059 let align, cols, col =
9160 match m.Direction with
@@ -116,13 +85,10 @@ module ViewChat =
11685 .isHitTestVisible(false)
11786 .classes("marching")
11887 else
119− ensureSolidifyStyle.Force()
120−
12188 Rectangle()
12289 .stroke(Avalonia.Media.Colors.Black)
12390 .strokeThickness(4.)
12491 .isHitTestVisible(false)
125− .classes("solidifying")
12692 | Incoming ->
12793 Rectangle()
12894 .stroke(Avalonia.Media.Colors.Black)