-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
reInit webApi with webview and nodes if failed (#1262)
* reInit webApi with webview and nodes if failed if user closes and reopens the app * after code review changes made organized imports * fixed melos format-check failure
- Loading branch information
1 parent
45efc05
commit 5b46cdd
Showing
13 changed files
with
310 additions
and
138 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
///TODO(Azamat): Add other exports here | ||
export 'assets/index.dart'; | ||
export 'profile/contacts/contacts_page.dart'; | ||
export 'profile/index.dart'; | ||
export 'qr_scan/qr_scan_page.dart'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
import 'package:flutter/cupertino.dart'; | ||
import 'package:ew_http/ew_http.dart'; | ||
import 'package:mobx/mobx.dart'; | ||
import 'package:provider/provider.dart'; | ||
import 'package:timezone/timezone.dart' as tz; | ||
|
||
import 'package:encointer_wallet/service/service.dart'; | ||
import 'package:encointer_wallet/config.dart'; | ||
import 'package:encointer_wallet/modules/settings/logic/app_settings_store.dart'; | ||
import 'package:encointer_wallet/store/app.dart'; | ||
import 'package:encointer_wallet/utils/utils.dart'; | ||
|
||
part 'home_page_store.g.dart'; | ||
|
||
const _logTarget = 'HomePageStore'; | ||
// ignore: library_private_types_in_public_api | ||
class HomePageStore = _HomePageStoreBase with _$HomePageStore; | ||
|
||
abstract class _HomePageStoreBase with Store, WidgetsBindingObserver { | ||
_HomePageStoreBase(this.appStore, this.buildContext) { | ||
_init(); | ||
} | ||
|
||
@observable | ||
late AppStore appStore; | ||
|
||
@observable | ||
late BuildContext buildContext; | ||
|
||
@action | ||
void _init() { | ||
Log.d(_logTarget, '_init'); | ||
WidgetsBinding.instance.addObserver(this); | ||
if (!RepositoryProvider.of<AppConfig>(buildContext).isIntegrationTest) NotificationPlugin.init(buildContext); | ||
} | ||
|
||
@action | ||
Future<void> postFrameCallbacks() async { | ||
Log.d(_logTarget, 'postFrameCallbacks'); | ||
final encointer = buildContext.read<AppStore>().encointer; | ||
final cid = encointer.community?.cid.toFmtString(); | ||
await initialDeepLinks(buildContext); | ||
await NotificationHandler.fetchMessagesAndScheduleNotifications( | ||
tz.local, | ||
NotificationPlugin.scheduleNotification, | ||
langCode: Localizations.localeOf(buildContext).languageCode, | ||
cid: cid, | ||
ewHttp: RepositoryProvider.of<EwHttp>(buildContext), | ||
devMode: buildContext.read<AppSettings>().developerMode, | ||
); | ||
|
||
// Should never be null, we either come from the splash screen, and hence we had | ||
// enough time to connect to the blockchain or we already have a populated store. | ||
// | ||
// Hence, can only be null if someone uses the app for the first time and is offline. | ||
if (encointer.nextRegisteringPhaseStart != null && | ||
encointer.currentCeremonyIndex != null && | ||
encointer.ceremonyCycleDuration != null) { | ||
await CeremonyNotifications.scheduleRegisteringStartsReminders( | ||
encointer.nextRegisteringPhaseStart!, | ||
encointer.currentCeremonyIndex!, | ||
encointer.ceremonyCycleDuration!, | ||
I18n.of(buildContext)!.translationsForLocale().encointer, | ||
cid: cid, | ||
); | ||
|
||
await CeremonyNotifications.scheduleLastDayOfRegisteringReminders( | ||
encointer.assigningPhaseStart!, | ||
encointer.currentCeremonyIndex!, | ||
encointer.ceremonyCycleDuration!, | ||
I18n.of(buildContext)!.translationsForLocale().encointer, | ||
cid: cid, | ||
); | ||
} | ||
} | ||
|
||
@action | ||
@override | ||
Future<void> didChangeAppLifecycleState(AppLifecycleState state) async { | ||
Log.d(_logTarget, 'Change lifecycle to $state'); | ||
|
||
if (state == AppLifecycleState.resumed) { | ||
final connected = await webApi.isConnected(); | ||
Log.d(_logTarget, 'webApi.isConnected() = $connected'); | ||
if (!connected) { | ||
/// initialize webApi again if it's failed after | ||
/// user closes the app and reopens it | ||
await initWebApi(buildContext, appStore); | ||
} | ||
} | ||
super.didChangeAppLifecycleState(state); | ||
} | ||
|
||
@action | ||
void dispose() { | ||
WidgetsBinding.instance.removeObserver(this); | ||
} | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Oops, something went wrong.