mirror of https://github.com/msgbyte/tailchat
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.4 KiB
TypeScript
91 lines
2.4 KiB
TypeScript
import icon from '../../assets/icon.svg';
|
|
import { ServerItem } from './ServerItem';
|
|
import React from 'react';
|
|
import { defaultServerList, useServerStore } from './store/server';
|
|
import { AddServerItem } from './AddServerItem';
|
|
import { Dropdown, Modal } from 'antd';
|
|
import './App.css';
|
|
|
|
const Hello: React.FC = React.memo(() => {
|
|
const { serverList, removeServer } = useServerStore();
|
|
|
|
return (
|
|
<div>
|
|
<div className="header">
|
|
<h1>Select your server...</h1>
|
|
</div>
|
|
<div className="server-list">
|
|
{serverList.map((serverInfo, i) => {
|
|
return (
|
|
<Dropdown
|
|
key={i}
|
|
trigger={['contextMenu']}
|
|
menu={{
|
|
items: [
|
|
{
|
|
key: 'remove',
|
|
label: 'Delete Server',
|
|
disabled:
|
|
defaultServerList.findIndex(
|
|
(info) => info.url === serverInfo.url
|
|
) >= 0, // is default server
|
|
onClick: () => {
|
|
Modal.confirm({
|
|
title: 'Do you Want to delete this server?',
|
|
onOk() {
|
|
removeServer(serverInfo.url);
|
|
},
|
|
});
|
|
},
|
|
},
|
|
],
|
|
}}
|
|
>
|
|
<div>
|
|
<ServerItem
|
|
icon={serverInfo.icon ?? icon}
|
|
version={serverInfo.version}
|
|
onClick={() => {
|
|
window.electron.ipcRenderer.sendMessage('selectServer', {
|
|
url: serverInfo.url,
|
|
});
|
|
}}
|
|
>
|
|
{serverInfo.name}
|
|
</ServerItem>
|
|
</div>
|
|
</Dropdown>
|
|
);
|
|
})}
|
|
|
|
<AddServerItem />
|
|
</div>
|
|
|
|
<div className="actions">
|
|
<button
|
|
type="button"
|
|
onClick={() => {
|
|
window.open('https://tailchat.msgbyte.com/');
|
|
}}
|
|
>
|
|
Website
|
|
</button>
|
|
|
|
<button
|
|
type="button"
|
|
onClick={() => {
|
|
window.electron.ipcRenderer.sendMessage('close');
|
|
}}
|
|
>
|
|
Exit
|
|
</button>
|
|
</div>
|
|
</div>
|
|
);
|
|
});
|
|
Hello.displayName = 'Hello';
|
|
|
|
export default function App() {
|
|
return <Hello />;
|
|
}
|