Skip to content

Commit

Permalink
feat: Logger support.
Browse files Browse the repository at this point in the history
  • Loading branch information
mathrunet committed Feb 8, 2023
1 parent 6ae52b6 commit 7f174a2
Show file tree
Hide file tree
Showing 5 changed files with 109 additions and 49 deletions.
44 changes: 26 additions & 18 deletions packages/masamune/example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -393,10 +393,10 @@ packages:
dependency: transitive
description:
name: katana_auth
sha256: "54aae477190eb7d697d639f6f1bba0c23b1fbfccd35016968a461a84980c851f"
sha256: f650642cdc0300b591a4460d082fd493fdce0614a6ba3860842aa162cc96575a
url: "https://pub.dev"
source: hosted
version: "1.1.12"
version: "1.2.2"
katana_form:
dependency: transitive
description:
Expand All @@ -409,10 +409,10 @@ packages:
dependency: transitive
description:
name: katana_functions
sha256: "3c2b567221e2ce096063de5b96ac145a6055933e268f4942942ababbf6d5ab8e"
sha256: eae09744bed433b4176bcaf63741c4824dfcc74fc1127fb9fd2beec679f2eeb7
url: "https://pub.dev"
source: hosted
version: "1.1.12"
version: "1.1.13"
katana_indicator:
dependency: transitive
description:
Expand Down Expand Up @@ -469,14 +469,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.1.26"
katana_logger:
dependency: transitive
description:
name: katana_logger
sha256: "011c60d70c66a7d1e318999b951bf37ee02fe59d9283264714543c66993fbffd"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
katana_model:
dependency: transitive
description:
name: katana_model
sha256: "296b5fbc2c987f8dfa0312c7448739470b3e5487c3b3906518850103246bc533"
sha256: "27fe51db66561057acf2162b27331300ab7e57af02708787ccc80c150bcbfd37"
url: "https://pub.dev"
source: hosted
version: "1.5.11"
version: "1.5.12"
katana_prefs:
dependency: transitive
description:
Expand Down Expand Up @@ -505,34 +513,34 @@ packages:
dependency: transitive
description:
name: katana_router
sha256: "5fd0045454e61be719c96c7cfd3d1418441e528fd6c85ca13aa5f7973cf63613"
sha256: "76248c6567c827e012464ee9403273351e7900478898ea1e89d74ac0254d8854"
url: "https://pub.dev"
source: hosted
version: "1.10.16"
version: "1.11.0"
katana_router_annotation:
dependency: transitive
description:
name: katana_router_annotation
sha256: "115e967c4041748d5e00c7d39ade5243830972729c8d793bce514a6beeb88ed7"
sha256: "52daf808cdeccf56586c26287784b8365897dac33d52e4cd00738f7cbcedff52"
url: "https://pub.dev"
source: hosted
version: "1.10.13"
version: "1.11.0"
katana_router_builder:
dependency: transitive
description:
name: katana_router_builder
sha256: "072980c76b711f03b5b6d1946c4b13b2bb03b2d20419d41f364bee72eafabae6"
sha256: cedaa92bbcebdb4763b505c4c0105fb1584d6e5f88e48585cfc1ae76ec483180
url: "https://pub.dev"
source: hosted
version: "1.10.15"
version: "1.11.0"
katana_scoped:
dependency: transitive
description:
name: katana_scoped
sha256: b90944aef5e912a230619fb5a5bb3cf71d8ebd5fde36574cf978bbf3fa1f6c2f
sha256: d0796fb403b78557f09fe18d12afa97bf140c0f60e94677e48723a07ed754643
url: "https://pub.dev"
source: hosted
version: "1.7.9"
version: "1.7.10"
katana_shorten:
dependency: transitive
description:
Expand Down Expand Up @@ -603,22 +611,22 @@ packages:
path: ".."
relative: true
source: path
version: "1.5.5"
version: "1.5.13"
masamune_annotation:
dependency: transitive
description:
name: masamune_annotation
sha256: "7dd21fc5e8f294dee5508504affc792cb4a9382f1fd6d5127169aa46ee51ad3d"
sha256: "2ff6fabe8618f28b7a2bd60ce68fb1551f708c62b452236d63d6302d633a3aac"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.3.1"
masamune_builder:
dependency: "direct dev"
description:
path: "../../masamune_builder"
relative: true
source: path
version: "1.3.2"
version: "1.3.5"
matcher:
dependency: transitive
description:
Expand Down
1 change: 1 addition & 0 deletions packages/masamune/lib/masamune.dart
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ export 'package:katana_functions/katana_functions.dart';
export 'package:katana_indicator/katana_indicator.dart';
export 'package:katana_listenables/katana_listenables.dart';
export 'package:katana_localization/katana_localization.dart';
export 'package:katana_logger/katana_logger.dart';
export 'package:katana_model/katana_model.dart';
export 'package:katana_prefs/katana_prefs.dart';
export 'package:katana_router/katana_router.dart';
Expand Down
13 changes: 13 additions & 0 deletions packages/masamune/lib/src/masamune_adapter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ part of masamune;
///
/// You can set up observers to monitor transitions between pages at [navigatorObservers].
///
/// Various adapters for the katana package are available at [loggerAdapters], etc.
///
/// Widgets can be added during the build of [MasamuneApp] with [onBuildApp].
///
/// Masamune Frameworkに機能を手軽に追加するためのアダプター。
Expand All @@ -18,6 +20,8 @@ part of masamune;
///
/// [navigatorObservers]でページ間の遷移を監視するためのオブザーバーを設置することができます。
///
/// [loggerAdapters]などでkatanaパッケージの各種アダプターを利用することが可能です。
///
/// [onBuildApp][MasamuneApp]のビルド時にウィジェットを追加することが可能です。
abstract class MasamuneAdapter {
/// Adapter for easily adding functions to Masamune Framework.
Expand All @@ -27,6 +31,8 @@ abstract class MasamuneAdapter {
///
/// You can set up observers to monitor transitions between pages at [navigatorObservers].
///
/// Various adapters for the katana package are available at [loggerAdapters], etc.
///
/// Widgets can be added during the build of [MasamuneApp] with [onBuildApp].
///
/// Masamune Frameworkに機能を手軽に追加するためのアダプター。
Expand All @@ -38,6 +44,8 @@ abstract class MasamuneAdapter {
///
/// [navigatorObservers]でページ間の遷移を監視するためのオブザーバーを設置することができます。
///
/// [loggerAdapters]などでkatanaパッケージの各種アダプターを利用することが可能です。
///
/// [onBuildApp][MasamuneApp]のビルド時にウィジェットを追加することが可能です。
const MasamuneAdapter();

Expand All @@ -51,6 +59,11 @@ abstract class MasamuneAdapter {
/// ページ間の遷移を監視するためのオブザーバーを設置することができます。
List<NavigatorObserver> get navigatorObservers;

/// Adapters can be defined to add logger functionality.
///
/// ロガー機能を追加するためのアダプターを定義することができます。
List<LoggerAdapter> get loggerAdapters;

/// Widgets can be added during the build of [MasamuneApp].
///
/// The widget generated in [MasamuneApp] is passed to [app].
Expand Down
48 changes: 39 additions & 9 deletions packages/masamune/lib/src/masamune_app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ class MasamuneApp extends StatelessWidget {
this.authAdapter,
this.storageAdapter,
this.functionsAdapter,
this.loggerAdapters = const [],
this.theme,
this.localize,
this.routerConfig,
Expand Down Expand Up @@ -218,6 +219,11 @@ class MasamuneApp extends StatelessWidget {
/// `katana_functions`で利用されるサーバー処理用のアダプター。
final FunctionsAdapter? functionsAdapter;

/// Adapter for logging used by `katana_logger`.
///
/// `katana_logger`で利用されるロギング用のアダプター。
final List<LoggerAdapter> loggerAdapters;

/// Config for router used by `katana_router`.
///
/// `katana_router`で利用されるルーター用のコンフィグ。
Expand Down Expand Up @@ -382,15 +388,18 @@ class MasamuneApp extends StatelessWidget {
context,
_buildAppAuth(
context,
_buildAppModel(
_buildAppLogger(
context,
_buildAppScoped(
_buildAppModel(
context,
_buildAppTheme(
_buildAppScoped(
context,
_buildAppLocalize(
_buildAppTheme(
context,
_buildAppRouter(context),
_buildAppLocalize(
context,
_buildAppRouter(context),
),
),
),
),
Expand Down Expand Up @@ -471,6 +480,16 @@ class MasamuneApp extends StatelessWidget {
return child;
}

Widget _buildAppLogger(BuildContext context, Widget child) {
if (loggerAdapters.isNotEmpty) {
return LoggerAdapterScope(
adapters: loggerAdapters,
child: child,
);
}
return child;
}

Widget _buildAppStorage(BuildContext context, Widget child) {
if (storageAdapter != null) {
return StorageAdapterScope(
Expand All @@ -482,10 +501,21 @@ class MasamuneApp extends StatelessWidget {
}

Widget _buildAppRouter(BuildContext context) {
final observers = [
...masamuneAdapters.expand((e) => e.navigatorObservers),
...navigatorObservers,
];
final observers = <NavigatorObserver>[];
for (final observer in navigatorObservers) {
if (observers.contains(observer)) {
continue;
}
observers.add(observer);
}
for (final observer
in masamuneAdapters.expand((e) => e.navigatorObservers)) {
if (observers.contains(observer)) {
continue;
}
observers.add(observer);
}

if (home != null || routerConfig == null) {
return MaterialApp(
locale: localize?.locale,
Expand Down

0 comments on commit 7f174a2

Please sign in to comment.