2023-01-01 19:57:27 +00:00
|
|
|
import { useSelector } from "react-redux";
|
|
|
|
import useEventPublisher from "../feed/EventPublisher";
|
2023-01-10 12:41:55 +00:00
|
|
|
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
|
|
import { faUserMinus, faUserPlus } from "@fortawesome/free-solid-svg-icons";
|
2023-01-01 19:57:27 +00:00
|
|
|
|
|
|
|
export default function FollowButton(props) {
|
|
|
|
const pubkey = props.pubkey;
|
|
|
|
const publiser = useEventPublisher();
|
|
|
|
const follows = useSelector(s => s.login.follows);
|
2023-01-10 11:27:28 +00:00
|
|
|
let isFollowing = follows?.includes(pubkey) ?? false;
|
2023-01-13 22:48:24 +00:00
|
|
|
const baseClassName = isFollowing ? `btn btn-warn follow-button` : `btn btn-success follow-button`
|
2023-01-10 11:27:28 +00:00
|
|
|
const className = props.className ? `${baseClassName} ${props.className}` : `${baseClassName}`;
|
2023-01-01 19:57:27 +00:00
|
|
|
|
|
|
|
async function follow(pubkey) {
|
|
|
|
let ev = await publiser.addFollow(pubkey);
|
|
|
|
publiser.broadcast(ev);
|
|
|
|
}
|
|
|
|
|
2023-01-01 20:31:09 +00:00
|
|
|
async function unfollow(pubkey) {
|
|
|
|
let ev = await publiser.removeFollow(pubkey);
|
|
|
|
publiser.broadcast(ev);
|
|
|
|
}
|
|
|
|
|
2023-01-01 19:57:27 +00:00
|
|
|
return (
|
2023-01-01 20:31:09 +00:00
|
|
|
<div className={className} onClick={() => isFollowing ? unfollow(pubkey) : follow(pubkey)}>
|
2023-01-10 12:41:55 +00:00
|
|
|
<FontAwesomeIcon icon={isFollowing ? faUserMinus : faUserPlus} size="lg" />
|
2023-01-01 19:57:27 +00:00
|
|
|
</div>
|
|
|
|
)
|
|
|
|
}
|