{SOCIALS.map((social) => (
))}
);
}
/**
* Get the title, url and checkbox label for the dialog based on the target.
* @param target
* @param linkToSpecificEvent
* @param permalinkCreator
*/
function useTargetValues(
target: ShareDialogProps["target"],
linkToSpecificEvent: boolean,
permalinkCreator?: RoomPermalinkCreator,
): { title: string; url: string; checkboxLabel?: string } {
return useMemo(() => {
if (target instanceof URL) return { title: _t("share|title_link"), url: target.toString() };
if (target instanceof User || target instanceof RoomMember)
return {
title: _t("share|title_user"),
url: makeUserPermalink(target.userId),
};
if (target instanceof Room) {
const title = _t("share|title_room");
const newPermalinkCreator = new RoomPermalinkCreator(target);
newPermalinkCreator.load();
const events = target.getLiveTimeline().getEvents();
return {
title,
url: linkToSpecificEvent
? newPermalinkCreator.forEvent(events[events.length - 1].getId()!)
: newPermalinkCreator.forShareableRoom(),
...(events.length > 0 && { checkboxLabel: _t("share|permalink_most_recent") }),
};
}
// MatrixEvent is remaining and should have a permalinkCreator
const url = linkToSpecificEvent
? permalinkCreator!.forEvent(target.getId()!)
: permalinkCreator!.forShareableRoom();
return {
title: _t("share|title_message"),
url,
checkboxLabel: _t("share|permalink_message"),
};
}, [target, linkToSpecificEvent, permalinkCreator]);
}