@@ -2,14 +2,15 @@ package com.alamkanak.weekview
2
2
3
3
import java.util.Calendar
4
4
import java.util.concurrent.ConcurrentHashMap
5
+ import java.util.concurrent.CopyOnWriteArrayList
5
6
6
7
internal class EventChipsCache {
7
8
8
9
val allEventChips: List <EventChip >
9
10
get() = normalEventChipsByDate.values.flatten() + allDayEventChipsByDate.values.flatten()
10
11
11
- private val normalEventChipsByDate = ConcurrentHashMap <Long , MutableList <EventChip >>()
12
- private val allDayEventChipsByDate = ConcurrentHashMap <Long , MutableList <EventChip >>()
12
+ private val normalEventChipsByDate = ConcurrentHashMap <Long , CopyOnWriteArrayList <EventChip >>()
13
+ private val allDayEventChipsByDate = ConcurrentHashMap <Long , CopyOnWriteArrayList <EventChip >>()
13
14
14
15
fun allEventChipsInDateRange (
15
16
dateRange : List <Calendar >
@@ -62,11 +63,11 @@ internal class EventChipsCache {
62
63
normalEventChipsByDate.clear()
63
64
}
64
65
65
- private fun ConcurrentHashMap <Long , MutableList <EventChip >>.addOrReplace (
66
+ private fun ConcurrentHashMap <Long , CopyOnWriteArrayList <EventChip >>.addOrReplace (
66
67
key : Long ,
67
68
eventChip : EventChip
68
69
) {
69
- val results = getOrElse(key) { mutableListOf () }
70
+ val results = getOrElse(key) { CopyOnWriteArrayList () }
70
71
val indexOfExisting = results.indexOfFirst { it.event.id == eventChip.event.id }
71
72
if (indexOfExisting != - 1 ) {
72
73
// If an event with the same ID already exists, replace it. The new event will likely be
@@ -76,7 +77,6 @@ internal class EventChipsCache {
76
77
} else {
77
78
results.add(eventChip)
78
79
}
79
-
80
80
this [key] = results
81
81
}
82
82
}
0 commit comments