Skip to content

Commit

Permalink
Fix PIN change
Browse files Browse the repository at this point in the history
  • Loading branch information
ubavic committed Dec 8, 2024
1 parent 163fcb2 commit 38fc538
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 4 deletions.
3 changes: 3 additions & 0 deletions internal/gui/pinChange.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"fyne.io/fyne/v2/dialog"
"fyne.io/fyne/v2/widget"
"github.com/ubavic/bas-celik/card"
"github.com/ubavic/bas-celik/internal/gui/reader"
"github.com/ubavic/bas-celik/internal/gui/widgets"
"github.com/ubavic/bas-celik/internal/logger"
)
Expand Down Expand Up @@ -78,6 +79,7 @@ func pinForm(win fyne.Window) {
return
}

reader.CancelReaderPoler()
err := gemaltoCard.ChangePin(newPinEntry.Text, oldPinEntry.Text)
if err != nil {
pinDialog.Hide()
Expand All @@ -89,6 +91,7 @@ func pinForm(win fyne.Window) {
dialog.ShowInformation(t("pinChange.title"), t("pinChange.success"), win)
logger.Info("pin changed")
}
reader.RestartReaderPoler()
},
CancelText: t("pinChange.cancel"),
OnCancel: func() {
Expand Down
20 changes: 16 additions & 4 deletions internal/gui/reader/poller.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
)

var created = false
var createdPoller *ReaderPoller

type ReaderPoller struct {
readerListerContext *scard.Context
Expand Down Expand Up @@ -50,7 +51,9 @@ func NewPoller(readerLister ReaderLister, onCardEvent func(string, *scard.Contex

readerLister.HookReaderChange(poller.SetReader)

return &poller, nil
createdPoller = &poller

return createdPoller, nil
}

func (rp *ReaderPoller) StartPoller() {
Expand Down Expand Up @@ -105,13 +108,11 @@ func (rp *ReaderPoller) SetReader(newReader string) {
rp.readerPollerStarted.Store(false)
rp.singleReaderContext.Cancel()
}
rp.onCardEvent(newReader, rp.singleReaderContext)
go rp.readerPoller(newReader)
}

func (rp *ReaderPoller) readerPoller(selectedReader string) {

rp.onCardEvent(selectedReader, rp.singleReaderContext)

for {
if selectedReader == "" {
return
Expand All @@ -138,3 +139,14 @@ func (rp *ReaderPoller) readerPoller(selectedReader string) {
rp.onCardEvent(selectedReader, rp.singleReaderContext)
}
}

func CancelReaderPoler() {
if createdPoller.readerPollerStarted.Load() {
createdPoller.readerPollerStarted.Store(false)
createdPoller.singleReaderContext.Cancel()
}
}

func RestartReaderPoler() {
go createdPoller.readerPoller(createdPoller.currentReader)
}

0 comments on commit 38fc538

Please sign in to comment.