Removed custom keyextractor of flatlist in musicList due to weird behaviours and still using special icon button for web

This commit is contained in:
Clément Le Bihan
2024-01-15 01:48:52 +01:00
parent d57606dd53
commit 9150817c05
2 changed files with 44 additions and 34 deletions

View File

@@ -1,6 +1,6 @@
/* eslint-disable react/prop-types */
import React, { useMemo, memo } from 'react';
import { StyleSheet, ViewStyle, Image } from 'react-native';
import { StyleSheet, ViewStyle, Image, Platform } from 'react-native';
import {
Column,
HStack,
@@ -12,7 +12,7 @@ import {
IconButton,
} from 'native-base';
import { HeartAdd, HeartRemove, Play } from 'iconsax-react-native';
// import IconButton from './IconButton';
import WebIconButton from './IconButton';
import Spacer from '../../components/UI/Spacer';
import { useTranslation } from 'react-i18next';
@@ -167,10 +167,29 @@ function MusicItemComponent(props: MusicItemType) {
</Text>
{screenSize === 'xl' && <Spacer height="xs" />}
<Row style={styles.songContainer}>
<Text isTruncated numberOfLines={1} style={{
<Text
isTruncated
numberOfLines={1}
style={{
flexShrink: 1,
}}>{props.song}</Text>
}}
>
{props.song}
</Text>
{Platform.OS === 'web' ? (
<WebIconButton
colorActive={colors.text[700]}
color={colors.primary[300]}
icon={HeartAdd}
iconActive={HeartRemove}
activeVariant="Bold"
size={screenSize === 'xl' ? 24 : 18}
isActive={props.liked}
onPress={props.onLike}
/>
) : (
<IconButton
variant={'unstyled'}
icon={
props.liked ? (
<HeartRemove
@@ -189,6 +208,7 @@ function MusicItemComponent(props: MusicItemType) {
props.onLike(!props.liked);
}}
/>
)}
</Row>
</Column>
{[formattedLastScore, formattedBestScore].map((value, index) => (

View File

@@ -107,9 +107,6 @@ function MusicListCC({
const { mutateAsync } = useLikeSongMutation();
const navigation = useNavigation();
const { colors } = useTheme();
// since we can not easily extract a unique key for each
// item because there is multiple time the same song played
const musicItemTracker = useRef<Map<number, number>>(new Map());
if (!musics) {
return <LoadingView />;
@@ -136,14 +133,7 @@ function MusicListCC({
/>
)}
keyExtractor={(item) => {
if (!musicItemTracker.current.has(item.id)) {
musicItemTracker.current.set(item.id, 0);
}
const count = musicItemTracker.current.get(item.id)!;
musicItemTracker.current.set(item.id, count + 1);
// this is fine because the musics are
// always returned in the same order of play
return `${item.id}-${count}`;
return `${item.id}`;
}}
ListFooterComponent={
hasMore ? (