Incorporate koreader registration

This commit is contained in:
jpirnay
2026-03-23 12:35:01 +01:00
parent 68bf80e6b9
commit 75350b0a3e
6 changed files with 159 additions and 23 deletions
@@ -24,12 +24,21 @@ void KOReaderAuthActivity::onWifiSelectionComplete(const bool success) {
{
RenderLock lock(*this);
state = AUTHENTICATING;
statusMessage = tr(STR_AUTHENTICATING);
if (mode == Mode::REGISTER) {
state = REGISTERING;
statusMessage = tr(STR_REGISTERING);
} else {
state = AUTHENTICATING;
statusMessage = tr(STR_AUTHENTICATING);
}
}
requestUpdate();
performAuthentication();
if (mode == Mode::REGISTER) {
performRegistration();
} else {
performAuthentication();
}
}
void KOReaderAuthActivity::performAuthentication() {
@@ -48,6 +57,25 @@ void KOReaderAuthActivity::performAuthentication() {
requestUpdate();
}
void KOReaderAuthActivity::performRegistration() {
const auto result = KOReaderSyncClient::registerUser();
{
RenderLock lock(*this);
if (result == KOReaderSyncClient::OK) {
state = SUCCESS;
statusMessage = tr(STR_REGISTER_SUCCESS);
} else if (result == KOReaderSyncClient::USER_EXISTS) {
state = USER_EXISTS;
errorMessage = KOReaderSyncClient::errorString(result);
} else {
state = FAILED;
errorMessage = KOReaderSyncClient::errorString(result);
}
}
requestUpdate();
}
void KOReaderAuthActivity::onEnter() {
Activity::onEnter();
@@ -83,13 +111,18 @@ void KOReaderAuthActivity::render(RenderLock&&) {
const auto height = renderer.getLineHeight(UI_10_FONT_ID);
const auto top = (pageHeight - height) / 2;
if (state == AUTHENTICATING) {
if (state == AUTHENTICATING || state == REGISTERING) {
renderer.drawCenteredText(UI_10_FONT_ID, top, statusMessage.c_str());
} else if (state == SUCCESS) {
renderer.drawCenteredText(UI_10_FONT_ID, top, tr(STR_AUTH_SUCCESS), true, EpdFontFamily::BOLD);
const char* successMsg = (mode == Mode::REGISTER) ? tr(STR_REGISTER_SUCCESS) : tr(STR_AUTH_SUCCESS);
renderer.drawCenteredText(UI_10_FONT_ID, top, successMsg, true, EpdFontFamily::BOLD);
renderer.drawCenteredText(UI_10_FONT_ID, top + height + 10, tr(STR_SYNC_READY));
} else if (state == USER_EXISTS) {
renderer.drawCenteredText(UI_10_FONT_ID, top, tr(STR_USERNAME_TAKEN), true, EpdFontFamily::BOLD);
renderer.drawCenteredText(UI_10_FONT_ID, top + height + 10, errorMessage.c_str());
} else if (state == FAILED) {
renderer.drawCenteredText(UI_10_FONT_ID, top, tr(STR_AUTH_FAILED), true, EpdFontFamily::BOLD);
const char* failedMsg = (mode == Mode::REGISTER) ? tr(STR_REGISTER_FAILED) : tr(STR_AUTH_FAILED);
renderer.drawCenteredText(UI_10_FONT_ID, top, failedMsg, true, EpdFontFamily::BOLD);
renderer.drawCenteredText(UI_10_FONT_ID, top + height + 10, errorMessage.c_str());
}
@@ -99,7 +132,7 @@ void KOReaderAuthActivity::render(RenderLock&&) {
}
void KOReaderAuthActivity::loop() {
if (state == SUCCESS || state == FAILED) {
if (state == SUCCESS || state == FAILED || state == USER_EXISTS) {
if (mappedInput.wasPressed(MappedInputManager::Button::Back) ||
mappedInput.wasPressed(MappedInputManager::Button::Confirm)) {
finish();