Skip to content

Commit b22ab79

Browse files
committed
Merge branch 'master' into release
2 parents e47d180 + 67607ad commit b22ab79

11 files changed

Lines changed: 63 additions & 41 deletions

File tree

RELEASE_NOTES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
- Fixed MAL syncing bug.
12
- Improve loading speed in splash screen.
23
- Fixed issue with new feed not properly caching.
34
- Improved user experience.

lib/src/components/animelist/animelist.controller.dart

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import 'package:timeago/timeago.dart' as timeago;
55

66
import '../../data/index.dart';
77
import '../../data/mal-user.animelist.dart';
8+
import '../../notification/index.dart';
89
import '../../services/interface/api.interface.dart';
910
import '../../services/interface/mal.interface.dart';
1011
import '../../widgets/index.dart';
@@ -39,11 +40,12 @@ class AnimelistController extends MomentumController<AnimelistModel> {
3940
MalInterface get mal => service<MalInterface>(runtimeType: false);
4041

4142
@override
42-
void onReady() {
43+
void onReady() async {
44+
await waitForFirebaseInit();
4345
_messaging = FirebaseMessaging.instance;
4446
}
4547

46-
bootstrap() {
48+
bootstrap() async {
4749
loadList();
4850
}
4951

@@ -86,6 +88,14 @@ class AnimelistController extends MomentumController<AnimelistModel> {
8688
model.update(loadingUserAnimeDetails: false);
8789
}
8890

91+
AnimeEntry getAnimeItem(int malId) {
92+
try {
93+
return model.list.firstWhere((x) => x.malId == malId);
94+
} on Exception {
95+
return AnimeEntry();
96+
}
97+
}
98+
8999
Future<MalUserAnimeListStatus?> updateUserAnimeDetails(AnimeEntry anime, int episodeWatched) async {
90100
model.update(loadingUserAnimeDetails: true);
91101
MalUserAnimeListStatus? status;

lib/src/components/notification/notification.controller.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import 'package:flutter/services.dart';
33
import 'package:momentum/momentum.dart';
44
import 'package:url_launcher/url_launcher.dart';
55

6+
import '../../notification/index.dart';
67
import '../../services/index.dart';
78
import '../../widgets/index.dart';
89
import 'index.dart';
@@ -22,6 +23,7 @@ class NotificationController extends MomentumController<NotificationModel> {
2223

2324
@override
2425
void onReady() async {
26+
await waitForFirebaseInit();
2527
_messaging = FirebaseMessaging.instance;
2628
var message = await _messaging!.getInitialMessage();
2729
if (message != null) {

lib/src/components/sources/sources.controller.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'package:firebase_messaging/firebase_messaging.dart';
44
import 'package:momentum/momentum.dart';
55

66
import '../../misc/index.dart';
7+
import '../../notification/index.dart';
78
import 'index.dart';
89

910
class SourcesController extends MomentumController<SourcesModel> {
@@ -24,6 +25,7 @@ class SourcesController extends MomentumController<SourcesModel> {
2425

2526
@override
2627
void onReady() async {
28+
await waitForFirebaseInit();
2729
_messaging = FirebaseMessaging.instance;
2830
if (!model.initialized) {
2931
model.update(loading: true);

lib/src/components/supporter-subscription/supporter-subscription.controller.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'dart:async';
22

3-
import 'package:firebase_messaging/firebase_messaging.dart';
3+
// import 'package:firebase_messaging/firebase_messaging.dart';
44
import 'package:flutter/widgets.dart';
55
import 'package:in_app_purchase/in_app_purchase.dart';
66
import 'package:momentum/momentum.dart';
@@ -38,7 +38,7 @@ class SupporterSubscriptionController extends MomentumController<SupporterSubscr
3838
// ignore: cancel_subscriptions
3939
StreamSubscription<List<PurchaseDetails>>? _subscription;
4040

41-
FirebaseMessaging get messaging => FirebaseMessaging.instance;
41+
// FirebaseMessaging get messaging => FirebaseMessaging.instance;
4242

4343
Future<void> initialize() async {
4444
await checkStore();
@@ -135,11 +135,11 @@ class SupporterSubscriptionController extends MomentumController<SupporterSubscr
135135

136136
Future<void> activateReward() async {
137137
print(['QUANTZ', 'activateReward()']);
138-
await messaging.subscribeToTopic('dev_supporter');
138+
// await messaging.subscribeToTopic('dev_supporter'); // NO longer part of subscriber benefits.
139139
}
140140

141141
Future<void> deactivateReward() async {
142142
print(['QUANTZ', 'deactivateReward()']);
143-
await messaging.unsubscribeFromTopic('dev_supporter');
143+
// await messaging.unsubscribeFromTopic('dev_supporter'); // NO longer part of subscriber benefits.
144144
}
145145
}

lib/src/core/initializer.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@ import 'index.dart';
66
import 'version.dart';
77

88
Future<void> initializer() async {
9+
initFirebaseNotification();
10+
911
await Future.wait([
1012
initSharedPreferences(),
11-
initFirebaseNotification(),
1213
initLocalNotification(),
1314
checkAppVersion(),
1415
]);

lib/src/notification/notification.firebase.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
1+
import 'dart:async';
2+
13
import 'package:firebase_core/firebase_core.dart';
24
import 'package:firebase_messaging/firebase_messaging.dart';
35

6+
Completer firebaseInitializer = Completer();
7+
Future<void> waitForFirebaseInit() async {
8+
await firebaseInitializer.future;
9+
}
10+
411
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
512
// If you're going to use other Firebase services in the background, such as Firestore,
613
// make sure you call `initializeApp` before using other Firebase services.
@@ -17,6 +24,9 @@ Future<void> initFirebaseNotification() async {
1724

1825
FirebaseMessaging messaging = FirebaseMessaging.instance;
1926

27+
final token = await messaging.getToken();
28+
print(['firebase_token', token]);
29+
2030
NotificationSettings settings = await messaging.requestPermission(
2131
alert: true,
2232
announcement: false,
@@ -40,6 +50,8 @@ Future<void> initFirebaseNotification() async {
4050
badge: true,
4151
sound: true,
4252
);
53+
54+
if (!firebaseInitializer.isCompleted) firebaseInitializer.complete();
4355
} catch (e) {
4456
print(e);
4557
}

lib/src/services/concretes/google-api.service.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import '../../core/api_key.dart';
99
import '../../core/config.dart';
1010
import '../../core/in-app-purchase.dart';
1111
import '../../data/firebase.topics.dart';
12+
import '../../notification/index.dart';
1213
import '../../widgets/toast.dart';
1314
import '../interface/google-api.interface.dart';
1415

@@ -38,6 +39,7 @@ class GoogleApiService extends GoogleApiInterface {
3839
}
3940

4041
Future<FirebaseSubscription> getFirebaseSubscription() async {
42+
await waitForFirebaseInit();
4143
var token = await FirebaseMessaging.instance.getToken();
4244
final path = '$api/topics/$token';
4345
try {

lib/src/widgets/listing/anime.item-integration.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class AnimeItemIntegrationAction extends StatelessWidget {
6060
),
6161
onPressed: () {
6262
Momentum.controller<AnimelistController>(context).getUserAnimeDetails(item);
63-
showMalUpdater(context, item);
63+
showMalUpdater(context, item.malId);
6464
},
6565
),
6666
),

lib/src/widgets/listing/anime.item.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ class AnimeItem extends StatelessWidget {
6565
SizedBox(width: 12),
6666
Expanded(child: _AnimeEntryDetails(item: item, showType: showType)),
6767
_AnimeItemOrderLabel(item: item),
68-
item.malStatus != null
68+
item.malStatus != null && !topicLoading
6969
? AnimeItemIntegrationAction(
7070
item: item,
7171
fallbackWidget: switchWidget,

0 commit comments

Comments
 (0)