Fix passport selfie requirements.

This commit is contained in:
John Preston 2018-04-18 21:23:37 +04:00
parent 67e698a374
commit 60582a24ab
3 changed files with 37 additions and 26 deletions

View File

@ -1004,7 +1004,7 @@ void FormController::startValueEdit(not_null<const Value*> value) {
for (auto &scan : nonconst->scans) { for (auto &scan : nonconst->scans) {
loadFile(scan); loadFile(scan);
} }
if (nonconst->selfie) { if (nonconst->selfie && _form.identitySelfieRequired) {
loadFile(*nonconst->selfie); loadFile(*nonconst->selfie);
} }
nonconst->scansInEdit = ranges::view::all( nonconst->scansInEdit = ranges::view::all(

View File

@ -370,29 +370,8 @@ void EditScans::setupContent(const QString &header) {
} }
void EditScans::updateScan(ScanInfo &&info) { void EditScans::updateScan(ScanInfo &&info) {
const auto updateRow = [&](
not_null<ScanButton*> button,
const ScanInfo &info) {
button->setStatus(info.status);
button->setImage(info.thumb);
button->setDeleted(info.deleted);
button->setError(!info.error.isEmpty());
};
if (info.selfie) { if (info.selfie) {
Assert(info.key.id != 0); updateSelfie(std::move(info));
Assert(_selfie != nullptr);
if (_selfie->key.id) {
updateRow(_selfieRow->entity(), info);
if (!info.deleted) {
hideSelfieError();
}
} else {
createSelfieRow(info);
_selfieWrap->resizeToWidth(width());
_selfieRow->show(anim::type::normal);
_selfieHeader->show(anim::type::normal);
}
*_selfie = std::move(info);
return; return;
} }
const auto i = ranges::find(_files, info.key, [](const ScanInfo &file) { const auto i = ranges::find(_files, info.key, [](const ScanInfo &file) {
@ -401,9 +380,7 @@ void EditScans::updateScan(ScanInfo &&info) {
if (i != _files.end()) { if (i != _files.end()) {
*i = std::move(info); *i = std::move(info);
const auto scan = _rows[i - _files.begin()]->entity(); const auto scan = _rows[i - _files.begin()]->entity();
scan->setStatus(i->status); updateFileRow(scan, *i);
scan->setImage(i->thumb);
scan->setDeleted(i->deleted);
if (!i->deleted) { if (!i->deleted) {
hideError(); hideError();
} }
@ -421,6 +398,36 @@ void EditScans::updateScan(ScanInfo &&info) {
} }
} }
void EditScans::updateSelfie(ScanInfo &&info) {
Expects(info.key.id != 0);
if (!_selfie) {
return;
}
if (_selfie->key.id) {
updateFileRow(_selfieRow->entity(), info);
if (!info.deleted) {
hideSelfieError();
}
} else {
createSelfieRow(info);
_selfieWrap->resizeToWidth(width());
_selfieRow->show(anim::type::normal);
_selfieHeader->show(anim::type::normal);
}
*_selfie = std::move(info);
}
void EditScans::updateFileRow(
not_null<ScanButton*> button,
const ScanInfo &info) {
button->setStatus(info.status);
button->setImage(info.thumb);
button->setDeleted(info.deleted);
button->setError(!info.error.isEmpty());
};
void EditScans::createSelfieRow(const ScanInfo &info) { void EditScans::createSelfieRow(const ScanInfo &info) {
_selfieRow = createScan( _selfieRow = createScan(
_selfieWrap, _selfieWrap,

View File

@ -51,6 +51,10 @@ private:
void chooseScan(); void chooseScan();
void chooseSelfie(); void chooseSelfie();
void updateScan(ScanInfo &&info); void updateScan(ScanInfo &&info);
void updateSelfie(ScanInfo &&info);
void updateFileRow(
not_null<ScanButton*> button,
const ScanInfo &info);
void pushScan(const ScanInfo &info); void pushScan(const ScanInfo &info);
void createSelfieRow(const ScanInfo &info); void createSelfieRow(const ScanInfo &info);
base::unique_qptr<Ui::SlideWrap<ScanButton>> createScan( base::unique_qptr<Ui::SlideWrap<ScanButton>> createScan(