/*
* Wire
* Copyright (C) 2024 Wire Swiss GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*
*/
import {container} from 'tsyringe';
import {GroupIcon, MessageIcon, StarIcon, ExternalLinkIcon, Tooltip, SupportIcon} from '@wireapp/react-ui-kit';
import * as Icon from 'Components/Icon';
import {ConversationRepository} from 'src/script/conversation/ConversationRepository';
import {User} from 'src/script/entity/User';
import {ConversationFolderTab} from 'src/script/page/LeftSidebar/panels/Conversations/ConversationTab/ConversationFolderTab';
import {SidebarTabs} from 'src/script/page/LeftSidebar/panels/Conversations/useSidebarStore';
import {Core} from 'src/script/service/CoreSingleton';
import {TeamRepository} from 'src/script/team/TeamRepository';
import {TeamState} from 'src/script/team/TeamState';
import {UserRepository} from 'src/script/user/UserRepository';
import {isDataDogEnabled} from 'Util/DataDog';
import {getWebEnvironment} from 'Util/Environment';
import {replaceLink, t} from 'Util/LocalizerUtil';
import {
footerDisclaimer,
footerDisclaimerEllipsis,
footerDisclaimerTooltip,
iconStyle,
} from './ConversationTabs.styles';
import {FolderIcon} from './FolderIcon';
import {TeamCreation} from './TeamCreation/TeamCreation';
import {Config} from '../../../../../Config';
import {Conversation} from '../../../../../entity/Conversation';
import {Shortcut} from '../../../../../ui/Shortcut';
import {ShortcutType} from '../../../../../ui/ShortcutType';
import {ConversationTab} from '../ConversationTab';
interface ConversationTabsProps {
unreadConversations: Conversation[];
favoriteConversations: Conversation[];
archivedConversations: Conversation[];
groupConversations: Conversation[];
directConversations: Conversation[];
conversationRepository: ConversationRepository;
onChangeTab: (tab: SidebarTabs, folderId?: string) => void;
currentTab: SidebarTabs;
onClickPreferences: () => void;
showNotificationsBadge?: boolean;
selfUser: User;
teamRepository: TeamRepository;
userRepository: UserRepository;
}
export const ConversationTabs = ({
unreadConversations,
favoriteConversations,
archivedConversations,
groupConversations,
conversationRepository,
directConversations,
onChangeTab,
currentTab,
onClickPreferences,
showNotificationsBadge = false,
selfUser,
userRepository,
teamRepository,
}: ConversationTabsProps) => {
const core = container.resolve(Core);
const teamState = container.resolve(TeamState);
const totalUnreadConversations = unreadConversations.length;
const totalUnreadFavoriteConversations = favoriteConversations.filter(favoriteConversation =>
favoriteConversation.hasUnread(),
).length;
const totalUnreadArchivedConversations = archivedConversations.filter(conversation =>
conversation.hasUnread(),
).length;
const filterUnreadAndArchivedConversations = (conversation: Conversation) =>
!conversation.is_archived() && conversation.hasUnread();
const isTeamCreationEnabled =
Config.getConfig().FEATURE.ENABLE_TEAM_CREATION &&
core.backendFeatures.version >= Config.getConfig().MIN_TEAM_CREATION_SUPPORTED_API_VERSION;
const conversationTabs = [
{
type: SidebarTabs.RECENT,
title: t('conversationViewTooltip'),
dataUieName: 'go-recent-view',
Icon: