|
|
|
@ -63,6 +63,15 @@ InviteByLinkDialog::InviteByLinkDialog(const QString& channelId, UtunNode* node, |
|
|
|
|
|
|
|
|
|
|
|
connect(m_inviteLinkEdit, &QLineEdit::returnPressed, this, &InviteByLinkDialog::onSendInvite); |
|
|
|
connect(m_inviteLinkEdit, &QLineEdit::returnPressed, this, &InviteByLinkDialog::onSendInvite); |
|
|
|
connect(m_inviteLinkEdit, &QLineEdit::textChanged, this, &InviteByLinkDialog::onInviteLinkTextChanged); |
|
|
|
connect(m_inviteLinkEdit, &QLineEdit::textChanged, this, &InviteByLinkDialog::onInviteLinkTextChanged); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gui_bridge_set_connect_result_cb([](uint64_t nodeId, uint64_t channelId, int result) { |
|
|
|
|
|
|
|
InviteByLinkDialog* dlg = qobject_cast<InviteByLinkDialog*>(QApplication::activeModalWidget()); |
|
|
|
|
|
|
|
if (dlg) dlg->onConnectResult(nodeId, channelId, result); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
InviteByLinkDialog::~InviteByLinkDialog() { |
|
|
|
|
|
|
|
gui_bridge_set_connect_result_cb(nullptr); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void InviteByLinkDialog::onInviteLinkTextChanged() { |
|
|
|
void InviteByLinkDialog::onInviteLinkTextChanged() { |
|
|
|
@ -164,6 +173,7 @@ void InviteByLinkDialog::onSendInvite() { |
|
|
|
|
|
|
|
|
|
|
|
m_inviteSending = true; |
|
|
|
m_inviteSending = true; |
|
|
|
m_inviteSendBtn->setEnabled(false); |
|
|
|
m_inviteSendBtn->setEnabled(false); |
|
|
|
|
|
|
|
m_inviteTargetNodeId = targetNodeId; |
|
|
|
|
|
|
|
|
|
|
|
GUI_INFO("invite_by_link: channel=%s target=0x%016llx addrs=%d", |
|
|
|
GUI_INFO("invite_by_link: channel=%s target=0x%016llx addrs=%d", |
|
|
|
m_channelId.toUtf8().constData(), targetNodeId, d.addrs.size()); |
|
|
|
m_channelId.toUtf8().constData(), targetNodeId, d.addrs.size()); |
|
|
|
@ -184,9 +194,27 @@ void InviteByLinkDialog::onSendInvite() { |
|
|
|
(const uint8_t*)d.pubkey.constData(), |
|
|
|
(const uint8_t*)d.pubkey.constData(), |
|
|
|
(const uint8_t*)addrsBuf.constData(), d.addrs.size(), addrsBuf.size()); |
|
|
|
(const uint8_t*)addrsBuf.constData(), d.addrs.size(), addrsBuf.size()); |
|
|
|
|
|
|
|
|
|
|
|
setInviteStatus(QString::fromUtf8("Приглашение отправлено. OK")); |
|
|
|
setInviteStatus(QString::fromUtf8("Приглашение отправлено, ожидание ответа...")); |
|
|
|
QTimer::singleShot(2000, this, [this]() { |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void InviteByLinkDialog::onConnectResult(uint64_t nodeId, uint64_t channelId, int result) { |
|
|
|
|
|
|
|
if (!m_inviteSending || nodeId != m_inviteTargetNodeId) return; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (result == 0) { |
|
|
|
|
|
|
|
setInviteStatus(QString::fromUtf8("Узел присоединился к каналу."), false); |
|
|
|
|
|
|
|
QTimer::singleShot(400, this, &QDialog::accept); |
|
|
|
|
|
|
|
} else { |
|
|
|
m_inviteSending = false; |
|
|
|
m_inviteSending = false; |
|
|
|
m_inviteSendBtn->setEnabled(true); |
|
|
|
m_inviteSendBtn->setEnabled(true); |
|
|
|
}); |
|
|
|
m_inviteSendBtn->setFocus(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const char* errMsg = "Неизвестная ошибка."; |
|
|
|
|
|
|
|
switch (result) { |
|
|
|
|
|
|
|
case -1: errMsg = "Канал не найден."; break; |
|
|
|
|
|
|
|
case 2: errMsg = "Таймаут — узел не ответил."; break; |
|
|
|
|
|
|
|
case -7: errMsg = "Узел не инициализирован."; break; |
|
|
|
|
|
|
|
default: break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
setInviteStatus(QString::fromUtf8("Ошибка: %1").arg(QString::fromUtf8(errMsg)), true); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|