import Audio from './modules/Audio/Audio';
import {
    BatteryBox
} from './modules/Battery';
import Bluetooth from './modules/Bluetooth/Bluetooth';
import Brightness from './modules/Brightness/Brightness';
import {
    Gtk
} from 'astal/gtk4';
import Network from './modules/Networking/Network';
import Player from './modules/Player/Player';
import Power from './modules/Power';
import SysTray from './modules/SysTray';
import {
    exec
} from 'astal';

const QuickActions = () => {
    const popover = new Gtk.Popover( {
        'cssClasses': [ 'quick-actions-wrapper' ]
    } );

    popover.set_child( renderQuickActions() );

    return popover;
};

const renderQuickActions = () => {
    const user = exec( '/bin/sh -c whoami' );
    const profile = exec( '/bin/fish -c get-profile-picture' );
    const cwd = exec( 'pwd' );
    const um = Power.UserMenu();

    return (
        <box visible cssClasses={[
            'quick-actions',
            'popover-box'
        ]} vertical>
            <centerbox
                startWidget={
                    <button
                        onClicked={() => um.popup()}
                        cssClasses={[ 'stealthy-button' ]}
                        child={
                            <box>
                                {um}
                                <Gtk.Frame
                                    cssClasses={[ 'avatar-icon' ]}
                                    child={
                                        <image
                                            file={
                                                profile !== ''
                                                    ? profile
                                                    : cwd
                                                    + '/no-avatar-icon.jpg'
                                            }
                                        ></image>
                                    }
                                ></Gtk.Frame>
                                <label label={user}></label>
                            </box>
                        }
                    ></button>
                }
                endWidget={
                    <box
                        hexpand={false}
                    >
                        <BatteryBox></BatteryBox>
                        <SysTray.SystemTray></SysTray.SystemTray>
                        <Power.Power></Power.Power>
                    </box>
                }
            ></centerbox>
            <Gtk.Separator marginTop={10} marginBottom={20}></Gtk.Separator>
            <box>
                <Bluetooth.BluetoothModule></Bluetooth.BluetoothModule>
                <Network.Network></Network.Network>
            </box>
            <Gtk.Separator marginTop={10} marginBottom={10}></Gtk.Separator>
            <Brightness.BrightnessModule></Brightness.BrightnessModule>
            <Audio.AudioModule></Audio.AudioModule>
            <Player.PlayerModule></Player.PlayerModule>
        </box>
    );
};

// TODO: Expose additional functions to be usable through CLI
export default {
    QuickActions,
};
