snort/packages/app/src/Element/FollowsYou.tsx

30 lines
927 B
TypeScript
Raw Normal View History

2023-01-18 23:31:34 +00:00
import "./FollowsYou.css";
2023-01-18 03:26:42 +00:00
import { useMemo } from "react";
import { useSelector } from "react-redux";
2023-02-08 21:10:26 +00:00
import { useIntl } from "react-intl";
2023-02-11 20:05:46 +00:00
import { HexKey } from "@snort/nostr";
2023-01-20 11:11:50 +00:00
import { RootState } from "State/Store";
import useFollowsFeed from "Feed/FollowsFeed";
2023-01-20 11:11:50 +00:00
import { getFollowers } from "Feed/FollowsFeed";
2023-01-18 03:26:42 +00:00
2023-02-08 21:10:26 +00:00
import messages from "./messages";
2023-01-18 03:26:42 +00:00
export interface FollowsYouProps {
pubkey: HexKey;
2023-01-18 03:26:42 +00:00
}
export default function FollowsYou({ pubkey }: FollowsYouProps) {
2023-02-08 21:10:26 +00:00
const { formatMessage } = useIntl();
const feed = useFollowsFeed(pubkey);
2023-02-09 12:26:54 +00:00
const loginPubKey = useSelector<RootState, HexKey | undefined>(s => s.login.publicKey);
2023-01-18 03:26:42 +00:00
const pubkeys = useMemo(() => {
return getFollowers(feed.store, pubkey);
2023-02-08 21:10:26 +00:00
}, [feed, pubkey]);
2023-01-18 03:26:42 +00:00
2023-02-07 19:47:57 +00:00
const followsMe = loginPubKey ? pubkeys.includes(loginPubKey) : false;
2023-01-18 03:26:42 +00:00
2023-02-09 12:26:54 +00:00
return followsMe ? <span className="follows-you">{formatMessage(messages.FollowsYou)}</span> : null;
2023-01-18 03:26:42 +00:00
}