refactor user defined keypad
This commit is contained in:
@@ -14,28 +14,31 @@ type UserSignSession struct {
|
||||
SessionId m.SessionId
|
||||
CustomerId m.CustomerId
|
||||
LoginUserInterface UserInterface
|
||||
Keypad m.KeypadSize
|
||||
Kp m.KeypadDimension
|
||||
SetIdxInterface m.IdxInterface
|
||||
ConfirmIdxInterface m.IdxInterface
|
||||
SetKeySelection m.KeySelection
|
||||
Username m.Username
|
||||
}
|
||||
|
||||
func NewSignupSession(keypadSize m.KeypadSize, customerId m.CustomerId) (*UserSignSession, error) {
|
||||
loginInterface, err := NewUserInterface(keypadSize)
|
||||
func NewSignupSession(kp m.KeypadDimension, customerId m.CustomerId) (*UserSignSession, error) {
|
||||
loginInterface, err := NewUserInterface(&kp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
signupInterface, err := signupInterface(*loginInterface, kp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
signupInter, err := signupInterface(*loginInterface)
|
||||
session := UserSignSession{
|
||||
SessionId: m.SessionId(uuid.New()),
|
||||
CustomerId: customerId,
|
||||
LoginUserInterface: *loginInterface,
|
||||
SetIdxInterface: signupInter.IdxInterface,
|
||||
SetIdxInterface: signupInterface.IdxInterface,
|
||||
ConfirmIdxInterface: nil,
|
||||
SetKeySelection: nil,
|
||||
Username: "",
|
||||
Keypad: signupInter.KeypadSize,
|
||||
Kp: kp,
|
||||
}
|
||||
|
||||
return &session, nil
|
||||
@@ -43,11 +46,11 @@ func NewSignupSession(keypadSize m.KeypadSize, customerId m.CustomerId) (*UserSi
|
||||
|
||||
func (s *UserSignSession) DeducePasscode(confirmKeyEntry m.KeySelection) ([]int, error) {
|
||||
validEntry := py.All[int](confirmKeyEntry, func(i int) bool {
|
||||
return 0 <= i && i < s.LoginUserInterface.KeypadSize.NumbOfKeys
|
||||
return 0 <= i && i < s.Kp.NumbOfKeys
|
||||
})
|
||||
|
||||
if !validEntry {
|
||||
return nil, errors.New(fmt.Sprintf("Invalid Key entry. One or more key index: %#v, not in range 0-%d", confirmKeyEntry, s.LoginUserInterface.KeypadSize.NumbOfKeys))
|
||||
return nil, errors.New(fmt.Sprintf("Invalid Key entry. One or more key index: %#v, not in range 0-%d", confirmKeyEntry, s.Kp.NumbOfKeys))
|
||||
}
|
||||
|
||||
if s.SetIdxInterface == nil {
|
||||
@@ -96,16 +99,16 @@ func (s *UserSignSession) DeducePasscode(confirmKeyEntry m.KeySelection) ([]int,
|
||||
|
||||
func (s *UserSignSession) SetUserNKode(username m.Username, keySelection m.KeySelection) (m.IdxInterface, error) {
|
||||
validKeySelection := py.All[int](keySelection, func(i int) bool {
|
||||
return 0 <= i && i < s.Keypad.NumbOfKeys
|
||||
return 0 <= i && i < s.Kp.NumbOfKeys
|
||||
})
|
||||
if !validKeySelection {
|
||||
return nil, errors.New(fmt.Sprintf("one or key selection is out of range 0-%d", s.Keypad.NumbOfKeys-1))
|
||||
return nil, errors.New(fmt.Sprintf("one or key selection is out of range 0-%d", s.Kp.NumbOfKeys-1))
|
||||
}
|
||||
|
||||
s.SetKeySelection = keySelection
|
||||
s.Username = username
|
||||
|
||||
setInterface := UserInterface{IdxInterface: s.SetIdxInterface, KeypadSize: s.Keypad}
|
||||
setKp := s.SignupKeypad()
|
||||
setInterface := UserInterface{IdxInterface: s.SetIdxInterface, kp: &setKp}
|
||||
err := setInterface.DisperseInterface()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -115,7 +118,8 @@ func (s *UserSignSession) SetUserNKode(username m.Username, keySelection m.KeySe
|
||||
}
|
||||
|
||||
func (s *UserSignSession) getSelectedKeyVals(keySelections m.KeySelection, userInterface []int) ([][]int, error) {
|
||||
keypadInterface, err := util.ListToMatrix(userInterface, s.Keypad.AttrsPerKey)
|
||||
signupKp := s.SignupKeypad()
|
||||
keypadInterface, err := util.ListToMatrix(userInterface, signupKp.AttrsPerKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -127,8 +131,8 @@ func (s *UserSignSession) getSelectedKeyVals(keySelections m.KeySelection, userI
|
||||
return keyVals, nil
|
||||
}
|
||||
|
||||
func signupInterface(baseUserInterface UserInterface) (*UserInterface, error) {
|
||||
if baseUserInterface.KeypadSize.IsDispersable() {
|
||||
func signupInterface(baseUserInterface UserInterface, kp m.KeypadDimension) (*UserInterface, error) {
|
||||
if kp.IsDispersable() {
|
||||
return nil, errors.New("keypad is dispersable, can't use signupInterface")
|
||||
}
|
||||
err := baseUserInterface.RandomShuffle()
|
||||
@@ -147,7 +151,7 @@ func signupInterface(baseUserInterface UserInterface) (*UserInterface, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
numbOfKeys := baseUserInterface.KeypadSize.NumbOfKeys
|
||||
numbOfKeys := kp.NumbOfKeys
|
||||
attrSetView = attrSetView[:numbOfKeys]
|
||||
attrSetView, err = util.MatrixTranspose(attrSetView)
|
||||
if err != nil {
|
||||
@@ -155,10 +159,17 @@ func signupInterface(baseUserInterface UserInterface) (*UserInterface, error) {
|
||||
}
|
||||
signupUserInterface := UserInterface{
|
||||
IdxInterface: util.MatrixToList(attrSetView),
|
||||
KeypadSize: m.KeypadSize{
|
||||
kp: &m.KeypadDimension{
|
||||
AttrsPerKey: numbOfKeys,
|
||||
NumbOfKeys: numbOfKeys,
|
||||
},
|
||||
}
|
||||
return &signupUserInterface, nil
|
||||
}
|
||||
|
||||
func (s *UserSignSession) SignupKeypad() m.KeypadDimension {
|
||||
return m.KeypadDimension{
|
||||
AttrsPerKey: s.Kp.NumbOfKeys,
|
||||
NumbOfKeys: s.Kp.NumbOfKeys,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user