Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions packages/neuron-wallet/src/exceptions/transaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,13 @@ export class TransactionInputParameterMiss extends Error {
}
}

export class UnrecognizedLockScript extends Error {
public code = 117
constructor(message: string) {
super(message)
}
}

export default {
TransactionNotFound,
CapacityTooSmall,
Expand Down
6 changes: 6 additions & 0 deletions packages/neuron-wallet/src/locales/ar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,12 @@ export default {
ignore: 'تجاهل واستمرار',
},
},
'unrecognized-multisig-transaction': {
message: 'هذه معاملة متعددة التوقيعات. يرجى الموافقة عليها من عنوان التوقيع المتعدد باستخدام المحفظة المناسبة.',
buttons: {
cancel: 'إلغاء',
},
},
},
prompt: {
password: {
Expand Down
7 changes: 7 additions & 0 deletions packages/neuron-wallet/src/locales/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,13 @@ export default {
ignore: 'Ignore and continue',
},
},
'unrecognized-multisig-transaction': {
message:
'This is a multisig transaction. Please approve it from the multisig address using the appropriate wallet. ',
buttons: {
cancel: 'Cancel',
},
},
},
prompt: {
password: {
Expand Down
7 changes: 7 additions & 0 deletions packages/neuron-wallet/src/locales/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,13 @@ export default {
ignore: 'Ignorar y continuar',
},
},
'unrecognized-multisig-transaction': {
message:
'Esta es una transacción multisignatura. Por favor, apróbala desde la dirección multisignatura utilizando la billetera correspondiente.',
buttons: {
cancel: 'Cancelar',
},
},
},
prompt: {
password: {
Expand Down
7 changes: 7 additions & 0 deletions packages/neuron-wallet/src/locales/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,13 @@ export default {
ignore: 'Ignorer et continuer',
},
},
'unrecognized-multisig-transaction': {
message:
"Il s'agit d'une transaction multisignature. Veuillez l'approuver depuis l'adresse multisignature en utilisant le portefeuille approprié.",
buttons: {
cancel: 'Annuler',
},
},
},
prompt: {
password: {
Expand Down
6 changes: 6 additions & 0 deletions packages/neuron-wallet/src/locales/zh-tw.ts
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,12 @@ export default {
ignore: '忽略並繼續',
},
},
'unrecognized-multisig-transaction': {
message: '這是一筆多簽交易。請使用對應的錢包在多簽地址中批准該交易。',
buttons: {
cancel: '取消',
},
},
},
prompt: {
password: {
Expand Down
6 changes: 6 additions & 0 deletions packages/neuron-wallet/src/locales/zh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,12 @@ export default {
ignore: '忽略并继续',
},
},
'unrecognized-multisig-transaction': {
message: '这是一笔多签交易。请使用对应的钱包在多签地址中批准该交易。',
buttons: {
cancel: '取消',
},
},
},
prompt: {
password: {
Expand Down
24 changes: 19 additions & 5 deletions packages/neuron-wallet/src/services/transaction-sender.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import {
NoMatchAddressForSign,
SignTransactionFailed,
TransactionIsNotCommittedYet,
UnrecognizedLockScript,
} from '../exceptions'
import AssetAccountInfo from '../models/asset-account-info'
import MultisigConfigModel from '../models/multisig-config'
Expand Down Expand Up @@ -206,19 +207,32 @@ export default class TransactionSender {
} catch (error) {
const BLOCK_UNRECOGNIZED = 0
const IGNORE_UNRECOGNIZED_AND_CONTINUE = 1

let message = t('messageBox.unrecognized-lock-script.message')
let buttons = [
t('messageBox.unrecognized-lock-script.buttons.cancel'),
t('messageBox.unrecognized-lock-script.buttons.ignore'),
]

const input = tx.inputs.find(input => input.lockHash === lockHash)
if (input && input.lock && SystemScriptInfo.isMultiSignCodeHash(input.lock.codeHash)) {
message = t('messageBox.unrecognized-multisig-transaction.message')
buttons = [t('messageBox.unrecognized-multisig-transaction.buttons.cancel')]
}

const res = await dialog.showMessageBox({
type: 'warning',
message: t('messageBox.unrecognized-lock-script.message'),
buttons: [
t('messageBox.unrecognized-lock-script.buttons.cancel'),
t('messageBox.unrecognized-lock-script.buttons.ignore'),
],
message,
buttons,
defaultId: BLOCK_UNRECOGNIZED,
cancelId: IGNORE_UNRECOGNIZED_AND_CONTINUE,
})
if (res.response === IGNORE_UNRECOGNIZED_AND_CONTINUE) {
continue
}
if (res.response === BLOCK_UNRECOGNIZED) {
throw new UnrecognizedLockScript(message)
}
throw error
}

Expand Down