78 lines
2.4 KiB
TypeScript
78 lines
2.4 KiB
TypeScript
// Copyright 2023 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import React from 'react';
|
|
import { Environment, getEnvironment } from '../environment';
|
|
import type { LocalizerType } from '../types/I18N';
|
|
import type { NavTabPanelProps } from './NavTabs';
|
|
import { WhatsNewLink } from './WhatsNewLink';
|
|
import type { UnreadStats } from '../util/countUnreadStats';
|
|
|
|
type ChatsTabProps = Readonly<{
|
|
otherTabsUnreadStats: UnreadStats;
|
|
i18n: LocalizerType;
|
|
hasPendingUpdate: boolean;
|
|
hasFailedStorySends: boolean;
|
|
navTabsCollapsed: boolean;
|
|
onToggleNavTabsCollapse: (navTabsCollapsed: boolean) => void;
|
|
prevConversationId: string | undefined;
|
|
renderConversationView: () => JSX.Element;
|
|
renderLeftPane: (props: NavTabPanelProps) => JSX.Element;
|
|
renderMiniPlayer: (options: { shouldFlow: boolean }) => JSX.Element;
|
|
selectedConversationId: string | undefined;
|
|
showWhatsNewModal: () => unknown;
|
|
}>;
|
|
|
|
export function ChatsTab({
|
|
otherTabsUnreadStats,
|
|
i18n,
|
|
hasPendingUpdate,
|
|
hasFailedStorySends,
|
|
navTabsCollapsed,
|
|
onToggleNavTabsCollapse,
|
|
prevConversationId,
|
|
renderConversationView,
|
|
renderLeftPane,
|
|
renderMiniPlayer,
|
|
selectedConversationId,
|
|
showWhatsNewModal,
|
|
}: ChatsTabProps): JSX.Element {
|
|
return (
|
|
<>
|
|
<div id="LeftPane">
|
|
{renderLeftPane({
|
|
otherTabsUnreadStats,
|
|
collapsed: navTabsCollapsed,
|
|
hasPendingUpdate,
|
|
hasFailedStorySends,
|
|
onToggleCollapse: onToggleNavTabsCollapse,
|
|
})}
|
|
</div>
|
|
<div className="Inbox__conversation-stack">
|
|
<div id="toast" />
|
|
{selectedConversationId && (
|
|
<div
|
|
className="Inbox__conversation"
|
|
id={`conversation-${selectedConversationId}`}
|
|
>
|
|
{renderConversationView()}
|
|
</div>
|
|
)}
|
|
{!prevConversationId && (
|
|
<div className="Inbox__no-conversation-open">
|
|
{renderMiniPlayer({ shouldFlow: false })}
|
|
<div className="module-splash-screen__logo module-img--128 module-logo-blue" />
|
|
<h3>
|
|
{getEnvironment() !== Environment.Staging
|
|
? i18n('icu:welcomeToSignal')
|
|
: 'THIS IS A STAGING DESKTOP'}
|
|
</h3>
|
|
<p>
|
|
<WhatsNewLink i18n={i18n} showWhatsNewModal={showWhatsNewModal} />
|
|
</p>
|
|
</div>
|
|
)}
|
|
</div>
|
|
</>
|
|
);
|
|
}
|