refactor: add methods to get focused object's ID

Created extra methods to get the IDs of the card or status in focus in
order to reduce repeated code.
This commit is contained in:
Dan Anglin 2024-01-11 09:47:51 +00:00
parent a632c57655
commit e961bfc756
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638

View file

@ -103,17 +103,14 @@ func (u *UI) init() error {
} }
case letter == 'm': case letter == 'm':
if u.mode == normal { if u.mode == normal {
focusedCard := u.columns[u.focusedColumn].focusedCard u.statusSelection.cardID = u.focusedCardID()
u.statusSelection.cardID = u.columns[u.focusedColumn].cards[focusedCard].id u.statusSelection.currentStatusID = u.focusedStatusID()
u.statusSelection.currentStatusID = u.columns[u.focusedColumn].statusID
u.mode = selection u.mode = selection
} }
case letter == 'e': case letter == 'e':
if u.mode == normal { if u.mode == normal {
u.cardModal.mode = edit u.cardModal.mode = edit
focusedCard := u.columns[u.focusedColumn].focusedCard card, _ := u.getFocusedCard()
cardID := u.columns[u.focusedColumn].cards[focusedCard].id
card, _ := u.board.Card(cardID)
u.cardModal.updateInputFields(card.Title, card.Description) u.cardModal.updateInputFields(card.Title, card.Description)
u.cardModal.frame.SetTitle(" Edit Card ") u.cardModal.frame.SetTitle(" Edit Card ")
u.pages.ShowPage(cardModalPage) u.pages.ShowPage(cardModalPage)
@ -135,7 +132,7 @@ func (u *UI) init() error {
} }
case key == tcell.KeyEnter: case key == tcell.KeyEnter:
if u.mode == selection { if u.mode == selection {
u.statusSelection.nextStatusID = u.columns[u.focusedColumn].statusID u.statusSelection.nextStatusID = u.focusedStatusID()
if u.statusSelection.currentStatusID != u.statusSelection.nextStatusID { if u.statusSelection.currentStatusID != u.statusSelection.nextStatusID {
u.statusSelection.moveCard(u.board) u.statusSelection.moveCard(u.board)
} }
@ -176,9 +173,7 @@ func (u *UI) initCardModal() {
case create: case create:
_ = u.newCard(title, description) _ = u.newCard(title, description)
case edit: case edit:
focusedCard := u.columns[u.focusedColumn].focusedCard _ = u.editFocusedCard(title, description)
cardID := u.columns[u.focusedColumn].cards[focusedCard].id
_ = u.editCard(cardID, title, description)
} }
} }
@ -193,7 +188,7 @@ func (u *UI) initCardModal() {
func (u *UI) initDeleteCardModal() { func (u *UI) initDeleteCardModal() {
doneFunc := func(_ int, buttonLabel string) { doneFunc := func(_ int, buttonLabel string) {
if buttonLabel == "Confirm" { if buttonLabel == "Confirm" {
u.deleteCard() u.deleteFocusedCard()
_ = u.refresh(true) _ = u.refresh(true)
} }
@ -239,8 +234,10 @@ func (u *UI) newCard(title, description string) error {
return nil return nil
} }
// editCard saves and edited card to the database. // editFocusedCard saves and edited card to the database.
func (u *UI) editCard(cardID int, title, description string) error { func (u *UI) editFocusedCard(title, description string) error {
cardID := u.focusedCardID()
args := board.UpdateCardArgs{ args := board.UpdateCardArgs{
CardID: cardID, CardID: cardID,
CardArgs: board.CardArgs{ CardArgs: board.CardArgs{
@ -258,15 +255,23 @@ func (u *UI) editCard(cardID int, title, description string) error {
return nil return nil
} }
// deleteCard deletes a card from the board. // getFocusedCard retrieves the details of the focused card.
func (u *UI) deleteCard() { func (u *UI) getFocusedCard() (board.Card, error) {
statusID := u.columns[u.focusedColumn].statusID cardID := u.focusedCardID()
focusedCard := u.columns[u.focusedColumn].focusedCard
cardID := u.columns[u.focusedColumn].cards[focusedCard].id
card, err := u.board.Card(cardID)
if err != nil {
return board.Card{}, fmt.Errorf("unable to retrieve the card with card ID %d, %w", cardID, err)
}
return card, nil
}
// deleteFocusedCard deletes the focused card from the board.
func (u *UI) deleteFocusedCard() {
args := board.DeleteCardArgs{ args := board.DeleteCardArgs{
CardID: cardID, CardID: u.focusedCardID(),
StatusID: statusID, StatusID: u.focusedStatusID(),
} }
_ = u.board.DeleteCard(args) _ = u.board.DeleteCard(args)
@ -362,3 +367,16 @@ func (u *UI) shutdown() {
func (u *UI) boardMode() boardMode { func (u *UI) boardMode() boardMode {
return u.mode return u.mode
} }
// focusedCardID returns the ID of the card in focus.
func (u *UI) focusedCardID() int {
focusedCard := u.columns[u.focusedColumn].focusedCard
id := u.columns[u.focusedColumn].cards[focusedCard].id
return id
}
// focusedStatusID returns the ID of thestatus (column) in focus.
func (u *UI) focusedStatusID() int {
return u.columns[u.focusedColumn].statusID
}