<table><tr><td style="">sitter created this revision.<br />sitter added a reviewer: Plasma.<br />Herald added a project: Plasma.<br />Herald added a subscriber: plasma-devel.<br />sitter requested review of this revision.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D22326">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>previously at a random point in time there'd be a call to get the bugzilla<br />
version, that call would (hopefully) reach the login page and cause it<br />
allow login. this is essentially a blocking safe guard to not talk to<br />
unsupported or unreachable bugzillas. because this was entirely<br />
synchronized there was great potential for signal and state racing<br />
where the login page could randomly end up with a disabled login<br />
button when the api communication failed for whatever reason.</p>

<p>this was further complicated by the fact that there was zero UI backing<br />
for the entire check resulting in the login button getting disabled but<br />
the user not having any indication as to why or any means to retry.</p>

<p>to resolve this problem a bunch of changes are necessary:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">bugzillalib now has an error signal when the version check fails (previously not having received a finished signal meant error, when in fact that may also mean not-yet-done)</li>
<li class="remarkup-list-item">buzillalib also no longer automatically issues a version lookup as it itself has no use of knowing the version right now</li>
<li class="remarkup-list-item">the login page logic has had all awareness of bugzilla availability stripped. the assumption now is that when login is reached bugzilla could be contacted.</li>
<li class="remarkup-list-item">there is a new 'version' page now sorted before the login page. the version page's only use is to provide a UI for the version check or more generally if bugzilla is reachable. it has a busy state and an error stage, once the version check completed once the page is marked inappropriate and would automatically skip ahead as necessary. the <tt style="background: #ebebeb; font-size: 13px;">appropriate</tt> value specifically allows kassistantdialog to ignore the page when skipping forward/backward effectively hiding the page from the user.</li>
<li class="remarkup-list-item">for purposes of controlling its own appropriateness the KPageWidgetItem of this new page is controlled by the page itself, a design which IMO should be also adopted for the other pages</li>
<li class="remarkup-list-item">for visual consistency with plasma a qml busyindicator is used on the page. also looks nicer than the ksquencepixmap thingy</li>
</ul>

<p>The result of this is that upon startup of the dialog, the version page<br />
is created (albeit not visible) and issues a version check. When that<br />
returns the page turns itself inappropriate (and skips ahead if necessary).<br />
Ideally this means the user never sees the page, unless there is an error<br />
in which case the page will block progressing to actually submit the<br />
error to bugzilla. At the same time the user can choose to go back to the<br />
backtrace page to manually grab it and file a bug in the event that<br />
drkonqi cannot get beyond the version page.</p>

<p>BUG: 373099<br />
BUG: 354292<br />
FIXED-IN: 5.17.0<br />
CHANGELOG: Contact to drkonqi is now more reliably verified and the login button enabled when possible</p></div></div><br /><div><strong>TEST PLAN</strong><div><ul class="remarkup-list">
<li class="remarkup-list-item">slow internet results in page to show up</li>
<li class="remarkup-list-item">errors result in page to go into error state</li>
<li class="remarkup-list-item">fast internet lets the page not show up</li>
<li class="remarkup-list-item">retry button retries when there was an error on first try</li>
<li class="remarkup-list-item">page switches between states correctly</li>
</ul></div></div><br /><div><strong>REPOSITORY</strong><div><div>R871 DrKonqi</div></div></div><br /><div><strong>BRANCH</strong><div><div>versioncheck</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D22326">https://phabricator.kde.org/D22326</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>CMakeLists.txt<br />
src/CMakeLists.txt<br />
src/bugzillaintegration/assistantpage_bugzilla_version.cpp<br />
src/bugzillaintegration/assistantpage_bugzilla_version.h<br />
src/bugzillaintegration/bugzillalib.cpp<br />
src/bugzillaintegration/bugzillalib.h<br />
src/bugzillaintegration/qml.qrc<br />
src/bugzillaintegration/qml/BusyIndicator.qml<br />
src/bugzillaintegration/reportassistantdialog.cpp<br />
src/bugzillaintegration/reportassistantdialog.h<br />
src/bugzillaintegration/reportassistantpages_bugzilla.cpp<br />
src/bugzillaintegration/reportassistantpages_bugzilla.h<br />
src/bugzillaintegration/ui/assistantpage_bugzilla_version.ui<br />
src/drkonqi_globals.h</div></div></div><br /><div><strong>To: </strong>sitter, Plasma<br /><strong>Cc: </strong>plasma-devel, LeGast00n, jraleigh, fbampaloukas, GB_2, ragreen, Pitel, ZrenBot, himcesjf, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart<br /></div>