#!/bin/bash

host=$(hostnamectl hostname)
msg="Networks:"

reload_networks() {
    nmcli networking on
    nmcli device wifi rescan
    sleep 0.5  # Wait for the rescan to complete
    networks=$(nmcli --fields "SSID,IN-USE" device wifi list | awk '{if(NR>1) print $1 $2}' | sed 's/*/           /g' | grep -v '\--')
}

reload_networks

selected=$(echo -e "  Status: ON\n󰑙 Reload\n" "$networks" | rofi -dmenu -p "$host" -mesg $msg -theme ~/.config/rofi/powermenu/type-1/style-1.rasi)

if [ "$selected" == "󰑙 Reload" ]; then
    reload_networks
    selected=$(echo -e "  Status: ON\n󰑙 Reload\n" "$networks" | rofi -dmenu -p "$host" -mesg $msg -theme ~/.config/rofi/powermenu/type-1/style-1.rasi)
fi

if [ "$selected" == "  Status: ON" ]; then
    nmcli networking off
    selected=$(echo -e "  Status: OFF\n󰑙 Reload\n" | rofi -dmenu -p "$host" -mesg $msg -theme ~/.config/rofi/powermenu/type-1/style-1.rasi)
fi

if [ "$selected" == "  Status: OFF" ]; then
    nmcli networking on
    reload_networks
    selected=$(echo -e "  Status: ON\n󰑙 Reload\n" "$networks" | rofi -dmenu -p "$host" -mesg $msg -theme ~/.config/rofi/powermenu/type-1/style-1.rasi)
fi

if [ -n "$selected" ]; then
    if [ "$selected" != "  Status: ON" ] && [ "$selected" != "  Status: OFF" ]; then
        password=$(rofi -dmenu -password -p "Password:" -theme-str "listview { enabled: false; }")
        selected=$(echo $selected | sed "s/ //g" | sed "s/ //g")
        echo $selected
        if [ -n "$password" ]; then
            nmcli device wifi connect "$selected" password "$password"
        else
            nmcli device wifi connect "$selected"
        fi
    fi
fi
