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:
parent
a632c57655
commit
e961bfc756
1 changed files with 38 additions and 20 deletions
|
@ -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
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue