mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-25 12:38:48 +03:00
Sort known UIA flows first
This commit is contained in:
parent
8309ad2f83
commit
b19d9caba6
1 changed files with 30 additions and 0 deletions
|
@ -60,6 +60,36 @@ UIA::genericHandler(QString context)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// sort flows with known stages first
|
||||||
|
std::sort(
|
||||||
|
flows.begin(),
|
||||||
|
flows.end(),
|
||||||
|
[](const mtx::user_interactive::Flow &a, const mtx::user_interactive::Flow &b) {
|
||||||
|
auto calcWeight = [](const mtx::user_interactive::Flow &f) {
|
||||||
|
using namespace mtx::user_interactive::auth_types;
|
||||||
|
const static std::map<std::string_view, int> weights{
|
||||||
|
{mtx::user_interactive::auth_types::password, 0},
|
||||||
|
{mtx::user_interactive::auth_types::email_identity, 0},
|
||||||
|
{mtx::user_interactive::auth_types::msisdn, 0},
|
||||||
|
{mtx::user_interactive::auth_types::dummy, 0},
|
||||||
|
{mtx::user_interactive::auth_types::registration_token, 0},
|
||||||
|
// recaptcha is known, but we'd like to avoid it, because it calls out to
|
||||||
|
// the browser
|
||||||
|
{mtx::user_interactive::auth_types::recaptcha, 1},
|
||||||
|
};
|
||||||
|
int weight = 0;
|
||||||
|
for (const auto &s : f.stages) {
|
||||||
|
if (!weights.count(s))
|
||||||
|
weight += 3;
|
||||||
|
else
|
||||||
|
weight += weights.at(s);
|
||||||
|
}
|
||||||
|
return weight;
|
||||||
|
};
|
||||||
|
|
||||||
|
return calcWeight(a) < calcWeight(b);
|
||||||
|
});
|
||||||
|
|
||||||
auto current_stage = flows.front().stages.at(u.completed.size());
|
auto current_stage = flows.front().stages.at(u.completed.size());
|
||||||
|
|
||||||
if (current_stage == mtx::user_interactive::auth_types::password) {
|
if (current_stage == mtx::user_interactive::auth_types::password) {
|
||||||
|
|
Loading…
Reference in a new issue