mirror of
https://github.com/RetroShare/RSNewWebUI.git
synced 2026-09-14 02:55:47 +05:00
116 lines
3.7 KiB
JavaScript
116 lines
3.7 KiB
JavaScript
const m = require('mithril');
|
|
const rs = require('rswebui');
|
|
const Data = require('network/network_data');
|
|
const compose = require('mail/mail_compose');
|
|
const {
|
|
State,
|
|
loadOwnProfile,
|
|
loadGxsIdentities,
|
|
fetchIdDetails,
|
|
startDirectChat,
|
|
getOnlineSslId,
|
|
} = require('network/network_state');
|
|
const { OwnProfileCard, FriendsList } = require('network/network_friends_list');
|
|
const DetailsTab = require('network/network_details_tab');
|
|
const ChatTab = require('network/network_chat_tab');
|
|
|
|
const NetworkLayout = () => {
|
|
return {
|
|
oninit: () => {
|
|
Data.refreshGpgDetails().then(() => m.redraw());
|
|
loadOwnProfile();
|
|
loadGxsIdentities();
|
|
},
|
|
onremove: () => {
|
|
if (rs.events[15]) {
|
|
rs.events[15].notify = () => {};
|
|
}
|
|
},
|
|
view: () => {
|
|
const selectedFriend = State.selectedFriendGpgId
|
|
? Data.gpgDetails[State.selectedFriendGpgId]
|
|
: null;
|
|
|
|
const selectedGxsId = State.selectedFriendGpgId
|
|
? State.gpgToGxsIdMap[State.selectedFriendGpgId.toLowerCase()]
|
|
: null;
|
|
|
|
if (State.selectedFriendGpgId && !selectedGxsId && State.gxsIdentities) {
|
|
State.gxsIdentities.forEach((gxsId) => fetchIdDetails(gxsId));
|
|
}
|
|
|
|
return m('.network-container', [
|
|
m('.network-left-pane', [m(OwnProfileCard), m(FriendsList)]),
|
|
m('.network-right-pane', [
|
|
selectedFriend
|
|
? [
|
|
m('.network-tabs', [
|
|
m(
|
|
'button.tab-btn' + (State.activeTab === 'details' ? '.active' : ''),
|
|
{
|
|
onclick: () => {
|
|
State.activeTab = 'details';
|
|
},
|
|
},
|
|
'Details View'
|
|
),
|
|
m(
|
|
'button.tab-btn' + (State.activeTab === 'chat' ? '.active' : ''),
|
|
{
|
|
onclick: () => {
|
|
State.activeTab = 'chat';
|
|
const sslId = getOnlineSslId(State.selectedFriendGpgId);
|
|
if (sslId && !State.currentChatPeerId) {
|
|
startDirectChat(sslId);
|
|
}
|
|
},
|
|
},
|
|
'Chat Conversation'
|
|
),
|
|
]),
|
|
m('.network-tab-content', [
|
|
State.activeTab === 'details' ? m(DetailsTab) : m(ChatTab),
|
|
]),
|
|
]
|
|
: m('.network-pane-placeholder', [
|
|
m('i.fas.fa-network-wired'),
|
|
m(
|
|
'p',
|
|
'Select a friend node from the left side panel to view locations details or start a private chat.'
|
|
),
|
|
]),
|
|
]),
|
|
State.showMailCompose &&
|
|
State.selectedFriendGpgId &&
|
|
m(
|
|
'.composePopupOverlay#mailComposerPopup',
|
|
{ style: { display: 'block' } },
|
|
m(
|
|
'.composePopup',
|
|
m(compose, {
|
|
msgType: 'compose',
|
|
toId: selectedGxsId || State.selectedFriendGpgId,
|
|
friendName: selectedFriend ? selectedFriend.name : 'Unknown Friend',
|
|
isDirectMail: true,
|
|
setShowCompose: (val) => {
|
|
State.showMailCompose = val;
|
|
},
|
|
}),
|
|
m(
|
|
'button.red.close-btn',
|
|
{
|
|
onclick: () => {
|
|
State.showMailCompose = false;
|
|
},
|
|
},
|
|
m('i.fas.fa-times')
|
|
)
|
|
)
|
|
),
|
|
]);
|
|
},
|
|
};
|
|
};
|
|
|
|
module.exports = NetworkLayout;
|