Skip to content

Commit

Permalink
add deviceID process to greeting (#51)
Browse files Browse the repository at this point in the history
  • Loading branch information
JunNishimura committed Aug 20, 2023
1 parent cf20ffa commit a1d2a42
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 4 deletions.
1 change: 1 addition & 0 deletions ui/greeting/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ type Model struct {
qaList []*QA
viewport viewport.Model
user *spotify.PrivateUser
spotifyClient *spotify.Client
senderStyle lipgloss.Style
qaDone bool
setConfigDone bool
Expand Down
40 changes: 36 additions & 4 deletions ui/greeting/update.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package greeting

import (
"errors"
"fmt"
"strings"
"time"
Expand All @@ -12,8 +13,6 @@ import (
tea "github.com/charmbracelet/bubbletea"
)

type loadConfigMsg struct{ cfg *config.Config }
type spotifyUserMsg struct{ user *spotify.PrivateUser }
type errMsg struct{ err error }

func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
Expand Down Expand Up @@ -73,8 +72,10 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
return m, textarea.Blink
case spotifyUserMsg:
m.user = msg.user
m.spotifyClient = msg.client
return m, m.getDevice
case deviceMsg:
m.greetingDone = true
return m, tea.Batch(tiCmd, vpCmd)
case errMsg:
m.err = msg.err
return m, tea.Quit
Expand All @@ -83,6 +84,8 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
return m, tea.Batch(tiCmd, vpCmd)
}

type loadConfigMsg struct{ cfg *config.Config }

func (m Model) loadConfig() tea.Msg {
cfg, err := config.New()
if err != nil {
Expand Down Expand Up @@ -112,6 +115,11 @@ func (m Model) setClientConfig(key config.ConfKey, value any) tea.Cmd {
})
}

type spotifyUserMsg struct {
user *spotify.PrivateUser
client *spotify.Client
}

func (m Model) Authorize() tea.Msg {
authClient := auth.NewClient(m.cfg)

Expand All @@ -124,5 +132,29 @@ func (m Model) Authorize() tea.Msg {
return errMsg{err: err}
}

return spotifyUserMsg{user: user}
return spotifyUserMsg{
user: user,
client: spotifyClient,
}
}

type deviceMsg struct{ deviceID string }

func (m Model) getDevice() tea.Msg {
devices, err := m.spotifyClient.PlayerDevices(m.ctx)
if err != nil {
return errMsg{err}
}
if len(devices) == 0 {
return errMsg{
err: errors.New("fail to get device"),
}
}

deviceID := devices[0].ID.String()
if err := m.cfg.Set(config.DeviceID, deviceID); err != nil {
return errMsg{err}
}

return deviceMsg{deviceID}
}

0 comments on commit a1d2a42

Please sign in to comment.