diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..c0e8390 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,25 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "markettakers-flutter", + "request": "launch", + "type": "dart" + }, + { + "name": "markettakers-flutter (profile mode)", + "request": "launch", + "type": "dart", + "flutterMode": "profile" + }, + { + "name": "markettakers-flutter (release mode)", + "request": "launch", + "type": "dart", + "flutterMode": "release" + } + ] +} \ No newline at end of file diff --git a/example/bootstraper.dart b/example/bootstraper.dart index af4e01d..a921a4f 100644 --- a/example/bootstraper.dart +++ b/example/bootstraper.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; -import 'package:markettakers/markettakers.dart'; +import 'package:mtcore/markettakers.dart'; class SimpleStage extends StageFactory { @override diff --git a/lib/markettakers.dart b/lib/markettakers.dart index c53e37d..17c9d9b 100644 --- a/lib/markettakers.dart +++ b/lib/markettakers.dart @@ -2,13 +2,13 @@ import 'package:flutter/material.dart'; import 'package:rive_native/rive_native.dart'; import 'package:talker_flutter/talker_flutter.dart'; -export 'package:markettakers/src/bootstrapper.dart' +export 'package:mtcore/src/bootstrapper.dart' show Bootstrapper, StageFactory, StageController; -export 'package:markettakers/src/about_screen.dart' show AboutScreen; -export 'package:markettakers/src/loader.dart' +export 'package:mtcore/src/about_screen.dart' show AboutScreen; +export 'package:mtcore/src/loader.dart' show Loader, LoaderFlavour, LoaderController; -export 'package:markettakers/src/credits.dart' show Credits; +export 'package:mtcore/src/credits.dart' show Credits; final talker = Talker(); diff --git a/lib/src/about_screen.dart b/lib/src/about_screen.dart index 6fe601f..57e7d35 100644 --- a/lib/src/about_screen.dart +++ b/lib/src/about_screen.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:markettakers/markettakers.dart'; -import 'package:markettakers/src/credits.dart'; -import 'package:markettakers/src/loader.dart'; +import 'package:mtcore/markettakers.dart'; +import 'package:mtcore/src/credits.dart'; +import 'package:mtcore/src/loader.dart'; import 'package:talker_flutter/talker_flutter.dart'; class AboutScreen extends StatelessWidget { diff --git a/lib/src/bootstrapper.dart b/lib/src/bootstrapper.dart index 398fa73..37a5eaf 100644 --- a/lib/src/bootstrapper.dart +++ b/lib/src/bootstrapper.dart @@ -4,8 +4,8 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; -import 'package:markettakers/markettakers.dart'; -import 'package:markettakers/src/loader.dart'; +import 'package:mtcore/markettakers.dart'; +import 'package:mtcore/src/loader.dart'; import 'package:percent_indicator/circular_percent_indicator.dart'; part 'bootstrapper.freezed.dart'; @@ -75,8 +75,14 @@ class _BootstrapController extends Bloc<_BootstrapEvent, BootstrapState> { _BootstrapController(super.initialState, this.completer) { assert(state.stages.isNotEmpty, "Stages list cannot be empty"); - on((event, emit) { + on((event, emit) async { talker.info("BootstrapController: Starting bootstrap process"); + + if (await state.currentStage.isAlreadyCompleted) { + add(const _BootstrapEvent.stageCompleted()); + return; + } + final controller = launchCurrentStage( state.stages, state.currentStageIndex, @@ -94,21 +100,24 @@ class _BootstrapController extends Bloc<_BootstrapEvent, BootstrapState> { if (newState.areStagesCompleted) { talker.info("BootstrapController: All stages completed"); completer.complete(); + return; + } - // skip already completed stages - } else if (await newState.currentStage.isAlreadyCompleted) { + // skip already completed stages + if (await newState.currentStage.isAlreadyCompleted) { talker.info( "BootstrapController: Stage ${newState.currentStage.title} already completed, skipping", ); - add(const _BootstrapEvent.stageCompleted()); - - // move to next stage - } else { - final nextStage = newState.currentStage; - talker.info("BootstrapController: Starting stage ${nextStage.title}"); - launchCurrentStage(state.stages, nextIndex); emit(newState); + add(const _BootstrapEvent.stageCompleted()); + return; } + + // move to next stage + final nextStage = newState.currentStage; + talker.info("BootstrapController: Starting stage ${nextStage.title}"); + launchCurrentStage(state.stages, nextIndex); + emit(newState); }); } diff --git a/lib/src/loader.dart b/lib/src/loader.dart index 58dfb7b..da9457c 100644 --- a/lib/src/loader.dart +++ b/lib/src/loader.dart @@ -41,7 +41,7 @@ class Loader extends HookWidget { final animFile = useMemoized( () => - FileLoader.fromAsset("packages/markettakers/${flavour.filepath}", riveFactory: Factory.flutter), + FileLoader.fromAsset("packages/mtcore/${flavour.filepath}", riveFactory: Factory.flutter), ); return RiveWidgetBuilder( diff --git a/pubspec.yaml b/pubspec.yaml index c783358..ee94ea7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ -name: markettakers -description: "MarketTakers library" +name: mtcore +description: "MarketTakers shared/core library" version: 1.0.2 publish_to: https://gitea.tailc58da6.ts.net/api/packages/MarketTakers/pub/ repository: https://gitea.tailc58da6.ts.net/MarketTakers/markettakers-flutter