Skip to content

Commit 5fd0471

Browse files
authored
Merge pull request #4554 from crazyserver/MOBILE-4842
Mobile 4842
2 parents 7aa8bf1 + 6348e93 commit 5fd0471

File tree

62 files changed

+556
-644
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+556
-644
lines changed

src/addons/badges/pages/badge-class/badge-class.html

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,80 +1,81 @@
1+
@let badgeToShow = badge();
12
<ion-header>
23
<ion-toolbar>
34
<ion-buttons slot="start">
45
<ion-back-button [text]="'core.back' | translate" />
56
</ion-buttons>
67
<ion-title>
7-
@if (badge) {
8-
<h1>{{ badge.name }}</h1>
8+
@if (badgeToShow) {
9+
<h1>{{ badgeToShow.name }}</h1>
910
} @else {
1011
<h1>{{ 'addon.badges.badgedetails' | translate }}</h1>
1112
}
1213
</ion-title>
1314
</ion-toolbar>
1415
</ion-header>
1516
<ion-content class="limited-width">
16-
<ion-refresher slot="fixed" [disabled]="!badgeLoaded" (ionRefresh)="refreshBadgeClass($event.target)">
17+
<ion-refresher slot="fixed" [disabled]="!loaded()" (ionRefresh)="refreshBadgeClass($event.target)">
1718
<ion-refresher-content pullingText="{{ 'core.pulltorefresh' | translate }}" />
1819
</ion-refresher>
19-
<core-loading [hideUntil]="badgeLoaded" placeholderType="imageandboxes">
20-
@if (badge) {
20+
<core-loading [hideUntil]="loaded()" placeholderType="imageandboxes">
21+
@if (badgeToShow) {
2122
<ion-item-group>
2223
<ion-item class="ion-text-wrap ion-text-center">
2324
<ion-label>
24-
@if (badge.image) {
25-
<img class="large-avatar" [url]="badge.image" core-external-content [alt]="badge.name" />
25+
@if (badgeToShow.image) {
26+
<img class="large-avatar" [url]="badgeToShow.image" core-external-content [alt]="badgeToShow.name" />
2627
}
2728
</ion-label>
2829
</ion-item>
29-
@if (badge.name) {
30+
@if (badgeToShow.name) {
3031
<ion-item class="ion-text-wrap">
3132
<ion-label>
3233
<p class="item-heading">{{ 'core.name' | translate}}</p>
33-
<p>{{ badge.name }}</p>
34+
<p>{{ badgeToShow.name }}</p>
3435
</ion-label>
3536
</ion-item>
3637
}
37-
@if (badge.issuer) {
38+
@if (badgeToShow.issuer) {
3839
<ion-item class="ion-text-wrap">
3940
<ion-label>
4041
<p class="item-heading">{{ 'addon.badges.issuername' | translate}}</p>
4142
<p>
42-
<core-format-text [text]="badge.issuer" contextLevel="system" [contextInstanceId]="0"
43+
<core-format-text [text]="badgeToShow.issuer" contextLevel="system" [contextInstanceId]="0"
4344
[wsNotFiltered]="true" />
4445
</p>
4546
</ion-label>
4647
</ion-item>
4748
}
48-
@if (badge.coursefullname) {
49+
@if (badgeToShow.coursefullname) {
4950
<ion-item class="ion-text-wrap">
5051
<ion-label>
5152
<p class="item-heading">{{ 'core.course' | translate}}</p>
5253
<p>
53-
<core-format-text [text]="badge.coursefullname" contextLevel="course"
54-
[contextInstanceId]="badge.courseid" />
54+
<core-format-text [text]="badgeToShow.coursefullname" contextLevel="course"
55+
[contextInstanceId]="badgeToShow.courseid" />
5556
</p>
5657
</ion-label>
5758
</ion-item>
5859
}
59-
@if (badge.description) {
60+
@if (badgeToShow.description) {
6061
<ion-item class="ion-text-wrap">
6162
<ion-label>
6263
<p class="item-heading">{{ 'core.description' | translate}}</p>
63-
<p>{{ badge.description }}</p>
64+
<p>{{ badgeToShow.description }}</p>
6465
</ion-label>
6566
</ion-item>
6667
}
6768
</ion-item-group>
6869

6970
<!-- Competencies alignment -->
70-
@if (badge.alignment?.length) {
71+
@if (badgeToShow.alignment?.length) {
7172
<ion-item-group>
7273
<ion-item-divider>
7374
<ion-label>
7475
<h2>{{ 'addon.badges.alignment' | translate}}</h2>
7576
</ion-label>
7677
</ion-item-divider>
77-
<ion-item class="ion-text-wrap" *ngFor="let alignment of badge.alignment" [href]="alignment.targetUrl" core-link
78+
<ion-item class="ion-text-wrap" *ngFor="let alignment of badgeToShow.alignment" [href]="alignment.targetUrl" core-link
7879
[autoLogin]="false">
7980
<ion-label>
8081
<p class="item-heading">{{ alignment.targetName }}</p>

src/addons/badges/pages/badge-class/badge-class.ts

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
import { Component, OnInit, inject } from '@angular/core';
15+
import { Component, OnInit, inject, signal } from '@angular/core';
1616
import { CorePromiseUtils } from '@singletons/promise-utils';
1717
import { CoreNavigator } from '@services/navigator';
1818
import { ActivatedRoute } from '@angular/router';
@@ -38,9 +38,8 @@ export default class AddonBadgesBadgeClassPage implements OnInit {
3838
protected badgeId = 0;
3939
protected logView: (badge: AddonBadgesBadgeClass) => void;
4040

41-
badge?: AddonBadgesBadgeClass;
42-
badgeLoaded = false;
43-
currentTime = 0;
41+
readonly badge = signal<AddonBadgesBadgeClass | undefined>(undefined);
42+
readonly loaded = signal(false);
4443

4544
constructor() {
4645
this.badgeId = CoreNavigator.getRequiredRouteNumberParam('badgeId');
@@ -59,22 +58,20 @@ export default class AddonBadgesBadgeClassPage implements OnInit {
5958
/**
6059
* @inheritdoc
6160
*/
62-
ngOnInit(): void {
63-
this.fetchBadgeClass().finally(() => {
64-
this.badgeLoaded = true;
65-
});
61+
async ngOnInit(): Promise<void> {
62+
await this.fetchBadgeClass();
63+
64+
this.loaded.set(true);
6665
}
6766

6867
/**
6968
* Fetch the badge class required for the view.
70-
*
71-
* @returns Promise resolved when done.
7269
*/
7370
async fetchBadgeClass(): Promise<void> {
7471
try {
75-
this.badge = await AddonBadges.getBadgeClass(this.badgeId);
76-
77-
this.logView(this.badge);
72+
const badge = await AddonBadges.getBadgeClass(this.badgeId);
73+
this.badge.set(badge);
74+
this.logView(badge);
7875
} catch (message) {
7976
CoreAlerts.showError(message, { default: 'Error getting badge data.' });
8077
}

0 commit comments

Comments
 (0)