<commit_before><ion-header>
    <ion-navbar core-back-button>
        <ion-title>{{ 'core.login.login' | translate }}</ion-title>

        <ion-buttons end>
            <button *ngIf="isFixedUrlSet" ion-button icon-only [navPush]="'CoreSettingsListPage'" [attr.aria-label]="'core.mainmenu.appsettings' | translate">
                <ion-icon name="cog"></ion-icon>
            </button>
        </ion-buttons>
    </ion-navbar>
</ion-header>
<ion-content class="core-center-view">
    <core-loading [hideUntil]="pageLoaded">
        <div class="box">
            <div text-wrap text-center margin-bottom>
                <!-- Show site logo or a default image. -->
                <img *ngIf="logoUrl" [src]="logoUrl" role="presentation">
                <img *ngIf="!logoUrl" src="assets/img/login_logo.png" class="login-logo" role="presentation">

                <!-- If no sitename show big siteurl. -->
                <p *ngIf="!siteName" padding class="item-heading core-siteurl">{{siteUrl}}</p>
                <!-- If sitename, show big sitename and small siteurl. -->
                <p *ngIf="siteName" padding class="item-heading core-sitename"><core-format-text [text]="siteName"></core-format-text></p>
                <p *ngIf="siteName" class="core-siteurl">{{siteUrl}}</p>
            </div>
            <form ion-list [formGroup]="credForm" (ngSubmit)="login($event)">
                <ion-item *ngIf="siteChecked && !isBrowserSSO">
                    <ion-input type="text" name="username" placeholder="{{ 'core.login.username' | translate }}" formControlName="username" autocapitalize="none" autocorrect="off"></ion-input>
                </ion-item>
                <ion-item *ngIf="siteChecked && !isBrowserSSO" margin-bottom>
                    <core-show-password item-content [name]="'password'">
                        <ion-input class="core-ioninput-password" name="password" type="password" placeholder="{{ 'core.login.password' | translate }}" formControlName="password" core-show-password [clearOnEdit]="false"></ion-input>
                    </core-show-password>
                </ion-item>
                <button ion-button block [disabled]="siteChecked && !isBrowserSSO && !credForm.valid">{{ 'core.login.loginbutton' | translate }}</button>
            </form>

            <!-- Forgotten password button. -->
            <div padding-top>
                <button ion-button block text-wrap color="light" (click)="forgottenPassword()">{{ 'core.login.forgotten' | translate }}</button>
            </div>

            <ion-list *ngIf="identityProviders && identityProviders.length" padding-top>
                <ion-list-header text-wrap>{{ 'core.login.potentialidps' | translate }}</ion-list-header>
                <button ion-item *ngFor="let provider of identityProviders" text-wrap class="core-oauth-icon" (click)="oauthClicked(provider)" title="{{provider.name}}">
                    <img [src]="provider.iconurl" alt="{{provider.name}}" item-start>
                    {{provider.name}}
                </button>
            </ion-list>

            <ion-list *ngIf="canSignup" padding-top>
                <ion-list-header text-wrap>{{ 'core.login.firsttime' | translate }}</ion-list-header>
                <ion-item no-lines text-wrap *ngIf="authInstructions">
                    <p><core-format-text [text]="authInstructions"></core-format-text></p>
                </ion-item>
                <button ion-button block (click)="signup()">{{ 'core.login.startsignup' | translate }}</button>
            </ion-list>
        </div>
    </core-loading>
</ion-content><commit_msg>MOBILE-2629 login: Hide oAuth provider image on error<commit_after><ion-header>
    <ion-navbar core-back-button>
        <ion-title>{{ 'core.login.login' | translate }}</ion-title>

        <ion-buttons end>
            <button *ngIf="isFixedUrlSet" ion-button icon-only [navPush]="'CoreSettingsListPage'" [attr.aria-label]="'core.mainmenu.appsettings' | translate">
                <ion-icon name="cog"></ion-icon>
            </button>
        </ion-buttons>
    </ion-navbar>
</ion-header>
<ion-content class="core-center-view">
    <core-loading [hideUntil]="pageLoaded">
        <div class="box">
            <div text-wrap text-center margin-bottom>
                <!-- Show site logo or a default image. -->
                <img *ngIf="logoUrl" [src]="logoUrl" role="presentation">
                <img *ngIf="!logoUrl" src="assets/img/login_logo.png" class="login-logo" role="presentation">

                <!-- If no sitename show big siteurl. -->
                <p *ngIf="!siteName" padding class="item-heading core-siteurl">{{siteUrl}}</p>
                <!-- If sitename, show big sitename and small siteurl. -->
                <p *ngIf="siteName" padding class="item-heading core-sitename"><core-format-text [text]="siteName"></core-format-text></p>
                <p *ngIf="siteName" class="core-siteurl">{{siteUrl}}</p>
            </div>
            <form ion-list [formGroup]="credForm" (ngSubmit)="login($event)">
                <ion-item *ngIf="siteChecked && !isBrowserSSO">
                    <ion-input type="text" name="username" placeholder="{{ 'core.login.username' | translate }}" formControlName="username" autocapitalize="none" autocorrect="off"></ion-input>
                </ion-item>
                <ion-item *ngIf="siteChecked && !isBrowserSSO" margin-bottom>
                    <core-show-password item-content [name]="'password'">
                        <ion-input class="core-ioninput-password" name="password" type="password" placeholder="{{ 'core.login.password' | translate }}" formControlName="password" core-show-password [clearOnEdit]="false"></ion-input>
                    </core-show-password>
                </ion-item>
                <button ion-button block [disabled]="siteChecked && !isBrowserSSO && !credForm.valid">{{ 'core.login.loginbutton' | translate }}</button>
            </form>

            <!-- Forgotten password button. -->
            <div padding-top>
                <button ion-button block text-wrap color="light" (click)="forgottenPassword()">{{ 'core.login.forgotten' | translate }}</button>
            </div>

            <ion-list *ngIf="identityProviders && identityProviders.length" padding-top>
                <ion-list-header text-wrap>{{ 'core.login.potentialidps' | translate }}</ion-list-header>
                <button ion-item *ngFor="let provider of identityProviders" text-wrap class="core-oauth-icon" (click)="oauthClicked(provider)" title="{{provider.name}}">
                    <img [src]="provider.iconurl" alt="" width="32" height="32" item-start>
                    {{provider.name}}
                </button>
            </ion-list>

            <ion-list *ngIf="canSignup" padding-top>
                <ion-list-header text-wrap>{{ 'core.login.firsttime' | translate }}</ion-list-header>
                <ion-item no-lines text-wrap *ngIf="authInstructions">
                    <p><core-format-text [text]="authInstructions"></core-format-text></p>
                </ion-item>
                <button ion-button block (click)="signup()">{{ 'core.login.startsignup' | translate }}</button>
            </ion-list>
        </div>
    </core-loading>
</ion-content>
{'fraction_non_alphanumeric': 0.1710958904109589, 'fraction_numerical': 0.001095890410958904, 'mean_word_length': 2.324681238615665, 'pattern_counts': {'":': 0, '<': 145, '<?xml version=': 0, '>': 145, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '128861', 'n_tokens_mistral': 2166, 'n_tokens_neox': 2052, 'n_words': 388}