support changing tags order when editing transaction

This commit is contained in:
MaysWind
2021-02-06 23:13:12 +08:00
parent aa92180dfb
commit d65ce058bf
2 changed files with 28 additions and 4 deletions
+9 -4
View File
@@ -320,8 +320,6 @@ func (a *TransactionsApi) TransactionModifyHandler(c *core.Context) (interface{}
}
transactionTagIds := allTransactionTagIds[transaction.TransactionId]
addTransactionTagIds := utils.Int64SliceMinus(tagIds, transactionTagIds)
removeTransactionTagIds := utils.Int64SliceMinus(transactionTagIds, tagIds)
newTransaction := &models.Transaction{
TransactionId: transaction.TransactionId,
@@ -345,11 +343,18 @@ func (a *TransactionsApi) TransactionModifyHandler(c *core.Context) (interface{}
(transaction.Type != models.TRANSACTION_DB_TYPE_TRANSFER_OUT || newTransaction.RelatedAccountId == transaction.RelatedAccountId) &&
(transaction.Type != models.TRANSACTION_DB_TYPE_TRANSFER_OUT || newTransaction.RelatedAccountAmount == transaction.RelatedAccountAmount) &&
newTransaction.Comment == transaction.Comment &&
len(addTransactionTagIds) < 1 &&
len(removeTransactionTagIds) < 1 {
utils.Int64SliceEquals(tagIds, transactionTagIds) {
return nil, errs.ErrNothingWillBeUpdated
}
var addTransactionTagIds []int64
var removeTransactionTagIds []int64
if !utils.Int64SliceEquals(tagIds, transactionTagIds) {
removeTransactionTagIds = transactionTagIds
addTransactionTagIds = tagIds
}
err = a.transactions.ModifyTransaction(newTransaction, addTransactionTagIds, removeTransactionTagIds)
if err != nil {
+19
View File
@@ -1,5 +1,24 @@
package utils
// Int64SliceEquals returns whether specific two int64 arrays equal
func Int64SliceEquals(s1, s2 []int64) bool {
if (s1 == nil) != (s2 == nil) {
return false
}
if len(s1) != len(s2) {
return false
}
for i := 0; i < len(s1); i++ {
if s1[i] != s2[i] {
return false
}
}
return true
}
// Int64SliceMinus returns a int64 array which contains items in s1 but not in s2
func Int64SliceMinus(s1, s2 []int64) []int64 {
if s1 == nil {