import { CSSProperties, useEffect, useState } from "react";

import { LogoDark } from "../components/logo";
import { AccountAvatar } from "./account";
import { userInfo } from "../api/api";
import { Bubble, Vierkant, Button } from './ui';

import Home from '@material-ui/icons/Home';
import VideogameAssetIcon from '@material-ui/icons/VideogameAsset';
import ExtensionIcon from '@material-ui/icons/Extension';
import SearchIcon from '@material-ui/icons/Search';
import SettingsIcon from '@material-ui/icons/Settings';
import PersonIcon from '@material-ui/icons/Person';
import GroupAddIcon from '@material-ui/icons/GroupAdd';
import DoneIcon from '@material-ui/icons/Done';
import CloseIcon from '@material-ui/icons/Close';

function FriendRequestsBubble(props: {
	visible?: boolean;
}) {
	return props.visible && <Bubble style={{
		left: 48 + 12,
		top: 92,
		transform: "translateY(-100%)",
		textAlign: "left",
		width: 400,
		height: 450
	}} tuitjeStyle={{
		left: 12,
		bottom: 86,
		transform: "translate(-100%, 100%) rotate(90deg)"
	}}>
		<h2 style={{ marginBottom: 24 }}>Vriendschapsverzoeken</h2>
		<div style={{
			overflowY: "scroll",
			whiteSpace: "normal",
			height: 450 - 24 * 4,
			borderRadius: 6
		}}>
			<FriendRequest user={ {"id": "1398093580938", "username": "test", "status": "Lorum ipsum"} }/>
			<FriendRequest user={ {"id": "1398093580938", "username": "test", "status": "Lorum ipsum"} }/>
			<FriendRequest user={ {"id": "1398093580938", "username": "test", "status": "Lorum ipsum"} }/>
			<FriendRequest user={ {"id": "1398093580938", "username": "test", "status": "Lorum ipsum"} }/>
			<FriendRequest user={ {"id": "1398093580938", "username": "test", "status": "Lorum ipsum"} }/>
			<FriendRequest user={ {"id": "1398093580938", "username": "test", "status": "Lorum ipsum"} }/>
		</div>
	</Bubble>
}

var FriendRequestButtonStyle: CSSProperties = {
	display: "inline-block",
	padding: 12,
	borderRadius: 6,
	marginLeft: 6
};

function FriendRequest(props: {
	user: userInfo;
}) {
	return <Vierkant style={{
		borderRadius: 8,
		background: "var(--background-alt)",
		margin: 0,
		padding: 12,
		width: "100%",
		marginBottom: 12
	}}>
		<div style={{
			position: "relative"
		}}>
			<a href={"/user?id=" + props.user.id}>
				<AccountAvatar size={48} dummy/>
				<div style={{
					display: "inline-block",
					verticalAlign: "top",
					marginLeft: 6
				}}>
					<b>{props.user.username}</b>
					<p>{props.user.status}</p>
				</div>
			</a>
			<div style={{
				display: "inline-block",
				verticalAlign: "top",
				float: "right"
			}}>
				<Button style={FriendRequestButtonStyle}><DoneIcon/></Button>
				<Button style={FriendRequestButtonStyle}><CloseIcon/></Button>
			</div>
		</div>
	</Vierkant>
}


var NavBarItemStyle: CSSProperties = {
	margin: 12,
	marginBottom: 16,
	display: "block"
}

export function NavBar() {
	var [ loggedIn, setLoggedIn ] = useState(false);
	useEffect(() => setLoggedIn(document.cookie.includes("token")), []);

	var [ friendRequestDialogVisible, setFriendRequestDialogVisible ] = useState(false);

	return <div className="navbar" style={{
		width: 48,
		height: "100%",

		lineHeight: 0,

		backgroundColor: "var(--background)",
		display: "inline-block",

		position: "fixed",
		top: 0,
		left: 0,

		overflow: "visible",
		whiteSpace: "nowrap",
		zIndex: 1
	}}>
		<div style={NavBarItemStyle}><LogoDark/></div>
		<a href="/" style={NavBarItemStyle}><Home/></a>
		<a href="/game" style={NavBarItemStyle}><VideogameAssetIcon/></a>
		{ false && <a href="/" style={NavBarItemStyle}><ExtensionIcon/></a> }
		<a href="/search" style={NavBarItemStyle}><SearchIcon/></a>

		<div style={{
			position: "absolute",
			bottom: -4,
			left: 0,
			backgroundColor: "var(--background)"
		}}>
			{ loggedIn && <a style={{
				overflow: "visible",
				position: "relative",
				...NavBarItemStyle
			}}>
				<div style={{ cursor: "pointer" }} onClick={() => setFriendRequestDialogVisible(!friendRequestDialogVisible)}>
					<GroupAddIcon/>
				</div>
				<div style={{
					backgroundColor: "var(--disk-a)",
					width: 8, height: 8,
					borderRadius: 4,
					position: "absolute",
					top: -2, right: -2
				}}/>
				<FriendRequestsBubble visible={friendRequestDialogVisible}/>
			</a> }
			<a href={loggedIn ? "/user" : "/login"} style={NavBarItemStyle}>
				{
					loggedIn ?
					<AccountAvatar size={24} dummy round/> :
					<PersonIcon/>
				}
			</a>
			{ loggedIn && <a href="/settings" style={NavBarItemStyle}><SettingsIcon/></a> }
		</div>
	</div>
}