pin support
This commit is contained in:
@@ -37,6 +37,8 @@ void AppController::initialize()
|
||||
emit serverRunningChanged();
|
||||
}
|
||||
|
||||
m_server->setReceivePin(m_settings->receivePin());
|
||||
|
||||
connect(m_discovery, &LocalSend::DiscoveryManager::deviceDiscovered,
|
||||
this, &AppController::onDeviceDiscovered);
|
||||
connect(m_discovery, &LocalSend::DiscoveryManager::deviceLost,
|
||||
@@ -60,6 +62,10 @@ void AppController::initialize()
|
||||
this, &AppController::onPrepareUploadResponse);
|
||||
connect(m_httpClient, &LocalSend::HttpClient::prepareUploadError,
|
||||
this, &AppController::onPrepareUploadError);
|
||||
connect(m_httpClient, &LocalSend::HttpClient::prepareUploadPinRequired,
|
||||
this, &AppController::onPrepareUploadPinRequired);
|
||||
connect(m_httpClient, &LocalSend::HttpClient::prepareUploadTooManyAttempts,
|
||||
this, &AppController::onPrepareUploadTooManyAttempts);
|
||||
connect(m_httpClient, &LocalSend::HttpClient::uploadProgress,
|
||||
this, &AppController::onUploadProgress);
|
||||
connect(m_httpClient, &LocalSend::HttpClient::uploadCompleted,
|
||||
@@ -379,6 +385,20 @@ bool AppController::hasPendingFiles() const
|
||||
return !m_pendingFilesList.isEmpty();
|
||||
}
|
||||
|
||||
QString AppController::receivePin() const
|
||||
{
|
||||
return m_settings->receivePin();
|
||||
}
|
||||
|
||||
void AppController::setReceivePin(const QString& pin)
|
||||
{
|
||||
if (m_settings->receivePin() != pin) {
|
||||
m_settings->setReceivePin(pin);
|
||||
m_server->setReceivePin(pin);
|
||||
emit receivePinChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void AppController::addFiles(const QStringList& filePaths)
|
||||
{
|
||||
QMimeDatabase mimeDb;
|
||||
@@ -449,6 +469,7 @@ void AppController::sendFiles(const QString& deviceFingerprint, const QStringLis
|
||||
m_pendingSendPaths = filePaths;
|
||||
m_currentFileIndex = 0;
|
||||
m_sendProgress = 0.0;
|
||||
m_pinFirstAttempt = true;
|
||||
emit sendingChanged();
|
||||
emit sendProgressChanged();
|
||||
|
||||
@@ -552,6 +573,55 @@ void AppController::onPrepareUploadError(const QString& error)
|
||||
emit sendingChanged();
|
||||
}
|
||||
|
||||
void AppController::onPrepareUploadPinRequired()
|
||||
{
|
||||
qDebug() << "[AppController] onPrepareUploadPinRequired, firstAttempt:" << m_pinFirstAttempt;
|
||||
emit pinRequired(m_pinFirstAttempt);
|
||||
m_pinFirstAttempt = false;
|
||||
}
|
||||
|
||||
void AppController::onPrepareUploadTooManyAttempts()
|
||||
{
|
||||
qWarning() << "[AppController] onPrepareUploadTooManyAttempts";
|
||||
emit sendError(QStringLiteral("Too many PIN attempts"));
|
||||
m_currentSendSessionId.clear();
|
||||
emit sendingChanged();
|
||||
}
|
||||
|
||||
void AppController::retryWithPin(const QString& pin)
|
||||
{
|
||||
if (m_currentSendDeviceFingerprint.isEmpty() || !m_devices.contains(m_currentSendDeviceFingerprint)) {
|
||||
m_currentSendSessionId.clear();
|
||||
emit sendingChanged();
|
||||
return;
|
||||
}
|
||||
|
||||
LocalSend::Device target = m_devices[m_currentSendDeviceFingerprint];
|
||||
|
||||
QMap<QString, LocalSend::FileDto> files;
|
||||
QMimeDatabase mimeDb;
|
||||
|
||||
for (int i = 0; i < m_pendingSendPaths.size(); ++i) {
|
||||
QFileInfo info(m_pendingSendPaths[i]);
|
||||
if (!info.exists()) {
|
||||
continue;
|
||||
}
|
||||
LocalSend::FileDto fileDto;
|
||||
fileDto.id = QString::number(i);
|
||||
fileDto.fileName = info.fileName();
|
||||
fileDto.size = info.size();
|
||||
fileDto.fileType = mimeDb.mimeTypeForFile(info).name();
|
||||
files.insert(fileDto.id, fileDto);
|
||||
}
|
||||
|
||||
LocalSend::PrepareUploadRequestDto request;
|
||||
request.info = buildRegisterDto();
|
||||
request.files = files;
|
||||
|
||||
qDebug() << "[AppController] Retrying prepare-upload with PIN to" << target.ip;
|
||||
m_httpClient->prepareUpload(target, request, pin);
|
||||
}
|
||||
|
||||
void AppController::onUploadProgress(qint64 sent, qint64 total)
|
||||
{
|
||||
if (total > 0) {
|
||||
|
||||
Reference in New Issue
Block a user