Skip to content
This repository was archived by the owner on Feb 17, 2020. It is now read-only.

Commit 01f4285

Browse files
committed
make the numeric ids unique across tracks, speakers and events
1 parent 64bdd90 commit 01f4285

3 files changed

Lines changed: 18 additions & 23 deletions

File tree

app/src/main/java/net/squanchy/search/view/SearchAdapter.kt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ internal class SearchAdapter(activity: AppCompatActivity) : RecyclerView.Adapter
5151
val item = searchResult.elements[position]
5252
return when (item) {
5353
is EventElement -> item.event.numericId
54-
is SpeakerElement -> speakerIdOffsetter(item.speaker.numericId)
54+
is SpeakerElement -> item.speaker.numericId
5555
is SearchListElement.EventHeader -> ITEM_ID_EVENTS_HEADER
5656
is SearchListElement.SpeakerHeader -> ITEM_ID_SPEAKERS_HEADER
5757
is SearchListElement.AlgoliaLogo -> ITEM_ID_ALGOLIA_LOGO
@@ -118,10 +118,5 @@ internal class SearchAdapter(activity: AppCompatActivity) : RecyclerView.Adapter
118118
private const val ITEM_ID_EVENTS_HEADER: Long = -1
119119
private const val ITEM_ID_SPEAKERS_HEADER: Long = -2
120120
private const val ITEM_ID_ALGOLIA_LOGO: Long = -3
121-
122-
// As we cannot guarantee that the speaker ids are going to be unique compared
123-
// to the ones for the events, we are making them negatives and offsetting them by 4,
124-
// to be sure they do not overlap the ids for the two headers and the logo
125-
private val speakerIdOffsetter: (Long) -> Long = { -it - 4 }
126121
}
127122
}

app/src/main/java/net/squanchy/service/firebase/FirestoreMappers.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ fun FirestorePlace.toPlace(): Place = Place(id = id, name = name, floor = floor.
2020

2121
fun FirestoreTrack.toTrack(checksum: Checksum) = Track(
2222
id = id,
23-
numericId = checksum.getChecksumOf(id),
23+
numericId = checksum.getChecksumOf("track_$id"),
2424
name = name,
2525
accentColor = accentColor.option(),
2626
textColor = textColor.option(),
2727
iconUrl = iconUrl.option()
2828
)
2929

3030
fun FirestoreSpeaker.toSpeaker(checksum: Checksum) = Speaker(
31-
numericId = checksum.getChecksumOf(id),
31+
numericId = checksum.getChecksumOf("speaker_$id"),
3232
id = id,
3333
name = name,
3434
bio = bio,
@@ -51,7 +51,7 @@ fun FirestoreVenue.toVenue() = Venue(
5151

5252
fun FirestoreEvent.toEvent(checksum: Checksum, timeZone: DateTimeZone, isFavorite: Boolean = false) = Event(
5353
id = id,
54-
numericId = checksum.getChecksumOf(id),
54+
numericId = checksum.getChecksumOf("event_$id"),
5555
startTime = LocalDateTime(startTime, timeZone),
5656
endTime = LocalDateTime(endTime, timeZone),
5757
title = title,

app/src/test/java/net/squanchy/schedule/FirestoreScheduleServiceTest.kt

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class FirestoreScheduleServiceTest {
6060
fun init() {
6161
scheduleService = FirestoreScheduleService(authService, dbService, tracksFilter, checksum)
6262
`when`(dbService.timezone()).thenReturn(Observable.just(A_TIMEZONE))
63-
`when`(checksum.getChecksumOf(aFirestoreSpeaker().id)).thenReturn(5466)
63+
`when`(checksum.getChecksumOf("speaker_${aFirestoreSpeaker().id}")).thenReturn(5466)
6464
}
6565

6666
@Test
@@ -70,7 +70,7 @@ class FirestoreScheduleServiceTest {
7070
`when`(dbService.scheduleView()).thenReturn(Observable.just(listOf(firstDaySchedulePage, secondDaySchedulePage)))
7171
val allowedTracks = setOf(aTrack())
7272
`when`(tracksFilter.selectedTracks).thenReturn(BehaviorSubject.createDefault(allowedTracks))
73-
`when`(checksum.getChecksumOf(anEvent().id)).thenReturn(1234)
73+
`when`(checksum.getChecksumOf("event_${aFirestoreEvent().id}")).thenReturn(1234)
7474

7575
scheduleService.schedule(onlyFavorites = false, observeScheduler = Schedulers.trampoline())
7676
.test()
@@ -117,12 +117,12 @@ class FirestoreScheduleServiceTest {
117117
`when`(dbService.scheduleView()).thenReturn(Observable.just(listOf(firstDaySchedulePage, secondDaySchedulePage)))
118118
val allowedTracks = setOf(aTrack(id = "a track id"))
119119
`when`(tracksFilter.selectedTracks).thenReturn(BehaviorSubject.createDefault(allowedTracks))
120-
`when`(checksum.getChecksumOf("1")).thenReturn(1)
121-
`when`(checksum.getChecksumOf("2")).thenReturn(2)
122-
`when`(checksum.getChecksumOf("3")).thenReturn(3)
123-
`when`(checksum.getChecksumOf("4")).thenReturn(4)
124-
`when`(checksum.getChecksumOf("5")).thenReturn(5)
125-
`when`(checksum.getChecksumOf("6")).thenReturn(6)
120+
`when`(checksum.getChecksumOf("event_1")).thenReturn(1)
121+
`when`(checksum.getChecksumOf("event_2")).thenReturn(2)
122+
`when`(checksum.getChecksumOf("event_3")).thenReturn(3)
123+
`when`(checksum.getChecksumOf("event_4")).thenReturn(4)
124+
`when`(checksum.getChecksumOf("event_5")).thenReturn(5)
125+
`when`(checksum.getChecksumOf("event_6")).thenReturn(6)
126126

127127
scheduleService.schedule(onlyFavorites = false, observeScheduler = Schedulers.trampoline())
128128
.test()
@@ -193,8 +193,8 @@ class FirestoreScheduleServiceTest {
193193
`when`(dbService.scheduleView()).thenReturn(Observable.just(listOf(schedulePage)))
194194
val allowedTracks = setOf(aTrack(id = "a track id"))
195195
`when`(tracksFilter.selectedTracks).thenReturn(BehaviorSubject.createDefault(allowedTracks))
196-
`when`(checksum.getChecksumOf("1")).thenReturn(1)
197-
`when`(checksum.getChecksumOf("2")).thenReturn(2)
196+
`when`(checksum.getChecksumOf("event_1")).thenReturn(1)
197+
`when`(checksum.getChecksumOf("event_2")).thenReturn(2)
198198
`when`(authService.ifUserSignedInThenObservableFrom(dbService::favorites))
199199
.thenReturn(Observable.just(listOf(FirestoreFavorite().apply { id = "1" })))
200200

@@ -257,7 +257,7 @@ class FirestoreScheduleServiceTest {
257257
`when`(dbService.scheduleView()).thenReturn(Observable.just(listOf(schedulePage)))
258258
val allowedTracks = setOf(aTrack(id = "A"), aTrack("C"))
259259
`when`(tracksFilter.selectedTracks).thenReturn(BehaviorSubject.createDefault(allowedTracks))
260-
`when`(checksum.getChecksumOf(aFirestoreEvent().id)).thenReturn(1)
260+
`when`(checksum.getChecksumOf("event_${aFirestoreEvent().id}")).thenReturn(1)
261261

262262
scheduleService.schedule(onlyFavorites = false, observeScheduler = Schedulers.trampoline())
263263
.test()
@@ -286,7 +286,7 @@ class FirestoreScheduleServiceTest {
286286
`when`(dbService.scheduleView()).thenReturn(Observable.just(listOf(schedulePage)))
287287
val allowedTracks = emptySet<Track>()
288288
`when`(tracksFilter.selectedTracks).thenReturn(BehaviorSubject.createDefault(allowedTracks))
289-
`when`(checksum.getChecksumOf(aFirestoreEvent().id)).thenReturn(1)
289+
`when`(checksum.getChecksumOf("event_${aFirestoreEvent().id}")).thenReturn(1)
290290

291291
scheduleService.schedule(onlyFavorites = false, observeScheduler = Schedulers.trampoline())
292292
.test()
@@ -337,7 +337,7 @@ class FirestoreScheduleServiceTest {
337337
`when`(dbService.scheduleView()).thenReturn(Observable.just(listOf(schedulePage)))
338338
val allowedTracks = setOf(aTrack(id = "A"), aTrack("C"))
339339
`when`(tracksFilter.selectedTracks).thenReturn(BehaviorSubject.createDefault(allowedTracks))
340-
`when`(checksum.getChecksumOf(aFirestoreEvent().id)).thenReturn(1)
340+
`when`(checksum.getChecksumOf("event_${aFirestoreEvent().id}")).thenReturn(1)
341341

342342
scheduleService.schedule(onlyFavorites = false, observeScheduler = Schedulers.trampoline())
343343
.test()
@@ -367,7 +367,7 @@ class FirestoreScheduleServiceTest {
367367
`when`(dbService.scheduleView()).thenReturn(Observable.just(listOf(schedulePage)))
368368
val allowedTracks = emptySet<Track>()
369369
`when`(tracksFilter.selectedTracks).thenReturn(BehaviorSubject.createDefault(allowedTracks))
370-
`when`(checksum.getChecksumOf(aFirestoreEvent().id)).thenReturn(1)
370+
`when`(checksum.getChecksumOf("event_${aFirestoreEvent().id}")).thenReturn(1)
371371

372372
scheduleService.schedule(onlyFavorites = false, observeScheduler = Schedulers.trampoline())
373373
.test()

0 commit comments

Comments
 (0)