Fix optimistic like
This commit is contained in:
@@ -84,9 +84,7 @@ let ProfileHeaderLabeler = ({
|
|||||||
const [likeUri, setLikeUri] = React.useState<string>(
|
const [likeUri, setLikeUri] = React.useState<string>(
|
||||||
labeler.viewer?.like || '',
|
labeler.viewer?.like || '',
|
||||||
)
|
)
|
||||||
const isLiked = !!likeUri
|
const [likeCount, setLikeCount] = React.useState(labeler.likeCount || 0)
|
||||||
const likeCount =
|
|
||||||
isLiked && likeUri ? (labeler.likeCount || 0) + 1 : labeler.likeCount || 0
|
|
||||||
|
|
||||||
const onToggleLiked = React.useCallback(async () => {
|
const onToggleLiked = React.useCallback(async () => {
|
||||||
if (!labeler) {
|
if (!labeler) {
|
||||||
@@ -95,13 +93,15 @@ let ProfileHeaderLabeler = ({
|
|||||||
try {
|
try {
|
||||||
Haptics.default()
|
Haptics.default()
|
||||||
|
|
||||||
if (isLiked && likeUri) {
|
if (likeUri) {
|
||||||
await unlikeMod({uri: likeUri})
|
await unlikeMod({uri: likeUri})
|
||||||
track('CustomFeed:Unlike')
|
track('CustomFeed:Unlike')
|
||||||
|
setLikeCount(c => c - 1)
|
||||||
setLikeUri('')
|
setLikeUri('')
|
||||||
} else {
|
} else {
|
||||||
const res = await likeMod({uri: labeler.uri, cid: labeler.cid})
|
const res = await likeMod({uri: labeler.uri, cid: labeler.cid})
|
||||||
track('CustomFeed:Like')
|
track('CustomFeed:Like')
|
||||||
|
setLikeCount(c => c + 1)
|
||||||
setLikeUri(res.uri)
|
setLikeUri(res.uri)
|
||||||
}
|
}
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
@@ -112,7 +112,7 @@ let ProfileHeaderLabeler = ({
|
|||||||
)
|
)
|
||||||
logger.error(`Failed to toggle labeler like`, {message: e.message})
|
logger.error(`Failed to toggle labeler like`, {message: e.message})
|
||||||
}
|
}
|
||||||
}, [labeler, likeUri, isLiked, likeMod, unlikeMod, track, _])
|
}, [labeler, likeUri, likeMod, unlikeMod, track, _])
|
||||||
|
|
||||||
const onPressEditProfile = React.useCallback(() => {
|
const onPressEditProfile = React.useCallback(() => {
|
||||||
track('ProfileHeader:EditProfileButtonClicked')
|
track('ProfileHeader:EditProfileButtonClicked')
|
||||||
@@ -227,14 +227,14 @@ let ProfileHeaderLabeler = ({
|
|||||||
label={_(msg`Like this feed`)}
|
label={_(msg`Like this feed`)}
|
||||||
disabled={!hasSession || isLikePending || isUnlikePending}
|
disabled={!hasSession || isLikePending || isUnlikePending}
|
||||||
onPress={onToggleLiked}>
|
onPress={onToggleLiked}>
|
||||||
{isLiked ? (
|
{likeUri ? (
|
||||||
<HeartFilled fill={t.palette.negative_400} />
|
<HeartFilled fill={t.palette.negative_400} />
|
||||||
) : (
|
) : (
|
||||||
<Heart fill={t.atoms.text_contrast_medium.color} />
|
<Heart fill={t.atoms.text_contrast_medium.color} />
|
||||||
)}
|
)}
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
{typeof labeler.likeCount === 'number' && (
|
{typeof likeCount === 'number' && (
|
||||||
<Link
|
<Link
|
||||||
to={{
|
to={{
|
||||||
screen: 'ProfileLabelerLikedBy',
|
screen: 'ProfileLabelerLikedBy',
|
||||||
|
|||||||
Reference in New Issue
Block a user