From 17ccb7215ed4ae393e54fa9595298f2950d375e8 Mon Sep 17 00:00:00 2001
From: razorkitty <razorkitty@null.net>
Date: Tue, 22 Nov 2022 02:32:20 +0000
Subject: [PATCH] remove no longer used mpris player controls and dbus support
 (this has been moved into itd)

---
 internal/utils/dbus.go |  37 ------
 pkg/player/player.go   | 271 -----------------------------------------
 2 files changed, 308 deletions(-)
 delete mode 100644 internal/utils/dbus.go
 delete mode 100644 pkg/player/player.go

diff --git a/internal/utils/dbus.go b/internal/utils/dbus.go
deleted file mode 100644
index cd6aee0..0000000
--- a/internal/utils/dbus.go
+++ /dev/null
@@ -1,37 +0,0 @@
-package utils
-
-import "github.com/godbus/dbus/v5"
-
-func NewSystemBusConn() (*dbus.Conn, error) {
-	// Connect to dbus session bus
-	conn, err := dbus.SystemBusPrivate()
-	if err != nil {
-		return nil, err
-	}
-	err = conn.Auth(nil)
-	if err != nil {
-		return nil, err
-	}
-	err = conn.Hello()
-	if err != nil {
-		return nil, err
-	}
-	return conn, nil
-}
-
-func NewSessionBusConn() (*dbus.Conn, error) {
-	// Connect to dbus session bus
-	conn, err := dbus.SessionBusPrivate()
-	if err != nil {
-		return nil, err
-	}
-	err = conn.Auth(nil)
-	if err != nil {
-		return nil, err
-	}
-	err = conn.Hello()
-	if err != nil {
-		return nil, err
-	}
-	return conn, nil
-}
diff --git a/pkg/player/player.go b/pkg/player/player.go
deleted file mode 100644
index 5358a80..0000000
--- a/pkg/player/player.go
+++ /dev/null
@@ -1,271 +0,0 @@
-package player
-
-import (
-	"strings"
-	"sync"
-
-	"github.com/godbus/dbus/v5"
-	"go.arsenm.dev/infinitime/internal/utils"
-)
-
-var (
-	method, monitor *dbus.Conn
-	monitorCh       chan *dbus.Message
-	onChangeOnce    sync.Once
-)
-
-// Init makes required connections to DBis and
-// initializes change monitoring channel
-func Init() error {
-	// Connect to session bus for monitoring
-	monitorConn, err := utils.NewSessionBusConn()
-	if err != nil {
-		return err
-	}
-	// Add match rule for PropertiesChanged on media player
-	monitorConn.AddMatchSignal(
-		dbus.WithMatchObjectPath("/org/mpris/MediaPlayer2"),
-		dbus.WithMatchInterface("org.freedesktop.DBus.Properties"),
-		dbus.WithMatchMember("PropertiesChanged"),
-	)
-	monitorCh = make(chan *dbus.Message, 10)
-	monitorConn.Eavesdrop(monitorCh)
-
-	// Connect to session bus for method calls
-	methodConn, err := utils.NewSessionBusConn()
-	if err != nil {
-		return err
-	}
-	method, monitor = methodConn, monitorConn
-	return nil
-}
-
-// Exit closes all connections and channels
-func Exit() {
-	close(monitorCh)
-	method.Close()
-	monitor.Close()
-}
-
-// Play uses MPRIS to play media
-func Play() error {
-	player, err := getPlayerObj()
-	if err != nil {
-		return err
-	}
-	if player != nil {
-		call := player.Call("org.mpris.MediaPlayer2.Player.Play", 0)
-		if call.Err != nil {
-			return call.Err
-		}
-	}
-	return nil
-}
-
-// Pause uses MPRIS to pause media
-func Pause() error {
-	player, err := getPlayerObj()
-	if err != nil {
-		return err
-	}
-	if player != nil {
-		call := player.Call("org.mpris.MediaPlayer2.Player.Pause", 0)
-		if call.Err != nil {
-			return call.Err
-		}
-	}
-	return nil
-}
-
-// Next uses MPRIS to skip to next media
-func Next() error {
-	player, err := getPlayerObj()
-	if err != nil {
-		return err
-	}
-	if player != nil {
-		call := player.Call("org.mpris.MediaPlayer2.Player.Next", 0)
-		if call.Err != nil {
-			return call.Err
-		}
-	}
-	return nil
-}
-
-// Prev uses MPRIS to skip to previous media
-func Prev() error {
-	player, err := getPlayerObj()
-	if err != nil {
-		return err
-	}
-	if player != nil {
-		call := player.Call("org.mpris.MediaPlayer2.Player.Previous", 0)
-		if call.Err != nil {
-			return call.Err
-		}
-	}
-	return nil
-}
-
-func VolUp(percent uint) error {
-
-	player, err := getPlayerObj()
-	if err != nil {
-		return err
-	}
-	if player != nil {
-                currentVal, err := player.GetProperty("org.mpris.MediaPlayer2.Player.Volume")
-                if err != nil {
-                    return err
-                }
-                newVal := currentVal.Value().(float64) + (float64(percent) / 100)
-                err = player.SetProperty("org.mpris.MediaPlayer2.Player.Volume", newVal)
-                if err != nil {
-                    return err
-                }
-        }
-	return nil
-}
-
-func VolDown(percent uint) error {
-
-	player, err := getPlayerObj()
-	if err != nil {
-		return err
-	}
-	if player != nil {
-                currentVal, err := player.GetProperty("org.mpris.MediaPlayer2.Player.Volume")
-                if err != nil {
-                    return err
-                }
-                newVal := currentVal.Value().(float64) - (float64(percent) / 100)
-                err = player.SetProperty("org.mpris.MediaPlayer2.Player.Volume", newVal)
-                if err != nil {
-                    return err
-                }
-        }
-	return nil
-}
-
-type ChangeType int
-
-const (
-	ChangeTypeTitle ChangeType = iota
-	ChangeTypeArtist
-	ChangeTypeAlbum
-	ChangeTypeStatus
-)
-
-func (ct ChangeType) String() string {
-	switch ct {
-	case ChangeTypeTitle:
-		return "Title"
-	case ChangeTypeAlbum:
-		return "Album"
-	case ChangeTypeArtist:
-		return "Artist"
-	case ChangeTypeStatus:
-		return "Status"
-	}
-	return ""
-}
-
-// OnChange runs cb when a value changes
-func OnChange(cb func(ChangeType, string)) {
-	go onChangeOnce.Do(func() {
-		// For every message on channel
-		for msg := range monitorCh {
-			// Parse PropertiesChanged
-			iface, changed, ok := parsePropertiesChanged(msg)
-			if !ok || iface != "org.mpris.MediaPlayer2.Player" {
-				continue
-			}
-
-			// For every property changed
-			for name, val := range changed {
-				// If metadata changed
-				if name == "Metadata" {
-					// Get fields
-					fields := val.Value().(map[string]dbus.Variant)
-					// For every field
-					for name, val := range fields {
-						// Handle each field appropriately
-						if strings.HasSuffix(name, "title") {
-							title := val.Value().(string)
-							if title == "" {
-								title = "Unknown " + ChangeTypeTitle.String()
-							}
-							cb(ChangeTypeTitle, title)
-						} else if strings.HasSuffix(name, "album") {
-							album := val.Value().(string)
-							if album == "" {
-								album = "Unknown " + ChangeTypeAlbum.String()
-							}
-							cb(ChangeTypeAlbum, album)
-						} else if strings.HasSuffix(name, "artist") {
-							var artists string
-							switch artistVal := val.Value().(type) {
-							case string:
-								artists = artistVal
-							case []string:
-								artists = strings.Join(artistVal, ", ")
-							}
-							if artists == "" {
-								artists = "Unknown " + ChangeTypeArtist.String()
-							}
-							cb(ChangeTypeArtist, artists)
-						}
-					}
-				} else if name == "PlaybackStatus" {
-					// Handle status change
-					cb(ChangeTypeStatus, val.Value().(string))
-				}
-			}
-		}
-	})
-}
-
-// getPlayerNames gets all DBus MPRIS player bus names
-func getPlayerNames(conn *dbus.Conn) ([]string, error) {
-	var names []string
-	err := conn.BusObject().Call("org.freedesktop.DBus.ListNames", 0).Store(&names)
-	if err != nil {
-		return nil, err
-	}
-	var players []string
-	for _, name := range names {
-		if strings.HasPrefix(name, "org.mpris.MediaPlayer2") {
-			players = append(players, name)
-		}
-	}
-	return players, nil
-}
-
-// GetPlayerObj gets the object corresponding to the first
-// bus name found in DBus
-func getPlayerObj() (dbus.BusObject, error) {
-	players, err := getPlayerNames(method)
-	if err != nil {
-		return nil, err
-	}
-	if len(players) == 0 {
-		return nil, nil
-	}
-	return method.Object(players[0], "/org/mpris/MediaPlayer2"), nil
-}
-
-// parsePropertiesChanged parses a DBus PropertiesChanged signal
-func parsePropertiesChanged(msg *dbus.Message) (iface string, changed map[string]dbus.Variant, ok bool) {
-	if len(msg.Body) != 3 {
-		return "", nil, false
-	}
-	iface, ok = msg.Body[0].(string)
-	if !ok {
-		return
-	}
-	changed, ok = msg.Body[1].(map[string]dbus.Variant)
-	if !ok {
-		return
-	}
-	return
-}