Skip to content

Commit

Permalink
return parseAmount(value, 6);
Browse files Browse the repository at this point in the history
  • Loading branch information
inozemtsev-roman committed Sep 1, 2024
1 parent 7317386 commit fa6bab7
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 27 deletions.
2 changes: 1 addition & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<!doctype html><html lang="en" translate="no"><head><meta charset="utf-8"/><meta property="“og:image”" content="“https://raw.githubusercontent.com/aerlybirds/multisig/main/mn.png”"/><meta property="”og:image:width”" content="”500″"/><meta property="”og:image:height”" content="”5000″"/><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no,viewport-fit=cover"><title>Мультикошелек Ærly Birds</title><link rel="stylesheet" href="css/main.css?4"><script defer="defer" src="main.js"></script><script defer="defer" src="main.js"></script></head><body><div class="testnet-badge" style="display: none">ATTENTION! This is the test network — don’t send real Toncoin!</div><div id="header"><a href="https://t.me/aerlybirds"><div id="header_logo"></div></a><div id="header_title">Æ Мультикошелек</div><div id="header_grow"></div><div id="tonConnectButton"></div></div><div id="startScreen" class="screen"><button id="createMultisigButton">Создать новый мультикошелек</button> <button id="importMultisigButton">Импортировать мультикошелек</button></div><div id="importScreen" class="screen"><div>Введите адрес:</div><input id="import_input"> <button id="import_okButton">Импортировать</button> <button id="import_backButton">Назад</button></div><div id="multisigScreen" class="screen"><div class="panel"><div><div class="label">Адрес мультикошелька:</div><div id="mulisig_address" class="value"></div><button id="multisig_logoutButton">Сменить на другой мультикошелек</button></div><div id="multisig_error"></div><div id="multisig_content"><div><div class="label">Баланс в TON:</div><div id="multisig_tonBalance" class="value"></div></div><div><div class="label">Порог голосования (например 5/6, если для подтверждения требуется 5 из 6 подтверждающих):</div><div id="multisig_threshold" class="value"></div><div class="label">Подтверждающие:</div><div id="multisig_signersList"></div><div class="label">Предлагающие:</div><div id="multisig_proposersList"></div><div class="label">Идентификатор заявки:</div><div id="multisig_orderId" class="value"></div><button id="multisig_updateButton">Сменить конфигурацию мультикошелька</button></div><button id="multisig_createNewOrderButton" class="btn-primary">Создать новую заявку</button><div id="mainScreen_ordersList"></div></div></div></div><div id="newOrderScreen" class="screen"><div class="panel"><div class="label">Идентификатор заявки:</div><input id="newOrder_orderId"><div class="label">Тип заявки:</div><select id="newOrder_typeInput"></select><div id="newOrder_fieldsContainer"></div><button id="newOrder_createButton">Создать</button> <button id="newOrder_backButton">Назад</button></div></div><div id="newMultisigScreen" class="screen"><div class="panel"><div id="newMultisig_orderIdLabel" class="label">Идентификатор заявки:</div><input id="newMultisig_orderId"><div class="label">Подтверждающие:</div><div id="newMultisig_signersContainer"></div><button id="newMultisig_addSignerButton">Добавить подтверждающего</button><div class="line"></div><div class="label">Предлагающие:</div><div id="newMultisig_proposersContainer"></div><button id="newMultisig_addProposerButton">Добавить предлагающего</button><div class="line"></div><div class="label">Порог голосования:</div><input id="newMultisig_threshold"> <button id="newMultisig_createButton">Далее</button> <button id="newMultisig_backButton">Назад</button></div></div><div id="orderScreen" class="screen"><div class="panel"><div><div class="label">Идентификатор заявки:</div><div id="order_id" class="value"></div><div class="label">Адрес заявки:</div><div id="order_address" class="value"></div></div><div id="order_error"></div><div id="order_content"><div><div class="label">Баланс в TON:</div><div id="order_tonBalance" class="value"></div></div><div><div class="label">Выполнено:</div><div id="order_executed" class="value"></div><div class="label">Одобрено:</div><div id="order_approvals" class="value"></div><div class="label">Подтверждающие:</div><div id="order_signersList"></div><div class="label">Заявка истекает:</div><div id="order_expiresAt" class="value"></div></div><div id="order_actionsTitle" class="label">Действия:</div><div id="order_actions"></div><button id="order_approveButton" class="btn-primary">Одобряю</button><div id="order_approveNote">или отправьте 0,1 TON с комментарием "approve" на адрес заявки.</div></div><button id="order_backButton">Назад</button></div></div><div id="loadingScreen" class="screen"><div class="loading"></div></div></body></html>
<!doctype html><html lang="en" translate="no"><head><meta charset="utf-8"/><meta prefix="og: https://raw.githubusercontent.com/aerlybirds/multisig/main/mn.png"/><meta property="“og:image”" content="“https://raw.githubusercontent.com/aerlybirds/multisig/main/mn.png”"/><meta property="”og:image:width”" content="”500″"/><meta property="”og:image:height”" content="”5000″"/><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no,viewport-fit=cover"><title>Мультикошелек Ærly Birds</title><link rel="stylesheet" href="css/main.css?4"><script defer="defer" src="main.js"></script><script defer="defer" src="main.js"></script></head><body><div class="testnet-badge" style="display: none">ATTENTION! This is the test network — don’t send real Toncoin!</div><div id="header"><a href="https://t.me/aerlybirds"><div id="header_logo"></div></a><div id="header_title">Æ Мультикошелек</div><div id="header_grow"></div><div id="tonConnectButton"></div></div><div id="startScreen" class="screen"><button id="createMultisigButton">Создать новый мультикошелек</button> <button id="importMultisigButton">Импортировать мультикошелек</button></div><div id="importScreen" class="screen"><div>Введите адрес:</div><input id="import_input"> <button id="import_okButton">Импортировать</button> <button id="import_backButton">Назад</button></div><div id="multisigScreen" class="screen"><div class="panel"><div><div class="label">Адрес мультикошелька:</div><div id="mulisig_address" class="value"></div><button id="multisig_logoutButton">Сменить на другой мультикошелек</button></div><div id="multisig_error"></div><div id="multisig_content"><div><div class="label">Баланс в TON:</div><div id="multisig_tonBalance" class="value"></div></div><div><div class="label">Порог голосования (например 5/6, если для подтверждения требуется 5 из 6 подтверждающих):</div><div id="multisig_threshold" class="value"></div><div class="label">Подтверждающие:</div><div id="multisig_signersList"></div><div class="label">Предлагающие:</div><div id="multisig_proposersList"></div><div class="label">Идентификатор заявки:</div><div id="multisig_orderId" class="value"></div><button id="multisig_updateButton">Сменить конфигурацию мультикошелька</button></div><button id="multisig_createNewOrderButton" class="btn-primary">Создать новую заявку</button><div id="mainScreen_ordersList"></div></div></div></div><div id="newOrderScreen" class="screen"><div class="panel"><div class="label">Идентификатор заявки:</div><input id="newOrder_orderId"><div class="label">Тип заявки:</div><select id="newOrder_typeInput"></select><div id="newOrder_fieldsContainer"></div><button id="newOrder_createButton">Создать</button> <button id="newOrder_backButton">Назад</button></div></div><div id="newMultisigScreen" class="screen"><div class="panel"><div id="newMultisig_orderIdLabel" class="label">Идентификатор заявки:</div><input id="newMultisig_orderId"><div class="label">Подтверждающие:</div><div id="newMultisig_signersContainer"></div><button id="newMultisig_addSignerButton">Добавить подтверждающего</button><div class="line"></div><div class="label">Предлагающие:</div><div id="newMultisig_proposersContainer"></div><button id="newMultisig_addProposerButton">Добавить предлагающего</button><div class="line"></div><div class="label">Порог голосования:</div><input id="newMultisig_threshold"> <button id="newMultisig_createButton">Далее</button> <button id="newMultisig_backButton">Назад</button></div></div><div id="orderScreen" class="screen"><div class="panel"><div><div class="label">Идентификатор заявки:</div><div id="order_id" class="value"></div><div class="label">Адрес заявки:</div><div id="order_address" class="value"></div></div><div id="order_error"></div><div id="order_content"><div><div class="label">Баланс в TON:</div><div id="order_tonBalance" class="value"></div></div><div><div class="label">Выполнено:</div><div id="order_executed" class="value"></div><div class="label">Одобрено:</div><div id="order_approvals" class="value"></div><div class="label">Подтверждающие:</div><div id="order_signersList"></div><div class="label">Заявка истекает:</div><div id="order_expiresAt" class="value"></div></div><div id="order_actionsTitle" class="label">Действия:</div><div id="order_actions"></div><button id="order_approveButton" class="btn-primary">Одобряю</button><div id="order_approveNote">или отправьте 0,1 TON с комментарием "approve" на адрес заявки.</div></div><button id="order_backButton">Назад</button></div></div><div id="loadingScreen" class="screen"><div class="loading"></div></div></body></html>
2 changes: 1 addition & 1 deletion docs/main.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

<head>
<meta charset="utf-8" />
<meta prefix="og: https://raw.githubusercontent.com/aerlybirds/multisig/main/mn.png" />
<meta property=“og:image” content=“https://raw.githubusercontent.com/aerlybirds/multisig/main/mn.png” />

<meta property=”og:image:width” content=”500″ />
Expand Down
29 changes: 17 additions & 12 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -728,12 +728,12 @@ const validateValue = (
const units = BigInt(inputAmount);

if (units <= 0) {
return makeError("Enter positive amount");
return makeError("Введите положительное число");
}

return makeValue(units);
} catch (e: any) {
return makeError("Invalid amount");
return makeError("Неправильная сумма");
}
};

Expand All @@ -745,39 +745,39 @@ const validateValue = (
const units = toUnits(inputAmount, decimals);

if (units <= 0) {
return makeError("Enter positive amount");
return makeError("Введите положительное число");
}

return makeValue(units);
} catch (e: any) {
return makeError("Invalid amount");
return makeError("Неправильная сумма");
}
};

if (value === null || value === undefined || value === "") {
return makeError(`Empty`);
return makeError(`Пусто`);
}

switch (fieldType) {
case "TON":
return parseAmount(value, 9);

case "Jetton":
return parseBigInt(value);
return parseAmount(value, 6);

case "Address":
if (!Address.isFriendly(value)) {
return makeError("Invalid Address");
return makeError("Неправильный адрес");
}
const address = Address.parseFriendly(value);
if (address.isTestOnly && !IS_TESTNET) {
return makeError("Please enter mainnet address");
return makeError("Пожалуйста, введите адрес из основной сети");
}
return makeValue(address);

case "URL":
if (!value.startsWith("https://")) {
return makeError("Invalid URL");
return makeError("Неправильный URL адрес");
}
return makeValue(value);

Expand All @@ -786,7 +786,8 @@ const validateValue = (
return makeValue(value);
} else {
return makeError(
"Invalid status. Please use: " + LOCK_TYPES.join(", ")
"Неправильный статус. Пожалуйста, используйте: " +
LOCK_TYPES.join(", ")
);
}
}
Expand Down Expand Up @@ -827,7 +828,9 @@ const checkJettonMinterAdmin = async (values: {
);

if (!multisigInfo.address.address.equals(jettonMinterInfo.adminAddress)) {
return { error: "Multisig is not admin of this jetton" };
return {
error: "Мультикошелек не является администратором этого жетона",
};
}

return { value: jettonMinterInfo };
Expand All @@ -853,7 +856,9 @@ const checkJettonMinterNextAdmin = async (values: {
!jettonMinterInfo.nextAdminAddress ||
!multisigInfo.address.address.equals(jettonMinterInfo.nextAdminAddress)
) {
return { error: "Multisig is not next-admin of this jetton" };
return {
error: "Мультикошелек не является администратором этого жетона",
};
}

return { value: jettonMinterInfo };
Expand Down
28 changes: 15 additions & 13 deletions src/multisig/MultisigOrderChecker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,7 @@ export const checkMultisigOrder = async (
);
return `Принудительная отправка ${
parsed.action.jettonAmount
} с адреса польщователя ${fromAddress} на адрес ${toAddress}; ${fromNano(
} с адреса польщзвателя ${fromAddress} на адрес ${toAddress}; ${fromNano(
parsed.tonAmount
)} TON for gas`;
} catch (e) {}
Expand Down Expand Up @@ -351,22 +351,22 @@ export const checkMultisigOrder = async (
let allBalance = false;

if (sendMode & 1) {
sendModeString.push("Pays fees separately");
sendModeString.push("Комиссии оплачиваются отдельно");
}
if (sendMode & 2) {
sendModeString.push("Ignore sending errors");
sendModeString.push("Игнорировать ошибки отправки");
}
if (sendMode & 128) {
allBalance = true;
sendModeString.push("CARRY ALL BALANCE");
sendModeString.push("Сохранить весь баланс");
}
if (sendMode & 64) {
sendModeString.push(
"Carry all the remaining value of the inbound message"
"Перенесите все оставшееся значение входящего сообщения"
);
}
if (sendMode & 32) {
sendModeString.push("DESTROY ACCOUNT");
sendModeString.push("УНИЧТОЖИТЬ УЧЕТНУЮ ЗАПИСЬ");
}

const actionBody = slice.loadRef();
Expand All @@ -377,14 +377,16 @@ export const checkMultisigOrder = async (
const info: CommonMessageInfoRelaxedInternal = messageRelaxed.info as any;

const destAddress = await formatAddressAndUrl(info.dest, isTestnet);
actionString += `<div>Send ${
allBalance ? "ALL BALANCE" : fromNano(info.value.coins)
} TON to ${destAddress}</div>`;
actionString += `<div>Отправить ${
allBalance ? "ВЕСЬ БАЛАНС" : fromNano(info.value.coins)
} TON на адрес ${destAddress}</div>`;
actionString += `<div>${await parseActionBody(
messageRelaxed.body
)}</div>`;
if (sendMode) {
actionString += `<div>Send mode: ${sendModeString.join(", ")}.</div>`;
actionString += `<div>Метод отправки: ${sendModeString.join(
", "
)}.</div>`;
}
} else if (actionOp === 0x1d0cfbd3) {
// update_multisig_params
Expand All @@ -395,9 +397,9 @@ export const checkMultisigOrder = async (
: [];
endParse(slice);

assert(newSigners.length > 0, "Invalid new signers");
assert(newThreshold > 0, "Invalid new threshold");
assert(newThreshold <= newSigners.length, "Invalid new threshold");
assert(newSigners.length > 0, "Неправильный адрес подписывающего");
assert(newThreshold > 0, "Неправильный новый порог");
assert(newThreshold <= newSigners.length, "Неправильный порог");

actionString += `<div>Обновить параметры мультикошелька</div>`;
actionString += `<div>Новый порог подписей : ${newThreshold.toString()}</div>`;
Expand Down

0 comments on commit fa6bab7

Please sign in to comment.