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