import (
"context"
+ "sort"
log "github.com/sirupsen/logrus"
return NewSuccessResponse(annotatedAccount)
}
-// AccountInfo
+// AccountInfo is request struct for deleteAccount
type AccountInfo struct {
Info string `json:"account_info"`
}
Change bool `json:"change"`
}
+type addressRespIndex struct {
+ KeyIndex uint64
+ AddressResp addressResp
+}
+
+// SortByIndex implements sort.Interface for addressRespIndex slices
+type SortByIndex []addressRespIndex
+
+func (a SortByIndex) Len() int { return len(a) }
+func (a SortByIndex) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
+func (a SortByIndex) Less(i, j int) bool { return a[i].KeyIndex < a[j].KeyIndex }
+
func (a *API) listAddresses(ctx context.Context, ins struct {
AccountID string `json:"account_id"`
AccountAlias string `json:"account_alias"`
return NewErrorResponse(err)
}
- addresses := []*addressResp{}
+ addressRespIndexes := []addressRespIndex{}
for _, cp := range cps {
if cp.Address == "" || cp.AccountID != target.ID {
continue
}
- addresses = append(addresses, &addressResp{
- AccountAlias: target.Alias,
- AccountID: cp.AccountID,
- Address: cp.Address,
- Change: cp.Change,
- })
+
+ addressIndex := addressRespIndex{
+ KeyIndex: cp.KeyIndex,
+ AddressResp: addressResp{
+ AccountAlias: target.Alias,
+ AccountID: cp.AccountID,
+ Address: cp.Address,
+ Change: cp.Change,
+ },
+ }
+ addressRespIndexes = append(addressRespIndexes, addressIndex)
+ }
+
+ // sort AddressResp by KeyIndex
+ addresses := []addressResp{}
+ sort.Sort(SortByIndex(addressRespIndexes))
+ for _, addr := range addressRespIndexes {
+ addresses = append(addresses, addr.AddressResp)
}
+
return NewSuccessResponse(addresses)
}