Skip to content

Commit e03e57e

Browse files
feat: remember last board, list for new card dialog
Signed-off-by: Luka Trovic <luka@nextcloud.com>
1 parent 56a0025 commit e03e57e

3 files changed

Lines changed: 34 additions & 7 deletions

File tree

cypress/e2e/cardFeatures.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -149,11 +149,8 @@ describe('Card', function() {
149149
cy.get('.reference-picker-modal--content .reference-picker').should('be.visible')
150150
cy.get('.reference-picker-modal--content .reference-picker').contains('Create a new card')
151151
cy.get('.reference-picker-modal--content .reference-picker .card-title').should('be.visible').click().type(newCardTitle)
152-
cy.get('.reference-picker-modal--content .reference-picker .multiselect-board').should('be.visible').click()
153-
cy.get('.reference-picker-modal--content .reference-picker .multiselect-board li:contains("' + boardData.title + '")').should('be.visible').click()
154-
cy.wait('@getBoard', { timeout: 7000 })
155-
cy.get('.reference-picker-modal--content .reference-picker .multiselect-list').should('be.visible').click()
156-
cy.get('.reference-picker-modal--content .reference-picker .multiselect-list li').eq(0).should('be.visible').click()
152+
cy.get('.reference-picker-modal--content .reference-picker .multiselect-board').should('be.visible').contains(boardData.title)
153+
cy.get('.reference-picker-modal--content .reference-picker .multiselect-list').should('be.visible').contains(boardData.stacks[0].title)
157154
cy.get('.reference-picker-modal--content .reference-picker button.button-vue--vue-primary').should('be.visible').click()
158155
cy.wait('@save', { timeout: 7000 })
159156
cy.get('.modal__card .ProseMirror').contains('/index.php/apps/deck/card/').should('be.visible')

src/components/card/CardSidebarTabDetails.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,8 @@ export default {
129129
}
130130
131131
this.copiedCard = JSON.parse(JSON.stringify(this.card))
132+
localStorage.setItem('deck.selectedBoardId', this.currentBoard.id)
133+
localStorage.setItem('deck.selectedStackId', this.card.stackId)
132134
},
133135
134136
async updateCardDue(val) {

src/views/CreateNewCardCustomPicker.vue

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
:disabled="loading"
2222
label="title"
2323
class="selector-wrapper--selector multiselect-board"
24-
@select="fetchBoardDetails">
24+
@select="onSelectBoard">
2525
<template slot="singleLabel" slot-scope="props">
2626
<span>
2727
<span :style="{ 'backgroundColor': '#' + props.option.color }" class="board-bullet" />
@@ -47,7 +47,8 @@
4747
:max-height="100"
4848
:disabled="loading || !selectedBoard"
4949
class="selector-wrapper--selector multiselect-list"
50-
label="title" />
50+
label="title"
51+
@select="onSelectStack" />
5152
</div>
5253
</div>
5354

@@ -220,6 +221,7 @@ export default {
220221
return board?.permissions?.PERMISSION_EDIT && !board?.archived && !board?.deletedAt
221222
})
222223
this.loading = false
224+
this.preSelectBoard()
223225
})
224226
},
225227
async fetchBoardDetails(board) {
@@ -230,6 +232,7 @@ export default {
230232
this.labels = response.data.labels
231233
this.boardUsers = response.data.users
232234
this.boardAcl = response.data.acl
235+
this.preSelectStack()
233236
} catch (err) {
234237
return err
235238
}
@@ -295,6 +298,31 @@ export default {
295298
openNewCard() {
296299
window.location = generateUrl('/apps/deck') + `#/board/${this.selectedBoard.id}/card/${this.newCard.id}`
297300
},
301+
preSelectBoard() {
302+
const selectedBoardId = Number(localStorage.getItem('deck.selectedBoardId'))
303+
const preSelectedBoard = this.boards.find(item => item.id === selectedBoardId)
304+
305+
if (preSelectedBoard) {
306+
this.selectedBoard = preSelectedBoard
307+
this.onSelectBoard(preSelectedBoard)
308+
}
309+
},
310+
preSelectStack() {
311+
const selectedStackId = Number(localStorage.getItem('deck.selectedStackId'))
312+
const preSelectedStack = this.stacksFromBoard.find(item => item.id === selectedStackId)
313+
314+
if (preSelectedStack) {
315+
this.selectedStack = preSelectedStack
316+
}
317+
},
318+
async onSelectBoard(board) {
319+
localStorage.setItem('deck.selectedBoardId', board.id)
320+
this.selectedStack = ''
321+
await this.fetchBoardDetails(board)
322+
},
323+
onSelectStack(stack) {
324+
localStorage.setItem('deck.selectedStackId', stack.id)
325+
},
298326
},
299327
300328
}

0 commit comments

Comments
 (0)