feat: support concurrent Reddit accounts

This commit is contained in:
jjbrunton committed 2026-08-08 19:00:38 +01:00
1 parent d819a0f1e6
commit 16a31335d0
51 files changed
+3241 -250

No files matched your search

@@ -5,7 +5,9 @@ import { ConversationDetail } from './conversation-detail.js';
import { useConversationsQuery } from './conversation-queries.js';
import { StartConversationForm } from './start-conversation-form.js';
import { ProcessedUserLookup } from './processed-user-lookup.js';
import { AccountOwnerBadge } from '../../components/account-owner-badge.js';
import './conversations.css';
import { ownedConversationId } from './conversation-identity.js';
export type ConversationFilter = 'all' | 'unread' | 'awaiting-reply' | 'received-images';
@@ -21,10 +23,6 @@ export interface ConversationsPageProps {
onFiltersChange?(filters: ConversationFilters): void;
}
function conversationId(conversation: ActiveChat): string {
return conversation.roomId ?? conversation.username;
}
function matchesFilter(conversation: ActiveChat, filter: ConversationFilter): boolean {
if (filter === 'unread') return conversation.unread;
if (filter === 'awaiting-reply') return conversation.isFromUs;
@@ -48,6 +46,7 @@ function ConversationListItem({ conversation, isSelected, onSelect }: {
type="button"
/>
<span className="conversation-list-heading"><strong><RedditUsernameLink username={conversation.username} /></strong><small>{state}</small></span>
<AccountOwnerBadge owner={conversation.owner} />
{conversation.hasReceivedImages ? <span className="conversation-image-marker">Image received</span> : null}
<span>{conversation.lastMessageSnippet || 'No message preview'}</span>
</li>
@@ -143,9 +142,9 @@ export function ConversationsPage({ selectedConversationId, onSelectedConversati
{visibleConversations.map((conversation) => (
<ConversationListItem
conversation={conversation}
isSelected={conversationId(conversation) === activeConversationId}
key={conversationId(conversation)}
onSelect={() => selectConversation(conversationId(conversation))}
isSelected={ownedConversationId(conversation) === activeConversationId}
key={ownedConversationId(conversation)}
onSelect={() => selectConversation(ownedConversationId(conversation))}
/>
))}
</ul>