33 <talk-format-groups-breakdown :conf-descriptor =" confDescriptor" :talks =" displayedTalks" >
44 <template #talk =" { talk } " >
55 <ion-item class =" listTalks-item" >
6- <schedule-talk :talk =" talk" @talkClicked =" updateSelected($event)" :is-highlighted =" (talk, talkNotes) => talk.id.isSameThan(selectedTalkId)" :conf-descriptor =" confDescriptor" >
6+ <schedule-talk :talk =" talk" :talk-stats =" talkStatsRefByTalkId.get(talk.id.value)" :talk-notes =" userTalkNotesRefByTalkId.get(talk.id.value)"
7+ :is-highlighted =" (talk, talkNotes) => talk.id.isSameThan(selectedTalkId)" :conf-descriptor =" confDescriptor"
8+ @talkClicked =" updateSelected($event)" >
79 <template #upper-right =" { talk , talkNotes } " >
8- <talk-is-favorited :talk-notes =" talkNotes.value " />
10+ <talk-is-favorited :talk-notes =" talkNotes" />
911 </template >
10- <template #footer-actions =" { talk , userTalkHook } " >
11- <talk-watch-later-button :user-talk-notes =" userTalkHook " :conf-descriptor =" confDescriptor" ></talk-watch-later-button >
12+ <template #footer-actions =" { talk , talkNotes , talkStats } " >
13+ <talk-watch-later-button :user-talk-notes =" talkNotes " :conf-descriptor =" confDescriptor" ></talk-watch-later-button >
1214 <talk-select-for-feedback :is-active =" talk.id.isSameThan(selectedTalkId)" @click.stop =" () => updateSelected(talk)" ></talk-select-for-feedback >
1315 </template >
1416 </schedule-talk >
2426</template >
2527
2628<script setup lang="ts">
27- import {computed , PropType , Ref , unref } from " vue" ;
28- import {managedRef as ref } from " @/views/vue-utils" ;
29+ import {computed , PropType , Ref , toValue } from " vue" ;
30+ import {managedRef as ref , toManagedRef as toRef } from " @/views/vue-utils" ;
2931import {TalkId , VoxxrinTalk } from " @/models/VoxxrinTalk" ;
3032import TalkFormatGroupsBreakdown from " @/components/schedule/TalkFormatGroupsBreakdown.vue" ;
3133import {VoxxrinConferenceDescriptor } from " @/models/VoxxrinConferenceDescriptor" ;
@@ -34,6 +36,8 @@ import TalkWatchLaterButton from "@/components/talk-card/TalkWatchLaterButton.vu
3436import TalkSelectForFeedback from " @/components/talk-card/TalkSelectForFeedback.vue" ;
3537import ScheduleTalk from " @/components/talk-card/ScheduleTalk.vue" ;
3638import TalkIsFavorited from " @/components/talk-card/TalkIsFavorited.vue" ;
39+ import {useEventTalkStats } from " @/state/useEventTalkStats" ;
40+ import {useUserEventTalkNotes } from " @/state/useUserTalkNotes" ;
3741
3842const { LL } = typesafeI18n ()
3943
@@ -61,6 +65,12 @@ const emits = defineEmits<{
6165 (e : ' talk-deselected' , talk : VoxxrinTalk ): void ,
6266}>()
6367
68+ const eventId = toRef (() => props .confDescriptor ?.id );
69+ const talkIdsRef = toRef (() => props .talks ?.map (talk => talk .id ));
70+
71+ const {firestoreEventTalkStatsRef : talkStatsRefByTalkId} = useEventTalkStats (eventId , talkIdsRef )
72+ const {userEventTalkNotesRef : userTalkNotesRefByTalkId} = useUserEventTalkNotes (eventId , talkIdsRef )
73+
6474function updateSelected(talk : VoxxrinTalk ) {
6575 if (talk .id .isSameThan (props .selectedTalkId )) {
6676 emits (' talk-deselected' , talk );
@@ -72,10 +82,10 @@ function updateSelected(talk: VoxxrinTalk) {
7282const showUnfavoritedTalksRef = ref <boolean >(false );
7383
7484const displayedTalks: Ref <VoxxrinTalk []> = computed (() => {
75- const showUnfavoritedTalks = unref (showUnfavoritedTalksRef ),
76- allUserFavoritedTalkIds = props .allUserFavoritedTalkIds ;
85+ const showUnfavoritedTalks = toValue (showUnfavoritedTalksRef ),
86+ allUserFavoritedTalkIds = toValue ( props .allUserFavoritedTalkIds ) ;
7787
78- if (! props .talks ) {
88+ if (! props .talks || ! allUserFavoritedTalkIds ) {
7989 return []
8090 }
8191
0 commit comments