Skip to content

Commit

Permalink
[FEATURE] always show currently selected DM
Browse files Browse the repository at this point in the history
  • Loading branch information
Sekkmer committed Oct 8, 2023
1 parent b247313 commit fed9e8f
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ function DirectMessageElement({ message, channel, account }: { message: DirectMe
</span>
{ ': ' }
<span className='direct-message-entry__content'>
{...message.message.map((c, i) => RenderChatPart(c, i, true))}
{ ...message.message.map((c, i) => RenderChatPart(c, i, true)) }
</span>
</div>
);
Expand All @@ -95,6 +95,9 @@ function DirectChannelInput(): ReactElement {
});

return (
<textarea onKeyDown={ onKeyDown } />
<textarea
onKeyDown={ onKeyDown }
placeholder={ `Send message to ${channel.account.name} (${channel.account.id})` }
/>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@
&.selected {
background-color: $grey-mid;
}

&.temp {
background-color: $grey-mid;
font-style: italic;
}
}

.input-line {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react';
import { AccountId, IDirectoryDirectMessageInfo } from 'pandora-common';
import React, { Suspense } from 'react';
import { AccountId, IDirectoryDirectMessageAccount, IDirectoryDirectMessageInfo } from 'pandora-common';
import { Observable, useObservable } from '../../observable';
import { useCurrentAccount, useDirectoryConnector } from '../gameContext/directoryConnectorContextProvider';
import { DirectMessage } from '../directMessage/directMessage';
Expand Down Expand Up @@ -32,6 +32,11 @@ export function DirectMessages(): React.ReactElement {
<div className='direct-messages__list'>
<input type='text' value={ filter } onChange={ (e) => setFilter(e.target.value) } placeholder='Filter' />
<Scrollbar color='dark' tag='ul'>
{ selected == null ? null : (
<Suspense>
<DirectMessageTempInfo selected={ selected } filtered={ filtered } />
</Suspense>
) }
{ filtered.map((i) => <DirectMessageInfo key={ i.id } info={ i } selected={ i.id === selected } />) }
</Scrollbar>
<OpenConversation />
Expand All @@ -41,6 +46,22 @@ export function DirectMessages(): React.ReactElement {
);
}

function DirectMessageTempInfo({ selected, filtered }: { selected: AccountId; filtered: readonly IDirectoryDirectMessageInfo[]; }) {
const directoryConnector = useDirectoryConnector();

if (filtered.some((i) => i.id === selected)) {
return null;
}

const chat = directoryConnector.directMessageHandler.loadChat(selected);

return (
<li className='temp'>
{ chat.account.name } ({ selected })
</li>
);
}

function DirectMessageInfo({ info, selected }: { info: Readonly<IDirectoryDirectMessageInfo>; selected: boolean; }): React.ReactElement {
const { id, account, hasUnread } = info;
const show = React.useCallback(() => SELECTED_DIRECT_MESSAGE.value = id, [id]);
Expand Down
4 changes: 4 additions & 0 deletions pandora-client-web/src/networking/directMessageManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,10 @@ export class DirectMessageManager extends TypedEventEmitter<{ newMessage: Direct
}
}

public getChat(id: number): DirectMessageChannel | undefined {
return this._chats.get(id);
}

private _getChat(id: number): DirectMessageChannel {
let chat = this._chats.get(id);
if (chat === undefined) {
Expand Down

0 comments on commit fed9e8f

Please sign in to comment.