@@ -140,7 +140,7 @@ struct AvatarPickerView: View {
140
140
. onChange ( of: randomSelectedAvatarKey) { newValue in
141
141
guard let newValue else { return }
142
142
Task { @MainActor in
143
- withAnimation ( . linear ( duration: 0.25 ) ) {
143
+ withAnimation ( . easeOut ( duration: 0.3 ) ) {
144
144
proxy. scrollTo ( newValue, anchor: . top)
145
145
}
146
146
}
@@ -215,14 +215,19 @@ struct AvatarPickerView: View {
215
215
avatarChanged = true
216
216
debugPrint ( " Set planet avatar to \( randomKey) , at: \( avatarURL) " )
217
217
Task { @MainActor in
218
- self . randomSelectedAvatarKey = randomKey
219
- try ? await Task . sleep ( nanoseconds: 300_000_000 )
220
- let _ = withAnimation ( . linear( duration: 0.25 ) ) {
221
- self . highlightedItems. insert ( randomKey)
222
- }
223
- try ? await Task . sleep ( nanoseconds: 300_000_000 )
224
- let _ = withAnimation ( . easeOut( duration: 0.4 ) ) {
225
- self . highlightedItems. removeAll ( )
218
+ highlightedItems. removeAll ( )
219
+ randomSelectedAvatarKey = randomKey
220
+ Task . detached ( priority: . utility) {
221
+ try ? await Task . sleep ( nanoseconds: 300_000_000 )
222
+ let _ = await MainActor . run {
223
+ self . highlightedItems. insert ( randomKey)
224
+ }
225
+ try ? await Task . sleep ( nanoseconds: 600_000_000 )
226
+ await MainActor . run {
227
+ let _ = withAnimation ( . easeOut( duration: 0.4 ) ) {
228
+ highlightedItems. removeAll ( )
229
+ }
230
+ }
226
231
}
227
232
}
228
233
}
0 commit comments