62 lines
3.9 KiB
TypeScript
62 lines
3.9 KiB
TypeScript
// Metro module 15178 (f15179).
|
|
import { View } from "react-native";
|
|
import GuildChannelStore from "../../../../stores/GuildChannelStore";
|
|
import SelectedChannelStore from "../../../../stores/SelectedChannelStore";
|
|
import { InstantInviteSources } from "../../../../Constants";
|
|
import { CHANNEL_MARGIN_VERTICAL } from "../../../channel_list_v2/native/RedesignChannelListConstants";
|
|
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
|
|
import Module712 from "../../../../_bundle/Module712";
|
|
import BaseChannelItem, { ChannelModes, BaseChannelName, BaseChannelIcon } from "../../../guild_sidebar/native/BaseChannelItem";
|
|
import { Badge } from "../../../../design/void/native";
|
|
import { useStateFromStores, useStateFromStoresObject } from "../../../../_bundle/Module589";
|
|
import { useHubUnreadCount } from "../../HubUnreadUtils";
|
|
import HubSideBarProgressOverview from "./progress_bar/HubSideBarProgressOverview";
|
|
import { CompassIcon } from "../../../../design/components/Icon/native/redesign/generated/CompassIcon";
|
|
import { intl, t } from "../../../../intl/index.native";
|
|
import { transitionToChannel } from "../../../routing/transitionToChannel";
|
|
import { PlusMediumIcon } from "../../../../design/components/Icon/native/redesign/generated/PlusMediumIcon";
|
|
import GuildDirectoryAddModalActionCreators from "../../../directory_channels/native/components/GuildDirectoryAddModalActionCreators";
|
|
import { UserPlusIcon } from "../../../../design/components/Icon/native/redesign/generated/UserPlusIcon";
|
|
import { handleOpenInviteActionsheet } from "../../../instant_invite/native/InstantInviteUtils";
|
|
let useStyles;
|
|
const HubItem = function HubItem(props) {
|
|
const { IconComponent, label, handleItemClick: handleItemClick2, active, unreadCount } = props;
|
|
const styles = useStyles();
|
|
const mode = active ? ChannelModes.SELECTED : ChannelModes.DEFAULT;
|
|
return <BaseChannelItem style={styles.container} accessibilityLabel={label} accessibilityRole="menuitem" onPress={handleItemClick2} disableHighlightOnPress mode={mode} name={<BaseChannelName name={label} mode={mode} />} icon={<BaseChannelIcon mode={mode} IconComponent={IconComponent} />} channelInfo={unreadCount != null ? <Badge value={unreadCount} /> : null} />;
|
|
};
|
|
useStyles = createStyles({
|
|
container: {
|
|
marginVertical: CHANNEL_MARGIN_VERTICAL,
|
|
marginHorizontal: 8,
|
|
borderRadius: Module712.radii.md
|
|
},
|
|
row: {
|
|
flex: 1
|
|
}
|
|
});
|
|
export default function HubSidebar(props) {
|
|
let stateFromStoresObject;
|
|
const { guild, flashList } = props;
|
|
stateFromStoresObject = void 0;
|
|
const stateFromStores = useStateFromStores([GuildChannelStore], () => GuildChannelStore.getDefaultChannel(guild.id), [guild.id]);
|
|
const styles = useStyles();
|
|
stateFromStoresObject = useStateFromStoresObject([GuildChannelStore], () => GuildChannelStore.getChannels(guild.id));
|
|
const stateFromStores2 = useStateFromStores([SelectedChannelStore], () => stateFromStores != null && SelectedChannelStore.getChannelId() === stateFromStores.id);
|
|
const hubUnreadCount = useHubUnreadCount(stateFromStores);
|
|
return stateFromStores == null ? null : <View style={flashList ? styles.row : null}>
|
|
<HubSideBarProgressOverview guild={guild} />
|
|
<HubItem active={stateFromStores2} IconComponent={CompassIcon} label={intl.string(t.K50GHd)} handleItemClick={() => {
|
|
transitionToChannel(stateFromStores.id);
|
|
}} unreadCount={hubUnreadCount} />
|
|
<HubItem IconComponent={PlusMediumIcon} label={intl.string(t.emRpdS)} handleItemClick={() => GuildDirectoryAddModalActionCreators.open({
|
|
directoryGuildName: guild.name,
|
|
directoryGuildId: guild.id,
|
|
directoryChannelId: stateFromStores.id
|
|
})} />
|
|
<HubItem IconComponent={UserPlusIcon} label={intl.string(t.MJQOuJ)} handleItemClick={() => {
|
|
handleOpenInviteActionsheet(guild, stateFromStores.id, stateFromStoresObject, InstantInviteSources.GUILD_HEADER);
|
|
}} />
|
|
</View>;
|
|
};
|